@cuby-ui/core 0.0.594 → 0.0.596
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/components/collapsible-panel/collapsible-panel.component.d.ts +8 -0
- package/components/collapsible-panel/index.d.ts +1 -0
- package/components/index.d.ts +1 -0
- package/components/sidebar/sidebar-header/sidebar-header.component.d.ts +1 -1
- package/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.d.ts +1 -1
- package/editor/editor.component.d.ts +1 -0
- package/editor/services/editor.service.d.ts +5 -5
- package/esm2022/components/collapsible-panel/collapsible-panel.component.mjs +22 -0
- package/esm2022/components/collapsible-panel/index.mjs +2 -0
- package/esm2022/components/index.mjs +2 -1
- package/esm2022/editor/editor.component.mjs +7 -7
- package/esm2022/editor/services/editor.service.mjs +11 -9
- package/fesm2022/cuby-ui-core.mjs +35 -15
- package/fesm2022/cuby-ui-core.mjs.map +1 -1
- package/package.json +4 -4
- package/widgets/ui/categories/components/category-item/category-item.component.d.ts +2 -2
- package/widgets/ui/categories-tree/components/category-tree-item/category-tree-item.component.d.ts +2 -2
- package/widgets/ui/loader/components/stated-loader/stated-loader.component.d.ts +1 -1
- package/widgets/ui/storage-list/components/storage-list-item/storage-list-item.component.d.ts +1 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class CuiCollapsiblePanelComponent {
|
|
3
|
+
protected readonly toggleIcon: import("@angular/core").Signal<"cuiIconLock2" | "cuiIconUnlock" | "cuiIconClipboardListBold" | "cuiIconClipboardCompletedBold" | "cuiIconStarOutlined" | "cuiIconSlashSm" | "cuiIconTextSm" | "cuiIconSlash" | "cuiIconSaveSm" | "cuiIconLoading" | "cuiIconCheck" | "cuiIconCheckSm" | "cuiIconCheckCircle" | "cuiIconCheckCircleSm" | "cuiIconCheckCircleV2" | "cuiIconMoreVertical" | "cuiIconMoreVerticalSm" | "cuiIconTrash" | "cuiIconTrashSm" | "cuiIconEdit" | "cuiIconEditSm" | "cuiIconArrowSortSm" | "cuiIconX" | "cuiIconXSm" | "cuiIconXCircle" | "cuiIconXCircleSm" | "cuiIconVector" | "cuiIconClear" | "cuiIconClearSm" | "cuiIconEye" | "cuiIconEyeSm" | "cuiIconEyeOff" | "cuiIconEyeOffSm" | "cuiIconChevronUp" | "cuiIconChevronUpSm" | "cuiIconChevronRight" | "cuiIconChevronRightSm" | "cuiIconChevronDown" | "cuiIconChevronDownSm" | "cuiIconChevronLeft" | "cuiIconChevronLeftSm" | "cuiIconChevronsRight" | "cuiIconChevronsRightSm" | "cuiIconChevronsLeft" | "cuiIconMinusCircleSm" | "cuiIconChevronsLeftSm" | "cuiIconChevronsSwitch" | "cuiIconDatabase" | "cuiIconDatabaseSm" | "cuiIconHome" | "cuiIconHomeSm" | "cuiIconUser" | "cuiIconUserSm" | "cuiIconUsers" | "cuiIconUsersBg" | "cuiIconUsersSm" | "cuiIconUserPlus" | "cuiIconUserPlusSm" | "cuiIconFormula" | "cuiIconSettings" | "cuiIconSettingsSm" | "cuiIconSettingsBold" | "cuiIconCopy" | "cuiIconCopySm" | "cuiIconSidebar" | "cuiIconSidebarSm" | "cuiIconChart" | "cuiIconFolder" | "cuiIconFolderSm" | "cuiIconFolderOpen" | "cuiIconFolderOpenSm" | "cuiIconPlus" | "cuiIconPlusSm" | "cuiIconPlusCircle" | "cuiIconPlusCircleSm" | "cuiIconFiltersLines" | "cuiIconFiltersLinesSm" | "cuiIconSearch" | "cuiIconSearchSm" | "cuiIconGrid" | "cuiIconGridSm" | "cuiIconList" | "cuiIconListSm" | "cuiIconProgress" | "cuiIconSortAZSm" | "cuiIconFlagBold" | "cuiIconFileText" | "cuiIconFileTextSm" | "cuiIconLink" | "cuiIconExternalLinkSm" | "cuiIconLinkBroken" | "cuiIconLinkBrokenSm" | "cuiIconClock" | "cuiIconClockSm" | "cuiIconInfo" | "cuiIconInfoSm" | "cuiIconInfoCircle" | "cuiIconInfoCircleBg" | "cuiIconDangerTriangleBold" | "cuiIconAlertTriangle" | "cuiIconAlertTriangleSm" | "cuiIconAlertCircle" | "cuiIcon2Layers" | "cuiIcon2LayersSm" | "cuiIcon3Layers" | "cuiIcon3LayersSm" | "cuiIconLearningSm" | "cuiIconBellSm" | "cuiIconMessageCircle" | "cuiIconMessageCircleSm" | "cuiIconSlashDivider" | "cuiIconCaretDownFillXxs" | "cuiIconCaretDownFill" | "cuiIconDragHandleDots" | "cuiIconPlay" | "cuiIconPlaySm" | "cuiIconPlayCircle" | "cuiIconPlayCircleSm" | "cuiIconClipBoardBold" | "cuiIconClipBoard" | "cuiIconClipBoardSm" | "cuiIconUpload" | "cuiIconUploadSm" | "cuiIconMaximize" | "cuiIconMaximizeSm" | "cuiIconArrowUpRight" | "cuiIconArrowUpRightSm" | "cuiIconAddBranchSm" | "cuiIconBranch" | "cuiIconBranchSm" | "cuiIconPaperclip" | "cuiIconPaperclipSm" | "cuiIconToolsSm" | "cuiIconPartsSm" | "cuiIconEquipmentSm" | "cuiIconPrimitive" | "cuiIconPrimitiveSm" | "cuiIconSpool" | "cuiIconSpoolSm" | "cuiIconTank" | "cuiIconTankSm" | "cuiIconAssembly" | "cuiIconAssemblySm" | "cuiIconVariant" | "cuiIconVariantSm" | "cuiIconRichText" | "cuiIconRichTextSm" | "cuiIconChecklist" | "cuiIconChecklistBold" | "cuiIconChecklistBoldSm" | "cuiIconChatBoldSm" | "cuiIconRefreshCcwSm" | "cuiIconRefreshCcw" | "cuiIconBarChartSm" | "cuiIconBarChart" | "cuiIconCurvedArrow" | "cuiIconBulletFillSm" | "cuiIconBulletSm" | "cuiIconArrowRight" | "cuiIconArrowRightSm" | "cuiIconImage" | "cuiIconCutLinearSm" | "cuiIconCutLinear" | "cuiIconForkLift" | "cuiIconForkLiftSm" | "cuiIconPartPrimitive" | "cuiIconPartPrimitiveSm" | "cuiIconChecklistsSm" | "cuiIconViewInAr" | "cuiIconViewInArSm" | "cuiIconFloorplanSolid" | "cuiIconFloorplanSolidSm" | "cuiIconMoon" | "cuiIconMaximize2" | "cuiIconMaximize2Sm" | "cuiIconMoonSm" | "cuiIconSunSm" | "cuiIconTool" | "cuiIconToolSm" | "cuiIconCamera" | "cuiIconPanModeSm" | "cuiIconCrane" | "cuiIconCraneSm" | "cuiIconBin" | "cuiIconBinSm" | "cuiIconAuxSm" | "cuiIcon5sSm" | "cuiIconRackSm" | "cuiIconComputerChipSm" | "cuiIconRack" | "cuiIconAccessories" | "cuiIconAccessoriesSm" | "cuiIconLogisticVehicle" | "cuiIconLogisticVehicleSm" | "cuiIconCollapse" | "cuiIconCollapseSm" | "cuiIconBookOpenSm" | "cuiIconBriefcaseSm" | "cuiIconCreditCardSm" | "cuiIconTrelloSm" | "cuiIconBookOpen" | "cuiIconBriefcase" | "cuiIconCreditCard" | "cuiIconTrello" | "cuiIconLogOut" | "cuiIconOrderSm" | "cuiIconCalendarSm" | "cuiIconMapPin" | "cuiIconBuildingSm" | "cuiIconStopCircleSm" | "cuiIconPauseCircleSm" | "cuiIconPlayCircleFilledSm" | "cuiIconMenuSm" | "cuiIconTeaCupSm" | "cuiIconSubstageInstructionSm" | "cuiIconTaskInstructionSm" | "cuiIconToolsInstructionSm" | "cuiIconApprovalInstructionSm" | "cuiIconQuestionCircleBold" | "cuiIconClockBold" | "cuiIconHammerBold" | "cuiIconAlignLeftSm" | "cuiIconChecklistSm" | "cuiIconMessageSquare" | "cuiIconMessageSquareSm" | "cuiIconHideSidebarL" | "cuiIconHideSidebarR" | "cuiIconHideSidebarLSm" | "cuiIconHideSidebarRSm" | "cuiIconSurfaceArea" | "cuiIconMinimize2" | "cuiIconMinimize2Sm" | "cuiIconHistorySm" | "cuiIconSun" | "cuiIconGlobe" | "cuiIconGlobeSm" | "cuiIconPaletteSm" | "cuiIconLogOutSm" | "cuiIconLogo" | "cuiIconBoldFileDefaultSm" | "cuiIconEyeBold" | "cuiIconEyeBoldSm" | "cuiIconCardsSm" | "cuiIconToolsPlaceholder" | "cuiIconPartsPlaceholder" | "cuiIconMaterialsPlaceholder" | "cuiIconDefaultPlaceholder" | "cuiIconLinear" | "cuiIconReversed" | "cuiIconFeatherPenSolid" | "cuiIconMagicSm" | "cuiIconSafetyBlockSm" | "cuiIconSandglassSm" | "cuiIconGameSm" | "cuiIconGame" | "cuiIconFlowLogic" | "cuiIconTarget" | "cuiIconTargetSm" | "cuiIconBlocking" | "cuiIconCrosshair0" | "cuiIconMic" | "cuiIconSend" | "cuiIconWarehouse" | "cuiIconAuxiliary" | "cuiIconLaserAndMilling" | "cuiIconPipeCutter" | "cuiIconConductor" | "cuiIconWorkbench" | "cuiIconTransitional" | "cuiIconConveyor" | "cuiIconCombinedConveyor" | "cuiIconCombined" | "cuiIconReviewSm" | "cuiIconOnlineReviewSm" | "cuiIconBlockingSm" | "cuiIconFlowOnSm" | "cuiIconFileGBLSm" | "cuiIconUploadImageSm" | "cuiIconTiltSm" | "cuiIcon3dGridSm" | "cuiIconLeafSm" | "cuiIconPen" | "cuiIconYoutubeSm" | "cuiIconBillBoldSm" | "cuiIconPrinterSm" | "cuiIconPrinter">;
|
|
4
|
+
readonly isCollapsed: import("@angular/core").ModelSignal<boolean>;
|
|
5
|
+
protected onToggleCollapsed(): void;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CuiCollapsiblePanelComponent, never>;
|
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CuiCollapsiblePanelComponent, "cui-collapsible-panel", never, { "isCollapsed": { "alias": "isCollapsed"; "required": false; "isSignal": true; }; }, { "isCollapsed": "isCollapsedChange"; }, never, ["[cuiCollapsiblePanelTitle]", "*"], true, never>;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CuiCollapsiblePanelComponent } from './collapsible-panel.component';
|
package/components/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export * from './breadcrumbs';
|
|
|
7
7
|
export * from './button';
|
|
8
8
|
export * from './button-group';
|
|
9
9
|
export * from './checkbox';
|
|
10
|
+
export * from './collapsible-panel';
|
|
10
11
|
export * from './content-header';
|
|
11
12
|
export * from './date-range-calendar';
|
|
12
13
|
export * from './context-menu';
|
|
@@ -4,7 +4,7 @@ export declare class CuiSidebarHeaderComponent {
|
|
|
4
4
|
private readonly document;
|
|
5
5
|
private readonly sidebarService;
|
|
6
6
|
protected readonly isOpened: import("@angular/core").Signal<boolean>;
|
|
7
|
-
protected readonly buttonIcon: import("@angular/core").Signal<"cuiIconLock2" | "cuiIconClipboardListBold" | "cuiIconClipboardCompletedBold" | "cuiIconStarOutlined" | "cuiIconSlashSm" | "cuiIconTextSm" | "cuiIconSlash" | "cuiIconSaveSm" | "cuiIconLoading" | "cuiIconCheck" | "cuiIconCheckSm" | "cuiIconCheckCircle" | "cuiIconCheckCircleSm" | "cuiIconCheckCircleV2" | "cuiIconMoreVertical" | "cuiIconMoreVerticalSm" | "cuiIconTrash" | "cuiIconTrashSm" | "cuiIconEdit" | "cuiIconEditSm" | "cuiIconArrowSortSm" | "cuiIconX" | "cuiIconXSm" | "cuiIconXCircle" | "cuiIconXCircleSm" | "cuiIconVector" | "cuiIconClear" | "cuiIconClearSm" | "cuiIconEye" | "cuiIconEyeSm" | "cuiIconEyeOff" | "cuiIconEyeOffSm" | "cuiIconChevronUp" | "cuiIconChevronUpSm" | "cuiIconChevronRight" | "cuiIconChevronRightSm" | "cuiIconChevronDown" | "cuiIconChevronDownSm" | "cuiIconChevronLeft" | "cuiIconChevronLeftSm" | "cuiIconChevronsRight" | "cuiIconChevronsRightSm" | "cuiIconChevronsLeft" | "cuiIconMinusCircleSm" | "cuiIconChevronsLeftSm" | "cuiIconChevronsSwitch" | "cuiIconDatabase" | "cuiIconDatabaseSm" | "cuiIconHome" | "cuiIconHomeSm" | "cuiIconUser" | "cuiIconUserSm" | "cuiIconUsers" | "cuiIconUsersBg" | "cuiIconUsersSm" | "cuiIconUserPlus" | "cuiIconUserPlusSm" | "cuiIconFormula" | "cuiIconSettings" | "cuiIconSettingsSm" | "cuiIconSettingsBold" | "cuiIconCopy" | "cuiIconCopySm" | "cuiIconSidebar" | "cuiIconSidebarSm" | "cuiIconChart" | "cuiIconFolder" | "cuiIconFolderSm" | "cuiIconFolderOpen" | "cuiIconFolderOpenSm" | "cuiIconPlus" | "cuiIconPlusSm" | "cuiIconPlusCircle" | "cuiIconPlusCircleSm" | "cuiIconFiltersLines" | "cuiIconFiltersLinesSm" | "cuiIconSearch" | "cuiIconSearchSm" | "cuiIconGrid" | "cuiIconGridSm" | "cuiIconList" | "cuiIconListSm" | "cuiIconProgress" | "cuiIconSortAZSm" | "cuiIconFlagBold" | "cuiIconFileText" | "cuiIconFileTextSm" | "cuiIconLink" | "cuiIconExternalLinkSm" | "cuiIconLinkBroken" | "cuiIconLinkBrokenSm" | "cuiIconClock" | "cuiIconClockSm" | "cuiIconInfo" | "cuiIconInfoSm" | "cuiIconInfoCircle" | "cuiIconInfoCircleBg" | "cuiIconDangerTriangleBold" | "cuiIconAlertTriangle" | "cuiIconAlertTriangleSm" | "cuiIconAlertCircle" | "cuiIcon2Layers" | "cuiIcon2LayersSm" | "cuiIcon3Layers" | "cuiIcon3LayersSm" | "cuiIconLearningSm" | "cuiIconBellSm" | "cuiIconMessageCircle" | "cuiIconMessageCircleSm" | "cuiIconSlashDivider" | "cuiIconCaretDownFillXxs" | "cuiIconCaretDownFill" | "cuiIconDragHandleDots" | "cuiIconPlay" | "cuiIconPlaySm" | "cuiIconPlayCircle" | "cuiIconPlayCircleSm" | "cuiIconClipBoardBold" | "cuiIconClipBoard" | "cuiIconClipBoardSm" | "cuiIconUpload" | "cuiIconUploadSm" | "cuiIconMaximize" | "cuiIconMaximizeSm" | "cuiIconArrowUpRight" | "cuiIconArrowUpRightSm" | "cuiIconAddBranchSm" | "cuiIconBranch" | "cuiIconBranchSm" | "cuiIconPaperclip" | "cuiIconPaperclipSm" | "cuiIconToolsSm" | "cuiIconPartsSm" | "cuiIconEquipmentSm" | "cuiIconPrimitive" | "cuiIconPrimitiveSm" | "cuiIconSpool" | "cuiIconSpoolSm" | "cuiIconTank" | "cuiIconTankSm" | "cuiIconAssembly" | "cuiIconAssemblySm" | "cuiIconVariant" | "cuiIconVariantSm" | "cuiIconRichText" | "cuiIconRichTextSm" | "cuiIconChecklist" | "cuiIconChecklistBold" | "cuiIconChecklistBoldSm" | "cuiIconChatBoldSm" | "cuiIconRefreshCcwSm" | "cuiIconRefreshCcw" | "cuiIconBarChartSm" | "cuiIconBarChart" | "cuiIconCurvedArrow" | "cuiIconBulletFillSm" | "cuiIconBulletSm" | "cuiIconArrowRight" | "cuiIconArrowRightSm" | "cuiIconImage" | "cuiIconCutLinearSm" | "cuiIconCutLinear" | "cuiIconForkLift" | "cuiIconForkLiftSm" | "cuiIconPartPrimitive" | "cuiIconPartPrimitiveSm" | "cuiIconChecklistsSm" | "cuiIconViewInAr" | "cuiIconViewInArSm" | "cuiIconFloorplanSolid" | "cuiIconFloorplanSolidSm" | "cuiIconMoon" | "cuiIconMaximize2" | "cuiIconMaximize2Sm" | "cuiIconMoonSm" | "cuiIconSunSm" | "cuiIconTool" | "cuiIconToolSm" | "cuiIconCamera" | "cuiIconPanModeSm" | "cuiIconCrane" | "cuiIconCraneSm" | "cuiIconBin" | "cuiIconBinSm" | "cuiIconAuxSm" | "cuiIcon5sSm" | "cuiIconRackSm" | "cuiIconComputerChipSm" | "cuiIconRack" | "cuiIconAccessories" | "cuiIconAccessoriesSm" | "cuiIconLogisticVehicle" | "cuiIconLogisticVehicleSm" | "cuiIconCollapse" | "cuiIconCollapseSm" | "cuiIconBookOpenSm" | "cuiIconBriefcaseSm" | "cuiIconCreditCardSm" | "cuiIconTrelloSm" | "cuiIconBookOpen" | "cuiIconBriefcase" | "cuiIconCreditCard" | "cuiIconTrello" | "cuiIconLogOut" | "cuiIconOrderSm" | "cuiIconCalendarSm" | "cuiIconMapPin" | "cuiIconBuildingSm" | "cuiIconStopCircleSm" | "cuiIconPauseCircleSm" | "cuiIconPlayCircleFilledSm" | "cuiIconMenuSm" | "cuiIconTeaCupSm" | "cuiIconSubstageInstructionSm" | "cuiIconTaskInstructionSm" | "cuiIconToolsInstructionSm" | "cuiIconApprovalInstructionSm" | "cuiIconQuestionCircleBold" | "cuiIconClockBold" | "cuiIconHammerBold" | "cuiIconAlignLeftSm" | "cuiIconChecklistSm" | "cuiIconMessageSquare" | "cuiIconMessageSquareSm" | "cuiIconHideSidebarL" | "cuiIconHideSidebarR" | "cuiIconHideSidebarLSm" | "cuiIconHideSidebarRSm" | "cuiIconSurfaceArea" | "cuiIconMinimize2" | "cuiIconMinimize2Sm" | "cuiIconHistorySm" | "cuiIconSun" | "cuiIconGlobe" | "cuiIconGlobeSm" | "cuiIconPaletteSm" | "cuiIconLogOutSm" | "cuiIconLogo" | "cuiIconBoldFileDefaultSm" | "cuiIconEyeBold" | "cuiIconEyeBoldSm" | "cuiIconCardsSm" | "cuiIconToolsPlaceholder" | "cuiIconPartsPlaceholder" | "cuiIconMaterialsPlaceholder" | "cuiIconDefaultPlaceholder" | "cuiIconLinear" | "cuiIconReversed" | "cuiIconFeatherPenSolid" | "cuiIconMagicSm" | "cuiIconSafetyBlockSm" | "cuiIconSandglassSm" | "cuiIconGameSm" | "cuiIconGame" | "cuiIconFlowLogic" | "cuiIconTarget" | "cuiIconTargetSm" | "cuiIconBlocking" | "cuiIconCrosshair0" | "cuiIconMic" | "cuiIconSend" | "cuiIconWarehouse" | "cuiIconAuxiliary" | "cuiIconLaserAndMilling" | "cuiIconPipeCutter" | "cuiIconConductor" | "cuiIconWorkbench" | "cuiIconTransitional" | "cuiIconConveyor" | "cuiIconCombinedConveyor" | "cuiIconCombined" | "cuiIconReviewSm" | "cuiIconOnlineReviewSm" | "cuiIconBlockingSm" | "cuiIconFlowOnSm" | "cuiIconFileGBLSm" | "cuiIconUploadImageSm">;
|
|
7
|
+
protected readonly buttonIcon: import("@angular/core").Signal<"cuiIconLock2" | "cuiIconUnlock" | "cuiIconClipboardListBold" | "cuiIconClipboardCompletedBold" | "cuiIconStarOutlined" | "cuiIconSlashSm" | "cuiIconTextSm" | "cuiIconSlash" | "cuiIconSaveSm" | "cuiIconLoading" | "cuiIconCheck" | "cuiIconCheckSm" | "cuiIconCheckCircle" | "cuiIconCheckCircleSm" | "cuiIconCheckCircleV2" | "cuiIconMoreVertical" | "cuiIconMoreVerticalSm" | "cuiIconTrash" | "cuiIconTrashSm" | "cuiIconEdit" | "cuiIconEditSm" | "cuiIconArrowSortSm" | "cuiIconX" | "cuiIconXSm" | "cuiIconXCircle" | "cuiIconXCircleSm" | "cuiIconVector" | "cuiIconClear" | "cuiIconClearSm" | "cuiIconEye" | "cuiIconEyeSm" | "cuiIconEyeOff" | "cuiIconEyeOffSm" | "cuiIconChevronUp" | "cuiIconChevronUpSm" | "cuiIconChevronRight" | "cuiIconChevronRightSm" | "cuiIconChevronDown" | "cuiIconChevronDownSm" | "cuiIconChevronLeft" | "cuiIconChevronLeftSm" | "cuiIconChevronsRight" | "cuiIconChevronsRightSm" | "cuiIconChevronsLeft" | "cuiIconMinusCircleSm" | "cuiIconChevronsLeftSm" | "cuiIconChevronsSwitch" | "cuiIconDatabase" | "cuiIconDatabaseSm" | "cuiIconHome" | "cuiIconHomeSm" | "cuiIconUser" | "cuiIconUserSm" | "cuiIconUsers" | "cuiIconUsersBg" | "cuiIconUsersSm" | "cuiIconUserPlus" | "cuiIconUserPlusSm" | "cuiIconFormula" | "cuiIconSettings" | "cuiIconSettingsSm" | "cuiIconSettingsBold" | "cuiIconCopy" | "cuiIconCopySm" | "cuiIconSidebar" | "cuiIconSidebarSm" | "cuiIconChart" | "cuiIconFolder" | "cuiIconFolderSm" | "cuiIconFolderOpen" | "cuiIconFolderOpenSm" | "cuiIconPlus" | "cuiIconPlusSm" | "cuiIconPlusCircle" | "cuiIconPlusCircleSm" | "cuiIconFiltersLines" | "cuiIconFiltersLinesSm" | "cuiIconSearch" | "cuiIconSearchSm" | "cuiIconGrid" | "cuiIconGridSm" | "cuiIconList" | "cuiIconListSm" | "cuiIconProgress" | "cuiIconSortAZSm" | "cuiIconFlagBold" | "cuiIconFileText" | "cuiIconFileTextSm" | "cuiIconLink" | "cuiIconExternalLinkSm" | "cuiIconLinkBroken" | "cuiIconLinkBrokenSm" | "cuiIconClock" | "cuiIconClockSm" | "cuiIconInfo" | "cuiIconInfoSm" | "cuiIconInfoCircle" | "cuiIconInfoCircleBg" | "cuiIconDangerTriangleBold" | "cuiIconAlertTriangle" | "cuiIconAlertTriangleSm" | "cuiIconAlertCircle" | "cuiIcon2Layers" | "cuiIcon2LayersSm" | "cuiIcon3Layers" | "cuiIcon3LayersSm" | "cuiIconLearningSm" | "cuiIconBellSm" | "cuiIconMessageCircle" | "cuiIconMessageCircleSm" | "cuiIconSlashDivider" | "cuiIconCaretDownFillXxs" | "cuiIconCaretDownFill" | "cuiIconDragHandleDots" | "cuiIconPlay" | "cuiIconPlaySm" | "cuiIconPlayCircle" | "cuiIconPlayCircleSm" | "cuiIconClipBoardBold" | "cuiIconClipBoard" | "cuiIconClipBoardSm" | "cuiIconUpload" | "cuiIconUploadSm" | "cuiIconMaximize" | "cuiIconMaximizeSm" | "cuiIconArrowUpRight" | "cuiIconArrowUpRightSm" | "cuiIconAddBranchSm" | "cuiIconBranch" | "cuiIconBranchSm" | "cuiIconPaperclip" | "cuiIconPaperclipSm" | "cuiIconToolsSm" | "cuiIconPartsSm" | "cuiIconEquipmentSm" | "cuiIconPrimitive" | "cuiIconPrimitiveSm" | "cuiIconSpool" | "cuiIconSpoolSm" | "cuiIconTank" | "cuiIconTankSm" | "cuiIconAssembly" | "cuiIconAssemblySm" | "cuiIconVariant" | "cuiIconVariantSm" | "cuiIconRichText" | "cuiIconRichTextSm" | "cuiIconChecklist" | "cuiIconChecklistBold" | "cuiIconChecklistBoldSm" | "cuiIconChatBoldSm" | "cuiIconRefreshCcwSm" | "cuiIconRefreshCcw" | "cuiIconBarChartSm" | "cuiIconBarChart" | "cuiIconCurvedArrow" | "cuiIconBulletFillSm" | "cuiIconBulletSm" | "cuiIconArrowRight" | "cuiIconArrowRightSm" | "cuiIconImage" | "cuiIconCutLinearSm" | "cuiIconCutLinear" | "cuiIconForkLift" | "cuiIconForkLiftSm" | "cuiIconPartPrimitive" | "cuiIconPartPrimitiveSm" | "cuiIconChecklistsSm" | "cuiIconViewInAr" | "cuiIconViewInArSm" | "cuiIconFloorplanSolid" | "cuiIconFloorplanSolidSm" | "cuiIconMoon" | "cuiIconMaximize2" | "cuiIconMaximize2Sm" | "cuiIconMoonSm" | "cuiIconSunSm" | "cuiIconTool" | "cuiIconToolSm" | "cuiIconCamera" | "cuiIconPanModeSm" | "cuiIconCrane" | "cuiIconCraneSm" | "cuiIconBin" | "cuiIconBinSm" | "cuiIconAuxSm" | "cuiIcon5sSm" | "cuiIconRackSm" | "cuiIconComputerChipSm" | "cuiIconRack" | "cuiIconAccessories" | "cuiIconAccessoriesSm" | "cuiIconLogisticVehicle" | "cuiIconLogisticVehicleSm" | "cuiIconCollapse" | "cuiIconCollapseSm" | "cuiIconBookOpenSm" | "cuiIconBriefcaseSm" | "cuiIconCreditCardSm" | "cuiIconTrelloSm" | "cuiIconBookOpen" | "cuiIconBriefcase" | "cuiIconCreditCard" | "cuiIconTrello" | "cuiIconLogOut" | "cuiIconOrderSm" | "cuiIconCalendarSm" | "cuiIconMapPin" | "cuiIconBuildingSm" | "cuiIconStopCircleSm" | "cuiIconPauseCircleSm" | "cuiIconPlayCircleFilledSm" | "cuiIconMenuSm" | "cuiIconTeaCupSm" | "cuiIconSubstageInstructionSm" | "cuiIconTaskInstructionSm" | "cuiIconToolsInstructionSm" | "cuiIconApprovalInstructionSm" | "cuiIconQuestionCircleBold" | "cuiIconClockBold" | "cuiIconHammerBold" | "cuiIconAlignLeftSm" | "cuiIconChecklistSm" | "cuiIconMessageSquare" | "cuiIconMessageSquareSm" | "cuiIconHideSidebarL" | "cuiIconHideSidebarR" | "cuiIconHideSidebarLSm" | "cuiIconHideSidebarRSm" | "cuiIconSurfaceArea" | "cuiIconMinimize2" | "cuiIconMinimize2Sm" | "cuiIconHistorySm" | "cuiIconSun" | "cuiIconGlobe" | "cuiIconGlobeSm" | "cuiIconPaletteSm" | "cuiIconLogOutSm" | "cuiIconLogo" | "cuiIconBoldFileDefaultSm" | "cuiIconEyeBold" | "cuiIconEyeBoldSm" | "cuiIconCardsSm" | "cuiIconToolsPlaceholder" | "cuiIconPartsPlaceholder" | "cuiIconMaterialsPlaceholder" | "cuiIconDefaultPlaceholder" | "cuiIconLinear" | "cuiIconReversed" | "cuiIconFeatherPenSolid" | "cuiIconMagicSm" | "cuiIconSafetyBlockSm" | "cuiIconSandglassSm" | "cuiIconGameSm" | "cuiIconGame" | "cuiIconFlowLogic" | "cuiIconTarget" | "cuiIconTargetSm" | "cuiIconBlocking" | "cuiIconCrosshair0" | "cuiIconMic" | "cuiIconSend" | "cuiIconWarehouse" | "cuiIconAuxiliary" | "cuiIconLaserAndMilling" | "cuiIconPipeCutter" | "cuiIconConductor" | "cuiIconWorkbench" | "cuiIconTransitional" | "cuiIconConveyor" | "cuiIconCombinedConveyor" | "cuiIconCombined" | "cuiIconReviewSm" | "cuiIconOnlineReviewSm" | "cuiIconBlockingSm" | "cuiIconFlowOnSm" | "cuiIconFileGBLSm" | "cuiIconUploadImageSm" | "cuiIconTiltSm" | "cuiIcon3dGridSm" | "cuiIconLeafSm" | "cuiIconPen" | "cuiIconYoutubeSm" | "cuiIconBillBoldSm" | "cuiIconPrinterSm" | "cuiIconPrinter">;
|
|
8
8
|
readonly headerSlot: import("@angular/core").InputSignal<TemplateRef<unknown>>;
|
|
9
9
|
protected onSwitch(event: MouseEvent): void;
|
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<CuiSidebarHeaderComponent, never>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
2
|
export declare class CuiSidebarNavigationItemComponent {
|
|
3
3
|
readonly text: import("@angular/core").InputSignal<string>;
|
|
4
|
-
readonly icon: import("@angular/core").InputSignal<"cuiIconLock2" | "cuiIconClipboardListBold" | "cuiIconClipboardCompletedBold" | "cuiIconStarOutlined" | "cuiIconSlashSm" | "cuiIconTextSm" | "cuiIconSlash" | "cuiIconSaveSm" | "cuiIconLoading" | "cuiIconCheck" | "cuiIconCheckSm" | "cuiIconCheckCircle" | "cuiIconCheckCircleSm" | "cuiIconCheckCircleV2" | "cuiIconMoreVertical" | "cuiIconMoreVerticalSm" | "cuiIconTrash" | "cuiIconTrashSm" | "cuiIconEdit" | "cuiIconEditSm" | "cuiIconArrowSortSm" | "cuiIconX" | "cuiIconXSm" | "cuiIconXCircle" | "cuiIconXCircleSm" | "cuiIconVector" | "cuiIconClear" | "cuiIconClearSm" | "cuiIconEye" | "cuiIconEyeSm" | "cuiIconEyeOff" | "cuiIconEyeOffSm" | "cuiIconChevronUp" | "cuiIconChevronUpSm" | "cuiIconChevronRight" | "cuiIconChevronRightSm" | "cuiIconChevronDown" | "cuiIconChevronDownSm" | "cuiIconChevronLeft" | "cuiIconChevronLeftSm" | "cuiIconChevronsRight" | "cuiIconChevronsRightSm" | "cuiIconChevronsLeft" | "cuiIconMinusCircleSm" | "cuiIconChevronsLeftSm" | "cuiIconChevronsSwitch" | "cuiIconDatabase" | "cuiIconDatabaseSm" | "cuiIconHome" | "cuiIconHomeSm" | "cuiIconUser" | "cuiIconUserSm" | "cuiIconUsers" | "cuiIconUsersBg" | "cuiIconUsersSm" | "cuiIconUserPlus" | "cuiIconUserPlusSm" | "cuiIconFormula" | "cuiIconSettings" | "cuiIconSettingsSm" | "cuiIconSettingsBold" | "cuiIconCopy" | "cuiIconCopySm" | "cuiIconSidebar" | "cuiIconSidebarSm" | "cuiIconChart" | "cuiIconFolder" | "cuiIconFolderSm" | "cuiIconFolderOpen" | "cuiIconFolderOpenSm" | "cuiIconPlus" | "cuiIconPlusSm" | "cuiIconPlusCircle" | "cuiIconPlusCircleSm" | "cuiIconFiltersLines" | "cuiIconFiltersLinesSm" | "cuiIconSearch" | "cuiIconSearchSm" | "cuiIconGrid" | "cuiIconGridSm" | "cuiIconList" | "cuiIconListSm" | "cuiIconProgress" | "cuiIconSortAZSm" | "cuiIconFlagBold" | "cuiIconFileText" | "cuiIconFileTextSm" | "cuiIconLink" | "cuiIconExternalLinkSm" | "cuiIconLinkBroken" | "cuiIconLinkBrokenSm" | "cuiIconClock" | "cuiIconClockSm" | "cuiIconInfo" | "cuiIconInfoSm" | "cuiIconInfoCircle" | "cuiIconInfoCircleBg" | "cuiIconDangerTriangleBold" | "cuiIconAlertTriangle" | "cuiIconAlertTriangleSm" | "cuiIconAlertCircle" | "cuiIcon2Layers" | "cuiIcon2LayersSm" | "cuiIcon3Layers" | "cuiIcon3LayersSm" | "cuiIconLearningSm" | "cuiIconBellSm" | "cuiIconMessageCircle" | "cuiIconMessageCircleSm" | "cuiIconSlashDivider" | "cuiIconCaretDownFillXxs" | "cuiIconCaretDownFill" | "cuiIconDragHandleDots" | "cuiIconPlay" | "cuiIconPlaySm" | "cuiIconPlayCircle" | "cuiIconPlayCircleSm" | "cuiIconClipBoardBold" | "cuiIconClipBoard" | "cuiIconClipBoardSm" | "cuiIconUpload" | "cuiIconUploadSm" | "cuiIconMaximize" | "cuiIconMaximizeSm" | "cuiIconArrowUpRight" | "cuiIconArrowUpRightSm" | "cuiIconAddBranchSm" | "cuiIconBranch" | "cuiIconBranchSm" | "cuiIconPaperclip" | "cuiIconPaperclipSm" | "cuiIconToolsSm" | "cuiIconPartsSm" | "cuiIconEquipmentSm" | "cuiIconPrimitive" | "cuiIconPrimitiveSm" | "cuiIconSpool" | "cuiIconSpoolSm" | "cuiIconTank" | "cuiIconTankSm" | "cuiIconAssembly" | "cuiIconAssemblySm" | "cuiIconVariant" | "cuiIconVariantSm" | "cuiIconRichText" | "cuiIconRichTextSm" | "cuiIconChecklist" | "cuiIconChecklistBold" | "cuiIconChecklistBoldSm" | "cuiIconChatBoldSm" | "cuiIconRefreshCcwSm" | "cuiIconRefreshCcw" | "cuiIconBarChartSm" | "cuiIconBarChart" | "cuiIconCurvedArrow" | "cuiIconBulletFillSm" | "cuiIconBulletSm" | "cuiIconArrowRight" | "cuiIconArrowRightSm" | "cuiIconImage" | "cuiIconCutLinearSm" | "cuiIconCutLinear" | "cuiIconForkLift" | "cuiIconForkLiftSm" | "cuiIconPartPrimitive" | "cuiIconPartPrimitiveSm" | "cuiIconChecklistsSm" | "cuiIconViewInAr" | "cuiIconViewInArSm" | "cuiIconFloorplanSolid" | "cuiIconFloorplanSolidSm" | "cuiIconMoon" | "cuiIconMaximize2" | "cuiIconMaximize2Sm" | "cuiIconMoonSm" | "cuiIconSunSm" | "cuiIconTool" | "cuiIconToolSm" | "cuiIconCamera" | "cuiIconPanModeSm" | "cuiIconCrane" | "cuiIconCraneSm" | "cuiIconBin" | "cuiIconBinSm" | "cuiIconAuxSm" | "cuiIcon5sSm" | "cuiIconRackSm" | "cuiIconComputerChipSm" | "cuiIconRack" | "cuiIconAccessories" | "cuiIconAccessoriesSm" | "cuiIconLogisticVehicle" | "cuiIconLogisticVehicleSm" | "cuiIconCollapse" | "cuiIconCollapseSm" | "cuiIconBookOpenSm" | "cuiIconBriefcaseSm" | "cuiIconCreditCardSm" | "cuiIconTrelloSm" | "cuiIconBookOpen" | "cuiIconBriefcase" | "cuiIconCreditCard" | "cuiIconTrello" | "cuiIconLogOut" | "cuiIconOrderSm" | "cuiIconCalendarSm" | "cuiIconMapPin" | "cuiIconBuildingSm" | "cuiIconStopCircleSm" | "cuiIconPauseCircleSm" | "cuiIconPlayCircleFilledSm" | "cuiIconMenuSm" | "cuiIconTeaCupSm" | "cuiIconSubstageInstructionSm" | "cuiIconTaskInstructionSm" | "cuiIconToolsInstructionSm" | "cuiIconApprovalInstructionSm" | "cuiIconQuestionCircleBold" | "cuiIconClockBold" | "cuiIconHammerBold" | "cuiIconAlignLeftSm" | "cuiIconChecklistSm" | "cuiIconMessageSquare" | "cuiIconMessageSquareSm" | "cuiIconHideSidebarL" | "cuiIconHideSidebarR" | "cuiIconHideSidebarLSm" | "cuiIconHideSidebarRSm" | "cuiIconSurfaceArea" | "cuiIconMinimize2" | "cuiIconMinimize2Sm" | "cuiIconHistorySm" | "cuiIconSun" | "cuiIconGlobe" | "cuiIconGlobeSm" | "cuiIconPaletteSm" | "cuiIconLogOutSm" | "cuiIconLogo" | "cuiIconBoldFileDefaultSm" | "cuiIconEyeBold" | "cuiIconEyeBoldSm" | "cuiIconCardsSm" | "cuiIconToolsPlaceholder" | "cuiIconPartsPlaceholder" | "cuiIconMaterialsPlaceholder" | "cuiIconDefaultPlaceholder" | "cuiIconLinear" | "cuiIconReversed" | "cuiIconFeatherPenSolid" | "cuiIconMagicSm" | "cuiIconSafetyBlockSm" | "cuiIconSandglassSm" | "cuiIconGameSm" | "cuiIconGame" | "cuiIconFlowLogic" | "cuiIconTarget" | "cuiIconTargetSm" | "cuiIconBlocking" | "cuiIconCrosshair0" | "cuiIconMic" | "cuiIconSend" | "cuiIconWarehouse" | "cuiIconAuxiliary" | "cuiIconLaserAndMilling" | "cuiIconPipeCutter" | "cuiIconConductor" | "cuiIconWorkbench" | "cuiIconTransitional" | "cuiIconConveyor" | "cuiIconCombinedConveyor" | "cuiIconCombined" | "cuiIconReviewSm" | "cuiIconOnlineReviewSm" | "cuiIconBlockingSm" | "cuiIconFlowOnSm" | "cuiIconFileGBLSm" | "cuiIconUploadImageSm" | undefined>;
|
|
4
|
+
readonly icon: import("@angular/core").InputSignal<"cuiIconLock2" | "cuiIconUnlock" | "cuiIconClipboardListBold" | "cuiIconClipboardCompletedBold" | "cuiIconStarOutlined" | "cuiIconSlashSm" | "cuiIconTextSm" | "cuiIconSlash" | "cuiIconSaveSm" | "cuiIconLoading" | "cuiIconCheck" | "cuiIconCheckSm" | "cuiIconCheckCircle" | "cuiIconCheckCircleSm" | "cuiIconCheckCircleV2" | "cuiIconMoreVertical" | "cuiIconMoreVerticalSm" | "cuiIconTrash" | "cuiIconTrashSm" | "cuiIconEdit" | "cuiIconEditSm" | "cuiIconArrowSortSm" | "cuiIconX" | "cuiIconXSm" | "cuiIconXCircle" | "cuiIconXCircleSm" | "cuiIconVector" | "cuiIconClear" | "cuiIconClearSm" | "cuiIconEye" | "cuiIconEyeSm" | "cuiIconEyeOff" | "cuiIconEyeOffSm" | "cuiIconChevronUp" | "cuiIconChevronUpSm" | "cuiIconChevronRight" | "cuiIconChevronRightSm" | "cuiIconChevronDown" | "cuiIconChevronDownSm" | "cuiIconChevronLeft" | "cuiIconChevronLeftSm" | "cuiIconChevronsRight" | "cuiIconChevronsRightSm" | "cuiIconChevronsLeft" | "cuiIconMinusCircleSm" | "cuiIconChevronsLeftSm" | "cuiIconChevronsSwitch" | "cuiIconDatabase" | "cuiIconDatabaseSm" | "cuiIconHome" | "cuiIconHomeSm" | "cuiIconUser" | "cuiIconUserSm" | "cuiIconUsers" | "cuiIconUsersBg" | "cuiIconUsersSm" | "cuiIconUserPlus" | "cuiIconUserPlusSm" | "cuiIconFormula" | "cuiIconSettings" | "cuiIconSettingsSm" | "cuiIconSettingsBold" | "cuiIconCopy" | "cuiIconCopySm" | "cuiIconSidebar" | "cuiIconSidebarSm" | "cuiIconChart" | "cuiIconFolder" | "cuiIconFolderSm" | "cuiIconFolderOpen" | "cuiIconFolderOpenSm" | "cuiIconPlus" | "cuiIconPlusSm" | "cuiIconPlusCircle" | "cuiIconPlusCircleSm" | "cuiIconFiltersLines" | "cuiIconFiltersLinesSm" | "cuiIconSearch" | "cuiIconSearchSm" | "cuiIconGrid" | "cuiIconGridSm" | "cuiIconList" | "cuiIconListSm" | "cuiIconProgress" | "cuiIconSortAZSm" | "cuiIconFlagBold" | "cuiIconFileText" | "cuiIconFileTextSm" | "cuiIconLink" | "cuiIconExternalLinkSm" | "cuiIconLinkBroken" | "cuiIconLinkBrokenSm" | "cuiIconClock" | "cuiIconClockSm" | "cuiIconInfo" | "cuiIconInfoSm" | "cuiIconInfoCircle" | "cuiIconInfoCircleBg" | "cuiIconDangerTriangleBold" | "cuiIconAlertTriangle" | "cuiIconAlertTriangleSm" | "cuiIconAlertCircle" | "cuiIcon2Layers" | "cuiIcon2LayersSm" | "cuiIcon3Layers" | "cuiIcon3LayersSm" | "cuiIconLearningSm" | "cuiIconBellSm" | "cuiIconMessageCircle" | "cuiIconMessageCircleSm" | "cuiIconSlashDivider" | "cuiIconCaretDownFillXxs" | "cuiIconCaretDownFill" | "cuiIconDragHandleDots" | "cuiIconPlay" | "cuiIconPlaySm" | "cuiIconPlayCircle" | "cuiIconPlayCircleSm" | "cuiIconClipBoardBold" | "cuiIconClipBoard" | "cuiIconClipBoardSm" | "cuiIconUpload" | "cuiIconUploadSm" | "cuiIconMaximize" | "cuiIconMaximizeSm" | "cuiIconArrowUpRight" | "cuiIconArrowUpRightSm" | "cuiIconAddBranchSm" | "cuiIconBranch" | "cuiIconBranchSm" | "cuiIconPaperclip" | "cuiIconPaperclipSm" | "cuiIconToolsSm" | "cuiIconPartsSm" | "cuiIconEquipmentSm" | "cuiIconPrimitive" | "cuiIconPrimitiveSm" | "cuiIconSpool" | "cuiIconSpoolSm" | "cuiIconTank" | "cuiIconTankSm" | "cuiIconAssembly" | "cuiIconAssemblySm" | "cuiIconVariant" | "cuiIconVariantSm" | "cuiIconRichText" | "cuiIconRichTextSm" | "cuiIconChecklist" | "cuiIconChecklistBold" | "cuiIconChecklistBoldSm" | "cuiIconChatBoldSm" | "cuiIconRefreshCcwSm" | "cuiIconRefreshCcw" | "cuiIconBarChartSm" | "cuiIconBarChart" | "cuiIconCurvedArrow" | "cuiIconBulletFillSm" | "cuiIconBulletSm" | "cuiIconArrowRight" | "cuiIconArrowRightSm" | "cuiIconImage" | "cuiIconCutLinearSm" | "cuiIconCutLinear" | "cuiIconForkLift" | "cuiIconForkLiftSm" | "cuiIconPartPrimitive" | "cuiIconPartPrimitiveSm" | "cuiIconChecklistsSm" | "cuiIconViewInAr" | "cuiIconViewInArSm" | "cuiIconFloorplanSolid" | "cuiIconFloorplanSolidSm" | "cuiIconMoon" | "cuiIconMaximize2" | "cuiIconMaximize2Sm" | "cuiIconMoonSm" | "cuiIconSunSm" | "cuiIconTool" | "cuiIconToolSm" | "cuiIconCamera" | "cuiIconPanModeSm" | "cuiIconCrane" | "cuiIconCraneSm" | "cuiIconBin" | "cuiIconBinSm" | "cuiIconAuxSm" | "cuiIcon5sSm" | "cuiIconRackSm" | "cuiIconComputerChipSm" | "cuiIconRack" | "cuiIconAccessories" | "cuiIconAccessoriesSm" | "cuiIconLogisticVehicle" | "cuiIconLogisticVehicleSm" | "cuiIconCollapse" | "cuiIconCollapseSm" | "cuiIconBookOpenSm" | "cuiIconBriefcaseSm" | "cuiIconCreditCardSm" | "cuiIconTrelloSm" | "cuiIconBookOpen" | "cuiIconBriefcase" | "cuiIconCreditCard" | "cuiIconTrello" | "cuiIconLogOut" | "cuiIconOrderSm" | "cuiIconCalendarSm" | "cuiIconMapPin" | "cuiIconBuildingSm" | "cuiIconStopCircleSm" | "cuiIconPauseCircleSm" | "cuiIconPlayCircleFilledSm" | "cuiIconMenuSm" | "cuiIconTeaCupSm" | "cuiIconSubstageInstructionSm" | "cuiIconTaskInstructionSm" | "cuiIconToolsInstructionSm" | "cuiIconApprovalInstructionSm" | "cuiIconQuestionCircleBold" | "cuiIconClockBold" | "cuiIconHammerBold" | "cuiIconAlignLeftSm" | "cuiIconChecklistSm" | "cuiIconMessageSquare" | "cuiIconMessageSquareSm" | "cuiIconHideSidebarL" | "cuiIconHideSidebarR" | "cuiIconHideSidebarLSm" | "cuiIconHideSidebarRSm" | "cuiIconSurfaceArea" | "cuiIconMinimize2" | "cuiIconMinimize2Sm" | "cuiIconHistorySm" | "cuiIconSun" | "cuiIconGlobe" | "cuiIconGlobeSm" | "cuiIconPaletteSm" | "cuiIconLogOutSm" | "cuiIconLogo" | "cuiIconBoldFileDefaultSm" | "cuiIconEyeBold" | "cuiIconEyeBoldSm" | "cuiIconCardsSm" | "cuiIconToolsPlaceholder" | "cuiIconPartsPlaceholder" | "cuiIconMaterialsPlaceholder" | "cuiIconDefaultPlaceholder" | "cuiIconLinear" | "cuiIconReversed" | "cuiIconFeatherPenSolid" | "cuiIconMagicSm" | "cuiIconSafetyBlockSm" | "cuiIconSandglassSm" | "cuiIconGameSm" | "cuiIconGame" | "cuiIconFlowLogic" | "cuiIconTarget" | "cuiIconTargetSm" | "cuiIconBlocking" | "cuiIconCrosshair0" | "cuiIconMic" | "cuiIconSend" | "cuiIconWarehouse" | "cuiIconAuxiliary" | "cuiIconLaserAndMilling" | "cuiIconPipeCutter" | "cuiIconConductor" | "cuiIconWorkbench" | "cuiIconTransitional" | "cuiIconConveyor" | "cuiIconCombinedConveyor" | "cuiIconCombined" | "cuiIconReviewSm" | "cuiIconOnlineReviewSm" | "cuiIconBlockingSm" | "cuiIconFlowOnSm" | "cuiIconFileGBLSm" | "cuiIconUploadImageSm" | "cuiIconTiltSm" | "cuiIcon3dGridSm" | "cuiIconLeafSm" | "cuiIconPen" | "cuiIconYoutubeSm" | "cuiIconBillBoldSm" | "cuiIconPrinterSm" | "cuiIconPrinter" | undefined>;
|
|
5
5
|
readonly active: import("@angular/core").InputSignal<boolean | undefined>;
|
|
6
6
|
readonly isOpen: import("@angular/core").InputSignal<boolean | undefined>;
|
|
7
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<CuiSidebarNavigationItemComponent, never>;
|
|
@@ -31,6 +31,7 @@ export declare class CuiEditorComponent implements OnDestroy {
|
|
|
31
31
|
private abortController;
|
|
32
32
|
protected readonly editorId: string;
|
|
33
33
|
private readonly isReadonly;
|
|
34
|
+
private readonly requestOptions;
|
|
34
35
|
protected readonly editorRef: import("@angular/core").Signal<ElementRef<HTMLElement>>;
|
|
35
36
|
readonly editorApiId: import("@angular/core").InputSignal<string>;
|
|
36
37
|
readonly config: import("@angular/core").InputSignal<CuiEditorConfig>;
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import type EditorJS from '@editorjs/editorjs';
|
|
2
2
|
import type { BlockMutationEvent, OutputData } from '@editorjs/editorjs';
|
|
3
3
|
import type { Observable } from 'rxjs';
|
|
4
|
-
import { CuiBlock } from '@cuby-ui/api';
|
|
4
|
+
import { CuiApiContext, CuiBlock } from '@cuby-ui/api';
|
|
5
5
|
import type { CuiCombinedBlockAddingEvent, CuiCombinedBlockToolData, CuiEventActionData, CuiFullBlockData } from '../interfaces';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare class CuiEditorService {
|
|
8
8
|
private readonly destroyRef;
|
|
9
9
|
private readonly jtextService;
|
|
10
10
|
sortEventsByTypes(events: BlockMutationEvent[]): CuiEventActionData;
|
|
11
|
-
collectAddedBlocksRequest(editorId: string, addedBlocks: CuiFullBlockData[]): Observable<string[]>;
|
|
12
|
-
collectUpdatedBlocksRequest(updatedBlocks: CuiBlock[], blockIdsMap: Map<string, string
|
|
13
|
-
collectRemovedBlocksRequest(editorId: string, removedBlocksIds: string[], blockIdsMap: Map<string, string
|
|
11
|
+
collectAddedBlocksRequest(editorId: string, addedBlocks: CuiFullBlockData[], requestOptions?: CuiApiContext): Observable<string[]>;
|
|
12
|
+
collectUpdatedBlocksRequest(updatedBlocks: CuiBlock[], blockIdsMap: Map<string, string>, requestOptions?: CuiApiContext): Observable<CuiBlock[]>;
|
|
13
|
+
collectRemovedBlocksRequest(editorId: string, removedBlocksIds: string[], blockIdsMap: Map<string, string>, requestOptions?: CuiApiContext): Observable<void>;
|
|
14
14
|
getFullBlockData(event: BlockMutationEvent, editorData: OutputData): CuiFullBlockData;
|
|
15
15
|
setListenersOnCustomBlockChanges(editor: EditorJS, data: {
|
|
16
16
|
removedCallback: (blockIds: string[]) => void;
|
|
17
17
|
updatedCallback: (updatedBlocks: CuiBlock[]) => void;
|
|
18
18
|
addedCallback: (data: CuiCombinedBlockAddingEvent) => void;
|
|
19
19
|
}): void;
|
|
20
|
-
setStartBlock(editorId: string, callback: (block: CuiBlock<CuiCombinedBlockToolData>, id: string) => void): void;
|
|
20
|
+
setStartBlock(editorId: string, requestOptions: CuiApiContext | undefined, callback: (block: CuiBlock<CuiCombinedBlockToolData>, id: string) => void): void;
|
|
21
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<CuiEditorService, never>;
|
|
22
22
|
static ɵprov: i0.ɵɵInjectableDeclaration<CuiEditorService>;
|
|
23
23
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, model } from '@angular/core';
|
|
2
|
+
import { CuiButtonModule } from '../button';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../button/button.component";
|
|
5
|
+
export class CuiCollapsiblePanelComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.toggleIcon = computed(() => this.isCollapsed() ? 'cuiIconChevronsRightSm' : 'cuiIconChevronsLeftSm');
|
|
8
|
+
this.isCollapsed = model(false);
|
|
9
|
+
}
|
|
10
|
+
onToggleCollapsed() {
|
|
11
|
+
this.isCollapsed.update((isCollapsed) => !isCollapsed);
|
|
12
|
+
}
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCollapsiblePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CuiCollapsiblePanelComponent, isStandalone: true, selector: "cui-collapsible-panel", inputs: { isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isCollapsed: "isCollapsedChange" }, host: { properties: { "class._collapsed": "isCollapsed()" } }, ngImport: i0, template: "<div class=\"head\">\n <div [hidden]=\"isCollapsed()\">\n <ng-content select=\"[cuiCollapsiblePanelTitle]\" />\n </div>\n\n <button\n type=\"button\"\n cuiButton\n appearance=\"ghost\"\n size=\"xs\"\n [icon]=\"toggleIcon()\"\n (click)=\"onToggleCollapsed()\"\n ></button>\n</div>\n\n<div\n [hidden]=\"isCollapsed()\"\n class=\"body\"\n>\n <ng-content />\n</div>\n", styles: [":host{--gap: 8px;--width: 100%;--min-width: 300px;--max-width: 100%;--collapsed-width: 44px;--transition-duration: .25s;display:flex;flex-direction:column;gap:var(--gap);padding:16px 8px;min-width:var(--min-width);max-width:var(--max-width);width:var(--width);transition:width var(--transition-duration) ease,min-width var(--transition-duration) ease,max-width var(--transition-duration) ease}:host._collapsed{min-width:var(--collapsed-width);max-width:var(--collapsed-width);width:var(--collapsed-width)}.head{display:flex;flex-direction:row;gap:var(--gap);align-items:center;justify-content:space-between}:host(._collapsed) .head{align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: i1.CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCollapsiblePanelComponent, decorators: [{
|
|
17
|
+
type: Component,
|
|
18
|
+
args: [{ selector: 'cui-collapsible-panel', standalone: true, imports: [CuiButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
19
|
+
'[class._collapsed]': 'isCollapsed()'
|
|
20
|
+
}, template: "<div class=\"head\">\n <div [hidden]=\"isCollapsed()\">\n <ng-content select=\"[cuiCollapsiblePanelTitle]\" />\n </div>\n\n <button\n type=\"button\"\n cuiButton\n appearance=\"ghost\"\n size=\"xs\"\n [icon]=\"toggleIcon()\"\n (click)=\"onToggleCollapsed()\"\n ></button>\n</div>\n\n<div\n [hidden]=\"isCollapsed()\"\n class=\"body\"\n>\n <ng-content />\n</div>\n", styles: [":host{--gap: 8px;--width: 100%;--min-width: 300px;--max-width: 100%;--collapsed-width: 44px;--transition-duration: .25s;display:flex;flex-direction:column;gap:var(--gap);padding:16px 8px;min-width:var(--min-width);max-width:var(--max-width);width:var(--width);transition:width var(--transition-duration) ease,min-width var(--transition-duration) ease,max-width var(--transition-duration) ease}:host._collapsed{min-width:var(--collapsed-width);max-width:var(--collapsed-width);width:var(--collapsed-width)}.head{display:flex;flex-direction:row;gap:var(--gap);align-items:center;justify-content:space-between}:host(._collapsed) .head{align-items:center;justify-content:center}\n"] }]
|
|
21
|
+
}] });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUtcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL2NvbGxhcHNpYmxlLXBhbmVsL2NvbGxhcHNpYmxlLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9jb2xsYXBzaWJsZS1wYW5lbC9jb2xsYXBzaWJsZS1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBYTVDLE1BQU0sT0FBTyw0QkFBNEI7SUFYekM7UUFZdUIsZUFBVSxHQUFHLFFBQVEsQ0FBVSxHQUFHLEVBQUUsQ0FDbkQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQzFFLENBQUM7UUFFYyxnQkFBVyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUs5QztJQUhhLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzRCxDQUFDOytHQVRRLDRCQUE0QjttR0FBNUIsNEJBQTRCLHFWQ2hCekMsbWJBcUJBLDZ0QkRiYyxlQUFlOzs0RkFRaEIsNEJBQTRCO2tCQVh4QyxTQUFTOytCQUNJLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsQ0FBQyxlQUFlLENBQUMsbUJBR1QsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixvQkFBb0IsRUFBRSxlQUFlO3FCQUN4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBtb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBDdWlJY29uIH0gZnJvbSAnQGN1YnktdWkvaWNvbnMnO1xuXG5pbXBvcnQgeyBDdWlCdXR0b25Nb2R1bGUgfSBmcm9tICcuLi9idXR0b24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2N1aS1jb2xsYXBzaWJsZS1wYW5lbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ3VpQnV0dG9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJ2NvbGxhcHNpYmxlLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJ2NvbGxhcHNpYmxlLXBhbmVsLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MuX2NvbGxhcHNlZF0nOiAnaXNDb2xsYXBzZWQoKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEN1aUNvbGxhcHNpYmxlUGFuZWxDb21wb25lbnQge1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0b2dnbGVJY29uID0gY29tcHV0ZWQ8Q3VpSWNvbj4oKCkgPT5cbiAgICAgICAgdGhpcy5pc0NvbGxhcHNlZCgpID8gJ2N1aUljb25DaGV2cm9uc1JpZ2h0U20nIDogJ2N1aUljb25DaGV2cm9uc0xlZnRTbSdcbiAgICApO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGlzQ29sbGFwc2VkID0gbW9kZWwoZmFsc2UpO1xuXG4gICAgcHJvdGVjdGVkIG9uVG9nZ2xlQ29sbGFwc2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzQ29sbGFwc2VkLnVwZGF0ZSgoaXNDb2xsYXBzZWQpID0+ICFpc0NvbGxhcHNlZCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImhlYWRcIj5cbiAgICA8ZGl2IFtoaWRkZW5dPVwiaXNDb2xsYXBzZWQoKVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY3VpQ29sbGFwc2libGVQYW5lbFRpdGxlXVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgYXBwZWFyYW5jZT1cImdob3N0XCJcbiAgICAgICAgc2l6ZT1cInhzXCJcbiAgICAgICAgW2ljb25dPVwidG9nZ2xlSWNvbigpXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlQ29sbGFwc2VkKClcIlxuICAgID48L2J1dHRvbj5cbjwvZGl2PlxuXG48ZGl2XG4gICAgW2hpZGRlbl09XCJpc0NvbGxhcHNlZCgpXCJcbiAgICBjbGFzcz1cImJvZHlcIlxuPlxuICAgIDxuZy1jb250ZW50IC8+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { CuiCollapsiblePanelComponent } from './collapsible-panel.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvY29sbGFwc2libGUtcGFuZWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBDdWlDb2xsYXBzaWJsZVBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi9jb2xsYXBzaWJsZS1wYW5lbC5jb21wb25lbnQnO1xuIl19
|
|
@@ -7,6 +7,7 @@ export * from './breadcrumbs';
|
|
|
7
7
|
export * from './button';
|
|
8
8
|
export * from './button-group';
|
|
9
9
|
export * from './checkbox';
|
|
10
|
+
export * from './collapsible-panel';
|
|
10
11
|
export * from './content-header';
|
|
11
12
|
export * from './date-range-calendar';
|
|
12
13
|
export * from './context-menu';
|
|
@@ -42,4 +43,4 @@ export * from './toggle';
|
|
|
42
43
|
export * from './render-dynamic-components';
|
|
43
44
|
export * from './file-icon';
|
|
44
45
|
export * from './filter-bar';
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWNjb3JkaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vYWxlcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hbGVydC1oaW50JztcbmV4cG9ydCAqIGZyb20gJy4vYmFkZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9iYW5uZXInO1xuZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1icyc7XG5leHBvcnQgKiBmcm9tICcuL2J1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL2J1dHRvbi1ncm91cCc7XG5leHBvcnQgKiBmcm9tICcuL2NoZWNrYm94JztcbmV4cG9ydCAqIGZyb20gJy4vY29sbGFwc2libGUtcGFuZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZW50LWhlYWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2RhdGUtcmFuZ2UtY2FsZW5kYXInO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LW1lbnUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaWFsb2cnO1xuZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bic7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9oaW50JztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi1idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1udW1iZXInO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZW50LXdyYXBwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9naG9zdC1pbnB1dCc7XG5leHBvcnQgKiBmcm9tICcuL2lucHV0LXBhc3N3b3JkJztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtdGV4dCc7XG5leHBvcnQgKiBmcm9tICcuL2lucHV0LXRpbWUnO1xuZXhwb3J0ICogZnJvbSAnLi9sYWJlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xldHRlci1ib3gnO1xuZXhwb3J0ICogZnJvbSAnLi4vd2lkZ2V0cy91aS9tb2RhbC1oZWFkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9vcHRpb25zLWJ1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL3JhZGlvJztcbmV4cG9ydCAqIGZyb20gJy4vcm9vdCc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2VtcHR5LXN0YXRlJztcbmV4cG9ydCAqIGZyb20gJy4vc2lkZWJhcic7XG5leHBvcnQgKiBmcm9tICcuL2NhcmQtd3JhcHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xheW91dCc7XG5leHBvcnQgKiBmcm9tICcuL3N2Zyc7XG5leHBvcnQgKiBmcm9tICcuL3RhYic7XG5leHBvcnQgKiBmcm9tICcuL3RhYnMnO1xuZXhwb3J0ICogZnJvbSAnLi90cmVlJztcbmV4cG9ydCAqIGZyb20gJy4vdGV4dGFyZWEnO1xuZXhwb3J0ICogZnJvbSAnLi90b2dnbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9yZW5kZXItZHluYW1pYy1jb21wb25lbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS1pY29uJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyLWJhcic7XG4iXX0=
|
|
@@ -39,6 +39,7 @@ export class CuiEditorComponent {
|
|
|
39
39
|
this.abortController = new AbortController();
|
|
40
40
|
this.editorId = this.cuiIdService.generate();
|
|
41
41
|
this.isReadonly = computed(() => this.config()?.readOnly);
|
|
42
|
+
this.requestOptions = computed(() => this.config()?.requestOptions);
|
|
42
43
|
this.editorRef = viewChild.required('editor');
|
|
43
44
|
this.editorApiId = input.required();
|
|
44
45
|
this.config = input(DEFAULT_CONFIG);
|
|
@@ -172,7 +173,6 @@ export class CuiEditorComponent {
|
|
|
172
173
|
if (this.isDestroyed) {
|
|
173
174
|
return;
|
|
174
175
|
}
|
|
175
|
-
this.jTextService.addOptions(this.config()?.requestOptions);
|
|
176
176
|
this.editor = this.buildEditor(this.editorId);
|
|
177
177
|
await this.editor.isReady;
|
|
178
178
|
if (this.isDestroyed) {
|
|
@@ -240,7 +240,7 @@ export class CuiEditorComponent {
|
|
|
240
240
|
return { ...block, index };
|
|
241
241
|
});
|
|
242
242
|
const addedBlocks = [...defaultBlocksWithIndex, ...combinedBlocksWithIndex].sort((first, second) => first.index - second.index);
|
|
243
|
-
const addBlocks$ = this.editorService.collectAddedBlocksRequest(this.editorApiId(), addedBlocks);
|
|
243
|
+
const addBlocks$ = this.editorService.collectAddedBlocksRequest(this.editorApiId(), addedBlocks, this.requestOptions());
|
|
244
244
|
return {
|
|
245
245
|
addedBlocks,
|
|
246
246
|
addBlocks$
|
|
@@ -252,7 +252,7 @@ export class CuiEditorComponent {
|
|
|
252
252
|
block.id = id;
|
|
253
253
|
this.updatedBlocks.push(block);
|
|
254
254
|
});
|
|
255
|
-
const updateBlocks$ = this.editorService.collectUpdatedBlocksRequest(this.updatedBlocks, this.blockIdsMap);
|
|
255
|
+
const updateBlocks$ = this.editorService.collectUpdatedBlocksRequest(this.updatedBlocks, this.blockIdsMap, this.requestOptions());
|
|
256
256
|
this.updatedBlocks = [];
|
|
257
257
|
return updateBlocks$;
|
|
258
258
|
}
|
|
@@ -261,13 +261,13 @@ export class CuiEditorComponent {
|
|
|
261
261
|
const id = block.detail.target.id;
|
|
262
262
|
this.removedBlocksIds.push(id);
|
|
263
263
|
});
|
|
264
|
-
const removeBlocks$ = this.editorService.collectRemovedBlocksRequest(this.editorApiId(), this.removedBlocksIds, this.blockIdsMap);
|
|
264
|
+
const removeBlocks$ = this.editorService.collectRemovedBlocksRequest(this.editorApiId(), this.removedBlocksIds, this.blockIdsMap, this.requestOptions());
|
|
265
265
|
this.removedBlocksIds = [];
|
|
266
266
|
return removeBlocks$;
|
|
267
267
|
}
|
|
268
268
|
getBlocks(page = 0, size = 40) {
|
|
269
269
|
let combinedBlock;
|
|
270
|
-
return this.jTextService.getBlocks(this.editorApiId(), page, size).pipe(takeUntilDestroyed(this.destroy), finalize(() => {
|
|
270
|
+
return this.jTextService.getBlocks(this.editorApiId(), page, size, this.requestOptions()).pipe(takeUntilDestroyed(this.destroy), finalize(() => {
|
|
271
271
|
if (combinedBlock) {
|
|
272
272
|
this.addCombinedBlock(combinedBlock);
|
|
273
273
|
combinedBlock = null;
|
|
@@ -368,7 +368,7 @@ export class CuiEditorComponent {
|
|
|
368
368
|
this.editor.render({ blocks: [] });
|
|
369
369
|
return;
|
|
370
370
|
}
|
|
371
|
-
this.editorService.setStartBlock(this.editorApiId(), async (block, id) => {
|
|
371
|
+
this.editorService.setStartBlock(this.editorApiId(), this.requestOptions(), async (block, id) => {
|
|
372
372
|
this.blockIdsMap.set(id, id);
|
|
373
373
|
this.isSkipCombinedBlockOnChange.push(true);
|
|
374
374
|
await this.editor.render({ blocks: [block] });
|
|
@@ -428,4 +428,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
428
428
|
}
|
|
429
429
|
], template: "<div\n #editor\n [id]=\"editorId\"\n data-editor\n [class._readonly]=\"config().readOnly\"\n></div>\n", styles: [":host{--textColor: var(--cui-base-900);--menuBackground: var(--cui-base-0);--menuBorder: var(--cui-base-200);--menuItemHover: var(--cui-base-10);--menuItemBackground: var(cui-base-900);--menuIconBackground: var(--cui-base-50);--menuIconHover: var(--cui-base-10);font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font)}:host ::ng-deep .ce-popover{--color-background: var(--menuBackground);--color-text-primary: var(--textColor);--color-border: var(--menuBorder);--color-border-icon: var(--menuBorder);--color-background-item: var(--menuItemBackground);--color-background-item-hover: var(--menuItemHover)}:host ::ng-deep .ce-popover__search{background:var(--menuIconBackground)}:host ::ng-deep .ce-popover .ce-popover-item__icon{background:var(--menuIconBackground)}:host ::ng-deep .ce-conversion-toolbar{background-color:var(--menuBackground);border-color:var(--menuBorder)}:host ::ng-deep .ce-conversion-toolbar__tools{padding:0 6px 6px}:host ::ng-deep .ce-conversion-tool{padding:3px;border-radius:6px}:host ::ng-deep .ce-conversion-tool__icon{border:1px solid var(--menuBorder);background-color:var(--menuIconBackground);box-shadow:none}:host ::ng-deep .ce-conversion-tool:hover{background-color:var(--menuItemHover)}:host ::ng-deep .ce-conversion-tool:hover .ce-conversion-tool__icon{border-color:var(--menuIconHover)}:host ::ng-deep .combined-text-block{padding:.4em 0;line-height:1.6em;outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part{outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child,:host ::ng-deep .combined-text-block .combined-text-block-part._selected{display:list-item}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child::marker,:host ::ng-deep .combined-text-block .combined-text-block-part._selected::marker{content:\"\"}:host ::ng-deep .image-tool__image{border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}:host ::ng-deep .image-tool__image-preloader{background-color:var(--cui-base-200)}:host ::ng-deep .image-tool__image-preloader:after{border:1px solid var(--cui-base-200);border-top:1px solid var(--cui-blue-600)}:host ::ng-deep .cdx-button{border-radius:8px;border:1px solid var(--cui-base-200);color:var(--textColor);background-color:var(--cui-base-10);box-shadow:none}:host ::ng-deep .ce-inline-toolbar{border-color:var(--cui-base-100);color:var(--textColor);background-color:var(--cui-base-0)}:host ::ng-deep .ce-inline-toolbar__dropdown:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-inline-tool:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{color:var(--cui-base-500)}:host ::ng-deep .ce-toolbar__plus:hover,:host ::ng-deep .ce-toolbar__settings-btn:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__actions{right:100%}:host ::ng-deep .ce-toolbar__content{max-width:none}@media (max-width: 650px){:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{border-color:var(--menuBorder);background-color:var(--menuBackground)}:host ::ng-deep .ce-toolbar__actions{inset:0 auto auto 0}}:host ::ng-deep .ce-block--selected .ce-block__content{background-color:var(--cui-base-200)}:host ::ng-deep .ce-block__content{max-width:100%}:host ::ng-deep .ce-block:only-of-type .combined-text-block[data-placeholder-active][data-empty=true]:before{content:attr(data-placeholder-active);position:absolute;color:var(--cui-base-400)}:host ::ng-deep [data-editor]{padding-right:4px;width:100%;height:100%;min-height:200px;overflow:hidden auto;scrollbar-gutter:stable}:host ::ng-deep [data-editor] .codex-editor{margin-left:60px}:host ::ng-deep [data-editor] .codex-editor--narrow .ce-popover{right:auto}:host ::ng-deep [data-editor] .codex-editor__redactor{margin-right:auto;padding-bottom:260px!important}@media (max-width: 650px){:host ::ng-deep [data-editor] .codex-editor{margin-left:0}}:host ::ng-deep [data-editor]._readonly{min-height:auto}:host ::ng-deep [data-editor]._readonly .codex-editor{margin:auto}:host ::ng-deep [data-editor]._readonly .codex-editor__redactor{padding-bottom:0!important}:host ::ng-deep [data-editor]._readonly .combined-text-block{padding:0}:host ::ng-deep [data-editor] [data-item-name=move-up],:host ::ng-deep [data-editor] [data-item-name=move-down],:host ::ng-deep [data-editor] [data-tool=paragraph]{display:none}:host ::ng-deep [data-editor] *::selection{background:var(--cui-base-200)}:host ::ng-deep [data-editor] a{color:var(--cui-light-blue-600)}:host ::ng-deep .marker{cursor:pointer;text-decoration:underline;color:var(--cui-light-blue-600);background-color:transparent}:host ::ng-deep .tool-marker,:host ::ng-deep .role-marker{margin:0 5px}:host ::ng-deep .tool-marker{color:#e97c00}:host ::ng-deep .role-marker{color:#8803f1}.form{height:100%}\n"] }]
|
|
430
430
|
}], ctorParameters: () => [] });
|
|
431
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFNUMsT0FBTyxRQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFFMUMsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxHQUFHLEVBQ0gsT0FBTyxFQUNQLFNBQVMsRUFDVCxHQUFHLEVBQ0gsWUFBWSxFQUNaLEtBQUssRUFDTCxPQUFPLEVBQ1YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUscUJBQXFCLEVBQVksa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBVzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxZQUFZLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBaUJqRSxNQUFNLE9BQU8s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QUFxQjs0QkFDOUIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUNiLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxrQkFBa0IsRUFBRTt5QkFDcEc7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVsZW1lbnRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgRGVzdHJveVJlZixcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG91dHB1dCxcbiAgICB2aWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgdHlwZSB7IEN1aU51bGxhYmxlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcbmltcG9ydCB7IEN1aUlkU2VydmljZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5pbXBvcnQgdHlwZSB7IEFQSSwgQmxvY2tNdXRhdGlvbkV2ZW50LCBPdXRwdXREYXRhIH0gZnJvbSAnQGVkaXRvcmpzL2VkaXRvcmpzJztcbmltcG9ydCBFZGl0b3JKUyBmcm9tICdAZWRpdG9yanMvZWRpdG9yanMnO1xuaW1wb3J0IHR5cGUgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgY29uY2F0TWFwLFxuICAgIGRlbGF5LFxuICAgIGZpbmFsaXplLFxuICAgIGZyb21FdmVudCxcbiAgICBtYXAsXG4gICAgU3ViamVjdCxcbiAgICB0YWtlV2hpbGUsXG4gICAgdGFwLFxuICAgIHRocm90dGxlVGltZSxcbiAgICB0aW1lcixcbiAgICB0b0FycmF5XG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ1VJX0pURVhUX0FQSV9TRVJWSUNFLCBDdWlCbG9jaywgQ3VpSlRleHRBcGlTZXJ2aWNlIH0gZnJvbSAnQGN1YnktdWkvYXBpJztcblxuaW1wb3J0IHsgZ2V0RWRpdG9yQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgQ09NQklORURfVEVYVF9CTE9DS19OQU1FLCBDT01CSU5FRF9URVhUX0JMT0NLX1BBUlQsIERFRkFVTFRfQ09ORklHIH0gZnJvbSAnLi9jb25zdGFudHMvZWRpdG9yLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBzZXRFZGl0b3JFdmVudHMgfSBmcm9tICcuL2V2ZW50cy9zZXQtZWRpdG9yLWV2ZW50cyc7XG5pbXBvcnQgdHlwZSB7XG4gICAgQ3VpQmxvY2tEYXRhLFxuICAgIEN1aUJsb2Nrc1JlcXVlc3REYXRhLFxuICAgIEN1aUNvbWJpbmVkQmxvY2tBZGRpbmdFdmVudCxcbiAgICBDdWlDb21iaW5lZEJsb2NrVG9vbERhdGEsXG4gICAgQ3VpQ29tYmluZWRQYXJ0QmxvY2ssXG4gICAgQ3VpRWRpdG9yQ29uZmlnLFxuICAgIEN1aUV2ZW50QWN0aW9uRGF0YSxcbiAgICBDdWlGdWxsQmxvY2tEYXRhXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDdWlFZGl0b3JTZXJ2aWNlLCBFdmVudEFjdGlvbnMgfSBmcm9tICcuL3NlcnZpY2VzJztcbmltcG9ydCB7IHJlY2FsY3VsYXRlSW5kZXhlcyB9IGZyb20gJy4vdXRpbHMvcmVjYWxjdWxhdGUtaW5kZXhlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY3VpLWVkaXRvcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgQ3VpRWRpdG9yU2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQ1VJX0pURVhUX0FQSV9TRVJWSUNFLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT5cbiAgICAgICAgICAgICAgICBpbmplY3QoQ1VJX0pURVhUX0FQSV9TRVJWSUNFLCB7IG9wdGlvbmFsOiB0cnVlLCBza2lwU2VsZjogdHJ1ZSB9KSA/PyBuZXcgQ3VpSlRleHRBcGlTZXJ2aWNlKClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQ3VpRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjdWlJZFNlcnZpY2UgPSBpbmplY3QoQ3VpSWRTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVkaXRvclNlcnZpY2UgPSBpbmplY3QoQ3VpRWRpdG9yU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBqVGV4dFNlcnZpY2UgPSBpbmplY3QoQ1VJX0pURVhUX0FQSV9TRVJWSUNFKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgUE9PTElOR19ERUxBWSA9IDEwMDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IEVMRU1FTlRfU1BBQ0VfVE9fQk9UVE9NID0gMTUwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgU0NST0xMX1RIUk9UVExFX1RJTUUgPSAyMDA7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGVtcHR5UXVldWUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHJpdmF0ZSBpbml0Q2hhaW46IFByb21pc2U8dm9pZD4gPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICBwcml2YXRlIHBvb2xpbmdTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBzY3JvbGxTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBpc1NraXBDb21iaW5lZEJsb2NrT25DaGFuZ2U6IGJvb2xlYW5bXSA9IFtdO1xuICAgIHByaXZhdGUgaXNGaXJzdCA9IHRydWU7XG4gICAgcHJpdmF0ZSBpc0NoYW5naW5nID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpc1NraXAgPSBmYWxzZTtcbiAgICBwcml2YXRlIGlzUmVxdWVzdGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICAgIC8vINCd0YPQttC10L0g0LTQu9GPINGB0L7QvtGC0L3QvtGI0LXQvdC40Y8g0LvQvtC60LDQu9GM0L3QvtCz0L4gSUQg0Lgg0L7RgdC90L7QstC90L7Qs9C+IElEINC/0L7RgdC70LUg0YHQvtC30LTQsNC90LjRjyDRjdC70LXQvNC10L3RgtCwXG4gICAgcHJpdmF0ZSBibG9ja0lkc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBjb21iaW5lZEJsb2NrcyA9IG5ldyBNYXAoKTtcbiAgICBwcml2YXRlIGluZGV4ID0gMDtcbiAgICBwcml2YXRlIHBhZ2UgPSAwO1xuICAgIHByaXZhdGUgYWRkZWRCbG9ja3M6IEN1aUJsb2NrRGF0YVtdID0gW107XG4gICAgcHJpdmF0ZSB1cGRhdGVkQmxvY2tzOiBDdWlCbG9ja1tdID0gW107XG4gICAgcHJpdmF0ZSByZW1vdmVkQmxvY2tzSWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHByaXZhdGUgY2hhbmdlc1F1ZXVlOiBCbG9ja011dGF0aW9uRXZlbnRbXVtdID0gW107XG4gICAgcHJpdmF0ZSBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWRpdG9ySWQgPSB0aGlzLmN1aUlkU2VydmljZS5nZW5lcmF0ZSgpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc1JlYWRvbmx5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKT8ucmVhZE9ubHkpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVkaXRvclJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ2VkaXRvcicpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGVkaXRvckFwaUlkID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyByZWFkb25seSBjb25maWcgPSBpbnB1dDxDdWlFZGl0b3JDb25maWc+KERFRkFVTFRfQ09ORklHKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVxdWVzdFNpemUgPSBpbnB1dDxudW1iZXI+KDQwKTtcblxuICAgIHB1YmxpYyByZWFkb25seSBlZGl0b3JFbXB0eSA9IG91dHB1dDxib29sZWFuPigpO1xuXG4gICAgcHVibGljIGVkaXRvciE6IEVkaXRvckpTO1xuICAgIHB1YmxpYyBlZGl0b3JFbGVtZW50ITogSFRNTEVsZW1lbnQ7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pbml0RWRpdG9yRWZmZWN0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRGVzdHJveWVkID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmVucXVldWVJbml0KCgpID0+IHRoaXMudGVhcmRvd25FZGl0b3IoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblNjcm9sbEV2ZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG92ZXJhbGxIZWlnaHQgPSBlbGVtZW50LnNjcm9sbEhlaWdodCAtIHRoaXMuRUxFTUVOVF9TUEFDRV9UT19CT1RUT007XG4gICAgICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSBlbGVtZW50LnNjcm9sbFRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuXG4gICAgICAgIGlmIChjdXJyZW50SGVpZ2h0IDwgb3ZlcmFsbEhlaWdodCB8fCB0aGlzLmlzUmVxdWVzdGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzUmVxdWVzdGVkID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5yZXF1ZXN0U2l6ZSgpO1xuICAgICAgICBsZXQgYmxvY2tzQ291bnQgPSAwO1xuXG4gICAgICAgIHRoaXMuZ2V0QmxvY2tzKHRoaXMucGFnZSwgc2l6ZSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoYmxvY2tzKSA9PiAoYmxvY2tzQ291bnQgPSBibG9ja3MubGVuZ3RoKSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUmVxdWVzdGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2Nrc0NvdW50ID49IHNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLnBhZ2UrKztcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRWRpdG9yQ2hhbmdlKF86IEFQSSwgZXZlbnQ6IEJsb2NrTXV0YXRpb25FdmVudCB8IEJsb2NrTXV0YXRpb25FdmVudFtdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVhZG9ubHkoKSB8fCB0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgICAgICAgICBldmVudCA9IFtldmVudF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0NoYW5naW5nKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZXNRdWV1ZS51bnNoaWZ0KGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhcnRDaGFuZ2VzKGV2ZW50KTtcbiAgICAgICAgdGhpcy5lZGl0b3JFbXB0eS5lbWl0KHRoaXMuY2hlY2tJc0VtcHR5KCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25BZGRlZENvbWJpbmVkQmxvY2soZGF0YTogQ3VpQ29tYmluZWRCbG9ja0FkZGluZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzU2tpcENvbWJpbmVkQmxvY2tPbkNoYW5nZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTa2lwQ29tYmluZWRCbG9ja09uQ2hhbmdlLnBvcCgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBibG9ja3NXaXRob3V0SWQgPSBkYXRhLmJsb2Nrcy5tYXAoKGJsb2NrKSA9PiAoe1xuICAgICAgICAgICAgYmxvY2s6IHsgLi4uYmxvY2ssIGlkOiB1bmRlZmluZWQgfSxcbiAgICAgICAgICAgIGlkOiBibG9jay5pZCFcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHRoaXMuYWRkZWRCbG9ja3MucHVzaCguLi5ibG9ja3NXaXRob3V0SWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25VcGRhdGVkQ29tYmluZWRCbG9jayh1cGRhdGVkQmxvY2tzOiBDdWlCbG9ja1tdKTogdm9pZCB7XG4gICAgICAgIGlmICghdXBkYXRlZEJsb2Nrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlZEJsb2Nrcy5wdXNoKC4uLnVwZGF0ZWRCbG9ja3MpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25SZW1vdmVkQ29tYmluZWRCbG9jayhibG9ja0lkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFibG9ja0lkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVjYWxjdWxhdGVBbGxCbG9ja3NBZnRlclJlbW92YWwoYmxvY2tJZHMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVjYWxjdWxhdGVBbGxCbG9ja3NBZnRlclJlbW92YWwoYmxvY2tJZHM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlbWFpbmluZ1JlbW92ZWRCbG9ja0lkcyA9IG5ldyBTZXQoYmxvY2tJZHMpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlZEJsb2NrcyA9IHRoaXMudXBkYXRlZEJsb2Nrcy5maWx0ZXIoXG4gICAgICAgICAgICAodXBkYXRlZEJsb2NrKSA9PiAhcmVtYWluaW5nUmVtb3ZlZEJsb2NrSWRzLmhhcyh1cGRhdGVkQmxvY2suaWQgPz8gJycpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuYWRkZWRCbG9ja3MgPSB0aGlzLmFkZGVkQmxvY2tzLmZpbHRlcigoYWRkZWRCbG9jaykgPT4ge1xuICAgICAgICAgICAgaWYgKCFyZW1haW5pbmdSZW1vdmVkQmxvY2tJZHMuaGFzKGFkZGVkQmxvY2suaWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlbWFpbmluZ1JlbW92ZWRCbG9ja0lkcy5kZWxldGUoYWRkZWRCbG9jay5pZCk7XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZW1vdmVkQmxvY2tzSWRzLnB1c2goLi4ucmVtYWluaW5nUmVtb3ZlZEJsb2NrSWRzLnZhbHVlcygpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRFZGl0b3JFZmZlY3QoKTogdm9pZCB7XG4gICAgICAgIGVmZmVjdChcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lZGl0b3JBcGlJZCgpIHx8IHRoaXMuY29uZmlnKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0RWRpdG9yQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRFZGl0b3JDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVucXVldWVJbml0KCgpID0+IHRoaXMucnVuRWRpdG9ySW5pdCgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTY3JvbGxPYnNlcnZlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuY29uZmlnKCk/LmVsZW1lbnQgPz8gdGhpcy5lZGl0b3JFbGVtZW50O1xuICAgICAgICBjb25zdCBzY3JvbGxPYnNlcnZlciA9IGZyb21FdmVudChlbGVtZW50LCAnc2Nyb2xsJyk7XG5cbiAgICAgICAgdGhpcy5zY3JvbGxTdWJzY3JpcHRpb24gPSBzY3JvbGxPYnNlcnZlclxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveSksXG4gICAgICAgICAgICAgICAgdGhyb3R0bGVUaW1lKHRoaXMuU0NST0xMX1RIUk9UVExFX1RJTUUsIHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgICAgICAgICBsZWFkaW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB0cmFpbGluZzogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLm9uU2Nyb2xsRXZlbnQoZWxlbWVudCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RWRpdG9yRXZlbnRzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlYWRPbmx5ID0gdGhpcy5pc1JlYWRvbmx5KCk7XG5cbiAgICAgICAgaWYgKHJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXRFZGl0b3JFdmVudHMoZWxlbWVudCwgdGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0UG9vbGluZyhzaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IHRoaXMuY29uZmlnKCk/LmVsZW1lbnQgPz8gdGhpcy5lZGl0b3JFbGVtZW50O1xuICAgICAgICBjb25zdCB3aXRob3V0UHJlbG9hZCA9IHRoaXMuY29uZmlnKCk/LndpdGhvdXRQcmVsb2FkO1xuXG4gICAgICAgIHRoaXMucG9vbGluZ1N1YnNjcmlwdGlvbiA9IHRpbWVyKDAsIHRoaXMuUE9PTElOR19ERUxBWSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGNvbmNhdE1hcCgoKSA9PiB0aGlzLmdldEJsb2Nrcyh0aGlzLnBhZ2UsIHNpemUpLnBpcGUoZGVsYXkodGhpcy5QT09MSU5HX0RFTEFZKSkpLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnBhZ2UrKyksXG4gICAgICAgICAgICAgICAgdGFrZVdoaWxlKFxuICAgICAgICAgICAgICAgICAgICAoYmxvY2tzKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgIXdpdGhvdXRQcmVsb2FkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxFbGVtZW50LnNjcm9sbEhlaWdodCA8PSBzY3JvbGxFbGVtZW50LmNsaWVudEhlaWdodCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tzLmxlbmd0aCA+PSBzaXplXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXJ0QmxvY2soKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdGVhcmRvd25FZGl0b3IoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgICAgIHRoaXMucmVzZXREYXRhKCk7XG5cbiAgICAgICAgdGhpcy5lZGl0b3I/LmRlc3Ryb3k/LigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5xdWV1ZUluaXQoY2FsbGJhY2s6ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdENoYWluID0gdGhpcy5pbml0Q2hhaW4uY2F0Y2goKCkgPT4gdW5kZWZpbmVkKS50aGVuKGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHJ1bkVkaXRvckluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMudGVhcmRvd25FZGl0b3IoKTtcblxuICAgICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5qVGV4dFNlcnZpY2UuYWRkT3B0aW9ucyh0aGlzLmNvbmZpZygpPy5yZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIHRoaXMuZWRpdG9yID0gdGhpcy5idWlsZEVkaXRvcih0aGlzLmVkaXRvcklkKTtcblxuICAgICAgICBhd2FpdCB0aGlzLmVkaXRvci5pc1JlYWR5O1xuXG4gICAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLndpcmVFZGl0b3IoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkRWRpdG9yKGlkOiBzdHJpbmcpOiBFZGl0b3JKUyB7XG4gICAgICAgIHJldHVybiBuZXcgRWRpdG9ySlMoe1xuICAgICAgICAgICAgLi4uZ2V0RWRpdG9yQ29uZmlnKGlkLCB0aGlzLmNvbmZpZygpKSxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLm9uRWRpdG9yQ2hhbmdlLmJpbmQodGhpcylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3aXJlRWRpdG9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVkaXRvckVsZW1lbnQgPSB0aGlzLmVkaXRvclJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgdGhpcy5pbml0RWRpdG9yRXZlbnRzKHRoaXMuZWRpdG9yRWxlbWVudCk7XG4gICAgICAgIHRoaXMuaW5pdFNjcm9sbE9ic2VydmVyKCk7XG4gICAgICAgIHRoaXMuc3RhcnRQb29saW5nKHRoaXMucmVxdWVzdFNpemUoKSk7XG4gICAgICAgIHRoaXMuc2V0TGlzdGVuZXJzT25DdXN0b21CbG9ja0NoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldExpc3RlbmVyc09uQ3VzdG9tQmxvY2tDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc2V0TGlzdGVuZXJzT25DdXN0b21CbG9ja0NoYW5nZXModGhpcy5lZGl0b3IsIHtcbiAgICAgICAgICAgIHJlbW92ZWRDYWxsYmFjazogdGhpcy5vblJlbW92ZWRDb21iaW5lZEJsb2NrLmJpbmQodGhpcyksXG4gICAgICAgICAgICB1cGRhdGVkQ2FsbGJhY2s6IHRoaXMub25VcGRhdGVkQ29tYmluZWRCbG9jay5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgYWRkZWRDYWxsYmFjazogdGhpcy5vbkFkZGVkQ29tYmluZWRCbG9jay5iaW5kKHRoaXMpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc3RhcnRDaGFuZ2VzKGV2ZW50OiBCbG9ja011dGF0aW9uRXZlbnRbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pc1NraXAgfHwgdGhpcy5pc0NoYW5naW5nKSB7XG4gICAgICAgICAgICB0aGlzLmlzU2tpcCA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzQ2hhbmdpbmcgPSB0cnVlO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBlZGl0b3JPdXRwdXQgPSBhd2FpdCB0aGlzLmVkaXRvci5zYXZlKCk7XG5cbiAgICAgICAgICAgIHJlY2FsY3VsYXRlSW5kZXhlcyh0aGlzLmVkaXRvci5ibG9ja3MpO1xuXG4gICAgICAgICAgICBjb25zdCBldmVudHMgPSBldmVudC5maWx0ZXIoKGRhdGEpID0+IGRhdGEuZGV0YWlsLnRhcmdldC5uYW1lICE9PSBDT01CSU5FRF9URVhUX0JMT0NLX05BTUUpO1xuICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gdGhpcy5lZGl0b3JTZXJ2aWNlLnNvcnRFdmVudHNCeVR5cGVzKGV2ZW50cyk7XG4gICAgICAgICAgICBjb25zdCB7IGFkZEJsb2NrcyQsIGFkZGVkQmxvY2tzIH0gPSB0aGlzLmNvbGxlY3RBZGRlZEJsb2Nrc1JlcXVlc3QoYmxvY2tzLCBlZGl0b3JPdXRwdXQpO1xuXG4gICAgICAgICAgICB0aGlzLmFkZGVkQmxvY2tzID0gW107XG5cbiAgICAgICAgICAgIGFkZEJsb2NrcyRcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFwKChibG9ja0lkcykgPT4gdGhpcy5zZXRCbG9ja0lkc1RvTWFwKGJsb2NrSWRzLCBhZGRlZEJsb2NrcykpLFxuICAgICAgICAgICAgICAgICAgICBjb25jYXRNYXAoKCkgPT4gdGhpcy5jb2xsZWN0VXBkYXRlZEJsb2Nrc1JlcXVlc3QoYmxvY2tzLCBlZGl0b3JPdXRwdXQpKSxcbiAgICAgICAgICAgICAgICAgICAgY29uY2F0TWFwKCgpID0+IHRoaXMuY29sbGVjdFJlbW92ZWRCbG9ja3NSZXF1ZXN0KGJsb2NrcykpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy5zdGFydE5leHRDaGFuZ2UoKSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+IHRoaXMuc3RhcnROZXh0Q2hhbmdlKClcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGFydE5leHRDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNDaGFuZ2luZyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG5leHRFdmVudHMgPSB0aGlzLmNoYW5nZXNRdWV1ZS5wb3AoKTtcblxuICAgICAgICBpZiAobmV4dEV2ZW50cykge1xuICAgICAgICAgICAgdGhpcy5zdGFydENoYW5nZXMobmV4dEV2ZW50cyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVtcHR5UXVldWUubmV4dChudWxsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbGxlY3RBZGRlZEJsb2Nrc1JlcXVlc3QoYmxvY2tzOiBDdWlFdmVudEFjdGlvbkRhdGEsIGVkaXRvck91dHB1dDogT3V0cHV0RGF0YSk6IEN1aUJsb2Nrc1JlcXVlc3REYXRhIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdEJsb2Nrc1dpdGhJbmRleCA9IGJsb2Nrc1tFdmVudEFjdGlvbnMuYWRkXS5tYXAoKGFkZGVkQmxvY2spID0+XG4gICAgICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZ2V0RnVsbEJsb2NrRGF0YShhZGRlZEJsb2NrLCBlZGl0b3JPdXRwdXQpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNvbWJpbmVkQmxvY2tzV2l0aEluZGV4ID0gdGhpcy5hZGRlZEJsb2Nrcy5tYXAoKGJsb2NrKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lZGl0b3JFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWlkPVwiJHtibG9jay5pZH1cIl1gKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gTnVtYmVyKGVsZW1lbnQ/LmRhdGFzZXRbJ2luZGV4J10pO1xuXG4gICAgICAgICAgICByZXR1cm4geyAuLi5ibG9jaywgaW5kZXggfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgYWRkZWRCbG9ja3MgPSBbLi4uZGVmYXVsdEJsb2Nrc1dpdGhJbmRleCwgLi4uY29tYmluZWRCbG9ja3NXaXRoSW5kZXhdLnNvcnQoXG4gICAgICAgICAgICAoZmlyc3QsIHNlY29uZCkgPT4gZmlyc3QuaW5kZXggLSBzZWNvbmQuaW5kZXhcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYWRkQmxvY2tzJCA9IHRoaXMuZWRpdG9yU2VydmljZS5jb2xsZWN0QWRkZWRCbG9ja3NSZXF1ZXN0KHRoaXMuZWRpdG9yQXBpSWQoKSwgYWRkZWRCbG9ja3MpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhZGRlZEJsb2NrcyxcbiAgICAgICAgICAgIGFkZEJsb2NrcyRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbGxlY3RVcGRhdGVkQmxvY2tzUmVxdWVzdChibG9ja3M6IEN1aUV2ZW50QWN0aW9uRGF0YSwgZWRpdG9yT3V0cHV0OiBPdXRwdXREYXRhKTogT2JzZXJ2YWJsZTxDdWlCbG9ja1tdPiB7XG4gICAgICAgIGJsb2Nrc1tFdmVudEFjdGlvbnMudXBkYXRlXS5mb3JFYWNoKCh1cGRhdGVCbG9jaykgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBpZCwgYmxvY2sgfSA9IHRoaXMuZWRpdG9yU2VydmljZS5nZXRGdWxsQmxvY2tEYXRhKHVwZGF0ZUJsb2NrLCBlZGl0b3JPdXRwdXQpO1xuICAgICAgICAgICAgYmxvY2suaWQgPSBpZDtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVkQmxvY2tzLnB1c2goYmxvY2spO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB1cGRhdGVCbG9ja3MkID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmNvbGxlY3RVcGRhdGVkQmxvY2tzUmVxdWVzdCh0aGlzLnVwZGF0ZWRCbG9ja3MsIHRoaXMuYmxvY2tJZHNNYXApO1xuXG4gICAgICAgIHRoaXMudXBkYXRlZEJsb2NrcyA9IFtdO1xuXG4gICAgICAgIHJldHVybiB1cGRhdGVCbG9ja3MkO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29sbGVjdFJlbW92ZWRCbG9ja3NSZXF1ZXN0KGJsb2NrczogQ3VpRXZlbnRBY3Rpb25EYXRhKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIGJsb2Nrc1tFdmVudEFjdGlvbnMucmVtb3ZlXS5mb3JFYWNoKChibG9jaykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWQgPSBibG9jay5kZXRhaWwudGFyZ2V0LmlkO1xuXG4gICAgICAgICAgICB0aGlzLnJlbW92ZWRCbG9ja3NJZHMucHVzaChpZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHJlbW92ZUJsb2NrcyQgPSB0aGlzLmVkaXRvclNlcnZpY2UuY29sbGVjdFJlbW92ZWRCbG9ja3NSZXF1ZXN0KFxuICAgICAgICAgICAgdGhpcy5lZGl0b3JBcGlJZCgpLFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVkQmxvY2tzSWRzLFxuICAgICAgICAgICAgdGhpcy5ibG9ja0lkc01hcFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlbW92ZWRCbG9ja3NJZHMgPSBbXTtcblxuICAgICAgICByZXR1cm4gcmVtb3ZlQmxvY2tzJDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJsb2NrcyhwYWdlID0gMCwgc2l6ZSA9IDQwKTogT2JzZXJ2YWJsZTxDdWlCbG9ja1tdPiB7XG4gICAgICAgIGxldCBjb21iaW5lZEJsb2NrOiBDdWlOdWxsYWJsZTxDdWlCbG9jaz47XG5cbiAgICAgICAgcmV0dXJuIHRoaXMualRleHRTZXJ2aWNlLmdldEJsb2Nrcyh0aGlzLmVkaXRvckFwaUlkKCksIHBhZ2UsIHNpemUpLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95KSxcbiAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29tYmluZWRCbG9jaykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZENvbWJpbmVkQmxvY2soY29tYmluZWRCbG9jayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkQmxvY2sgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlY2FsY3VsYXRlSW5kZXhlcyh0aGlzLmVkaXRvci5ibG9ja3MpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKGJsb2NrKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGJsb2NrLnR5cGUgPT09IENPTUJJTkVEX1RFWFRfQkxPQ0tfUEFSVCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja0RhdGEgPSBibG9jay5kYXRhIGFzIHsgcGFyZW50SWQ6IHN0cmluZyB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21iaW5lZEJsb2NrICYmIGJsb2NrRGF0YS5wYXJlbnRJZCEgIT09IGNvbWJpbmVkQmxvY2s/LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZENvbWJpbmVkQmxvY2soY29tYmluZWRCbG9jayk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5lZEJsb2NrID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkQmxvY2sgPSB0aGlzLnNldENvbWJpbmVkQmxvY2soYmxvY2spO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY29tYmluZWRCbG9jaykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZENvbWJpbmVkQmxvY2soY29tYmluZWRCbG9jayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkQmxvY2sgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQmxvY2soYmxvY2spO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0b0FycmF5KClcbiAgICAgICAgKSBhcyB1bmtub3duIGFzIE9ic2VydmFibGU8Q3VpQmxvY2tbXT47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRCbG9jayhibG9jazogQ3VpQmxvY2spOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBibG9jay50eXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ibG9ja0lkc01hcC5zZXQoYmxvY2suaWQhLCBibG9jay5pZCEpO1xuICAgICAgICB0aGlzLmluc2VydChibG9jayk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRDb21iaW5lZEJsb2NrKGNvbWJpbmVkQmxvY2s6IEN1aUJsb2NrKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTa2lwQ29tYmluZWRCbG9ja09uQ2hhbmdlLnB1c2godHJ1ZSk7XG4gICAgICAgIGNvbnN0IGJsb2NrID0gdGhpcy5lZGl0b3IuYmxvY2tzLmdldEJ5SWQoY29tYmluZWRCbG9jay5pZCB8fCAnJyk7XG5cbiAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvci5ibG9ja3MudXBkYXRlKGJsb2NrLmlkLCBjb21iaW5lZEJsb2NrLmRhdGEgYXMgQ3VpQ29tYmluZWRQYXJ0QmxvY2spO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmluc2VydChjb21iaW5lZEJsb2NrKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluc2VydChibG9jazogQ3VpQmxvY2spOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja0ZpcnN0KGJsb2NrKTtcbiAgICAgICAgdGhpcy5pbmRleCsrO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tGaXJzdChibG9jazogQ3VpQmxvY2spOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRmlyc3QpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTa2lwID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLmJsb2Nrcy5pbnNlcnQoYmxvY2sudHlwZSwgYmxvY2suZGF0YSwge30sIHRoaXMuaW5kZXgsIGZhbHNlLCBmYWxzZSwgYmxvY2suaWQpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUT0RPOiDQtdGB0YLRjCDQstCw0YDQuNC6INGH0YLQviDRh9GC0L4g0YLQviDQv9C+0LnQtNC10YIg0L3QtSDRgtCw0LpcbiAgICAgICAgdGhpcy5lZGl0b3IuYmxvY2tzLnJlbmRlcih7IGJsb2NrczogW2Jsb2NrXSB9KS50aGVuKCgpID0+ICh0aGlzLmlzU2tpcCA9IGZhbHNlKSk7XG4gICAgICAgIHRoaXMuaXNGaXJzdCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q29tYmluZWRCbG9jayhibG9jazogQ3VpQmxvY2spOiBDdWlCbG9jayB7XG4gICAgICAgIGNvbnN0IGNvbWJpbmVkQmxvY2tEYXRhID0gYmxvY2suZGF0YSBhcyB7IHBhcmVudElkOiBzdHJpbmcgfTtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5jb21iaW5lZEJsb2Nrcy5nZXQoY29tYmluZWRCbG9ja0RhdGEucGFyZW50SWQpO1xuXG4gICAgICAgIHRoaXMuYmxvY2tJZHNNYXAuc2V0KGJsb2NrLmlkISwgYmxvY2suaWQhKTtcblxuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnREYXRhID0gcGFyZW50LmRhdGEgYXMgeyB0ZXh0QmxvY2tzOiBDdWlCbG9ja1tdIH07XG4gICAgICAgICAgICBwYXJlbnREYXRhLnRleHRCbG9ja3MucHVzaChibG9jayk7XG5cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnRPYmplY3Q6IEN1aUJsb2NrID0ge1xuICAgICAgICAgICAgaWQ6IGNvbWJpbmVkQmxvY2tEYXRhLnBhcmVudElkLFxuICAgICAgICAgICAgdHlwZTogQ09NQklORURfVEVYVF9CTE9DS19OQU1FLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGlkOiBjb21iaW5lZEJsb2NrRGF0YS5wYXJlbnRJZCxcbiAgICAgICAgICAgICAgICB0ZXh0QmxvY2tzOiBbYmxvY2tdXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jb21iaW5lZEJsb2Nrcy5zZXQoY29tYmluZWRCbG9ja0RhdGEucGFyZW50SWQsIHBhcmVudE9iamVjdCk7XG5cbiAgICAgICAgcmV0dXJuIHBhcmVudE9iamVjdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEJsb2NrSWRzVG9NYXAoYmxvY2tJZHM6IHN0cmluZ1tdLCBhZGRlZEJsb2NrczogQ3VpRnVsbEJsb2NrRGF0YVtdKTogdm9pZCB7XG4gICAgICAgIGlmICghYmxvY2tJZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUVsZW1lbnRMb2NhbElkV2l0aE1haW5JZChibG9ja0lkcywgYWRkZWRCbG9ja3MpO1xuICAgICAgICBhZGRlZEJsb2Nrcy5mb3JFYWNoKChibG9ja0RhdGEsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmJsb2NrSWRzTWFwLnNldChibG9ja0RhdGEuaWQsIGJsb2NrSWRzW2luZGV4XSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlRWxlbWVudExvY2FsSWRXaXRoTWFpbklkKGJsb2NrSWRzOiBzdHJpbmdbXSwgYmxvY2tzOiBDdWlGdWxsQmxvY2tEYXRhW10pOiB2b2lkIHtcbiAgICAgICAgYmxvY2tzLmZvckVhY2goKGJsb2NrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWRpdG9yRWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihgW2RhdGEtaWQ9XCIke2Jsb2NrLmlkfVwiXWApO1xuXG4gICAgICAgICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGVsZW1lbnQuZGF0YXNldFsnaWQnXSA9IGJsb2NrSWRzW2luZGV4XTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTdGFydEJsb2NrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ibG9ja0lkc01hcC5zaXplKSB7XG4gICAgICAgICAgICB0aGlzLnNldEZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLmVkaXRvckVtcHR5LmVtaXQodGhpcy5jaGVja0lzRW1wdHkoKSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzUmVhZG9ubHkoKSkge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3IucmVuZGVyKHsgYmxvY2tzOiBbXSB9KTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNldFN0YXJ0QmxvY2soXG4gICAgICAgICAgICB0aGlzLmVkaXRvckFwaUlkKCksXG4gICAgICAgICAgICBhc3luYyAoYmxvY2s6IEN1aUJsb2NrPEN1aUNvbWJpbmVkQmxvY2tUb29sRGF0YT4sIGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2NrSWRzTWFwLnNldChpZCwgaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNTa2lwQ29tYmluZWRCbG9ja09uQ2hhbmdlLnB1c2godHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmVkaXRvci5yZW5kZXIoeyBibG9ja3M6IFtibG9ja10gfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNldEZvY3VzKCk7XG4gICAgICAgICAgICAgICAgcmVjYWxjdWxhdGVJbmRleGVzKHRoaXMuZWRpdG9yLmJsb2Nrcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRGb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZygpPy5hdXRvZm9jdXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZWRpdG9yLmNhcmV0LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0lzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGJsb2Nrc0NvdW50ID0gdGhpcy5lZGl0b3IuYmxvY2tzPy5nZXRCbG9ja3NDb3VudCgpID8/IDA7XG5cbiAgICAgICAgaWYgKCFibG9ja3NDb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBSRURBQ1RPUl9TRUxFQ1RPUiA9ICcuY29kZXgtZWRpdG9yX19yZWRhY3Rvcic7XG4gICAgICAgIGNvbnN0IHJlZGFjdG9yVGV4dENvbnRlbnQgPSB0aGlzLmVkaXRvckVsZW1lbnQucXVlcnlTZWxlY3RvcihSRURBQ1RPUl9TRUxFQ1RPUik/LnRleHRDb250ZW50Py50cmltKCk7XG5cbiAgICAgICAgcmV0dXJuICFyZWRhY3RvclRleHRDb250ZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXREYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNjcm9sbFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5wb29saW5nU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmlzU2tpcENvbWJpbmVkQmxvY2tPbkNoYW5nZSA9IFtdO1xuICAgICAgICB0aGlzLmlzRmlyc3QgPSB0cnVlO1xuICAgICAgICB0aGlzLmlzQ2hhbmdpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1NraXAgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1JlcXVlc3RlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJsb2NrSWRzTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICAgICAgdGhpcy5jb21iaW5lZEJsb2NrcyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgICAgIHRoaXMucGFnZSA9IDA7XG4gICAgICAgIHRoaXMuYWRkZWRCbG9ja3MgPSBbXTtcbiAgICAgICAgdGhpcy51cGRhdGVkQmxvY2tzID0gW107XG4gICAgICAgIHRoaXMucmVtb3ZlZEJsb2Nrc0lkcyA9IFtdO1xuICAgICAgICB0aGlzLmNoYW5nZXNRdWV1ZSA9IFtdO1xuICAgICAgICB0aGlzLmFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB9XG5cbn1cbiIsIjxkaXZcbiAgICAjZWRpdG9yXG4gICAgW2lkXT1cImVkaXRvcklkXCJcbiAgICBkYXRhLWVkaXRvclxuICAgIFtjbGFzcy5fcmVhZG9ubHldPVwiY29uZmlnKCkucmVhZE9ubHlcIlxuPjwvZGl2PlxuIl19
|
|
431
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFNUMsT0FBTyxRQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFFMUMsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxHQUFHLEVBQ0gsT0FBTyxFQUNQLFNBQVMsRUFDVCxHQUFHLEVBQ0gsWUFBWSxFQUNaLEtBQUssRUFDTCxPQUFPLEVBQ1YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUscUJBQXFCLEVBQVksa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBVzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxZQUFZLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBaUJqRSxNQUFNLE9BQU8s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QUNwRztTQUNKLCtJQzlETCxtSEFNQTs7NEZEMERhLGtCQUFrQjtrQkFmOUIsU0FBUzsrQkFDSSxZQUFZLGNBQ1YsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQLGdCQUFnQjt3QkFDaEI7NEJBQ0ksT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUNiLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxrQkFBa0IsRUFBRTt5QkFDcEc7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVsZW1lbnRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgRGVzdHJveVJlZixcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG91dHB1dCxcbiAgICB2aWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgdHlwZSB7IEN1aU51bGxhYmxlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcbmltcG9ydCB7IEN1aUlkU2VydmljZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5pbXBvcnQgdHlwZSB7IEFQSSwgQmxvY2tNdXRhdGlvbkV2ZW50LCBPdXRwdXREYXRhIH0gZnJvbSAnQGVkaXRvcmpzL2VkaXRvcmpzJztcbmltcG9ydCBFZGl0b3JKUyBmcm9tICdAZWRpdG9yanMvZWRpdG9yanMnO1xuaW1wb3J0IHR5cGUgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgY29uY2F0TWFwLFxuICAgIGRlbGF5LFxuICAgIGZpbmFsaXplLFxuICAgIGZyb21FdmVudCxcbiAgICBtYXAsXG4gICAgU3ViamVjdCxcbiAgICB0YWtlV2hpbGUsXG4gICAgdGFwLFxuICAgIHRocm90dGxlVGltZSxcbiAgICB0aW1lcixcbiAgICB0b0FycmF5XG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ1VJX0pURVhUX0FQSV9TRVJWSUNFLCBDdWlCbG9jaywgQ3VpSlRleHRBcGlTZXJ2aWNlIH0gZnJvbSAnQGN1YnktdWkvYXBpJztcblxuaW1wb3J0IHsgZ2V0RWRpdG9yQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgQ09NQklORURfVEVYVF9CTE9DS19OQU1FLCBDT01CSU5FRF9URVhUX0JMT0NLX1BBUlQsIERFRkFVTFRfQ09ORklHIH0gZnJvbSAnLi9jb25zdGFudHMvZWRpdG9yLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBzZXRFZGl0b3JFdmVudHMgfSBmcm9tICcuL2V2ZW50cy9zZXQtZWRpdG9yLWV2ZW50cyc7XG5pbXBvcnQgdHlwZSB7XG4gICAgQ3VpQmxvY2tEYXRhLFxuICAgIEN1aUJsb2Nrc1JlcXVlc3REYXRhLFxuICAgIEN1aUNvbWJpbmVkQmxvY2tBZGRpbmdFdmVudCxcbiAgICBDdWlDb21iaW5lZEJsb2NrVG9vbERhdGEsXG4gICAgQ3VpQ29tYmluZWRQYXJ0QmxvY2ssXG4gICAgQ3VpRWRpdG9yQ29uZmlnLFxuICAgIEN1aUV2ZW50QWN0aW9uRGF0YSxcbiAgICBDdWlGdWxsQmxvY2tEYXRhXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDdWlFZGl0b3JTZXJ2aWNlLCBFdmVudEFjdGlvbnMgfSBmcm9tICcuL3NlcnZpY2VzJztcbmltcG9ydCB7IHJlY2FsY3VsYXRlSW5kZXhlcyB9IGZyb20gJy4vdXRpbHMvcmVjYWxjdWxhdGUtaW5kZXhlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY3VpLWVkaXRvcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgQ3VpRWRpdG9yU2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQ1VJX0pURVhUX0FQSV9TRVJWSUNFLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT5cbiAgICAgICAgICAgICAgICBpbmplY3QoQ1VJX0pURVhUX0FQSV9TRVJWSUNFLCB7IG9wdGlvbmFsOiB0cnVlLCBza2lwU2VsZjogdHJ1ZSB9KSA/PyBuZXcgQ3VpSlRleHRBcGlTZXJ2aWNlKClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQ3VpRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjdWlJZFNlcnZpY2UgPSBpbmplY3QoQ3VpSWRTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVkaXRvclNlcnZpY2UgPSBpbmplY3QoQ3VpRWRpdG9yU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBqVGV4dFNlcnZpY2UgPSBpbmplY3QoQ1VJX0pURVhUX0FQSV9TRVJWSUNFKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgUE9PTElOR19ERUxBWSA9IDEwMDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IEVMRU1FTlRfU1BBQ0VfVE9fQk9UVE9NID0gMTUwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgU0NST0xMX1RIUk9UVExFX1RJTUUgPSAyMDA7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGVtcHR5UXVldWUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHJpdmF0ZSBpbml0Q2hhaW46IFByb21pc2U8dm9pZD4gPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICBwcml2YXRlIHBvb2xpbmdTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBzY3JvbGxTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBpc1NraXBDb21iaW5lZEJsb2NrT25DaGFuZ2U6IGJvb2xlYW5bXSA9IFtdO1xuICAgIHByaXZhdGUgaXNGaXJzdCA9IHRydWU7XG4gICAgcHJpdmF0ZSBpc0NoYW5naW5nID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpc1NraXAgPSBmYWxzZTtcbiAgICBwcml2YXRlIGlzUmVxdWVzdGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICAgIC8vINCd0YPQttC10L0g0LTQu9GPINGB0L7QvtGC0L3QvtGI0LXQvdC40Y8g0LvQvtC60LDQu9GM0L3QvtCz0L4gSUQg0Lgg0L7RgdC90L7QstC90L7Qs9C+IElEINC/0L7RgdC70LUg0YHQvtC30LTQsNC90LjRjyDRjdC70LXQvNC10L3RgtCwXG4gICAgcHJpdmF0ZSBibG9ja0lkc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBjb21iaW5lZEJsb2NrcyA9IG5ldyBNYXAoKTtcbiAgICBwcml2YXRlIGluZGV4ID0gMDtcbiAgICBwcml2YXRlIHBhZ2UgPSAwO1xuICAgIHByaXZhdGUgYWRkZWRCbG9ja3M6IEN1aUJsb2NrRGF0YVtdID0gW107XG4gICAgcHJpdmF0ZSB1cGRhdGVkQmxvY2tzOiBDdWlCbG9ja1tdID0gW107XG4gICAgcHJpdmF0ZSByZW1vdmVkQmxvY2tzSWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHByaXZhdGUgY2hhbmdlc1F1ZXVlOiBCbG9ja011dGF0aW9uRXZlbnRbXVtdID0gW107XG4gICAgcHJpdmF0ZSBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWRpdG9ySWQgPSB0aGlzLmN1aUlkU2VydmljZS5nZW5lcmF0ZSgpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc1JlYWRvbmx5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKT8ucmVhZE9ubHkpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpPy5yZXF1ZXN0T3B0aW9ucyk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWRpdG9yUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignZWRpdG9yJyk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZWRpdG9yQXBpSWQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0PEN1aUVkaXRvckNvbmZpZz4oREVGQVVMVF9DT05GSUcpO1xuICAgIHB1YmxpYyByZWFkb25seSByZXF1ZXN0U2l6ZSA9IGlucHV0PG51bWJlcj4oNDApO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGVkaXRvckVtcHR5ID0gb3V0cHV0PGJvb2xlYW4+KCk7XG5cbiAgICBwdWJsaWMgZWRpdG9yITogRWRpdG9ySlM7XG4gICAgcHVibGljIGVkaXRvckVsZW1lbnQhOiBIVE1MRWxlbWVudDtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmluaXRFZGl0b3JFZmZlY3QoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNEZXN0cm95ZWQgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuZW5xdWV1ZUluaXQoKCkgPT4gdGhpcy50ZWFyZG93bkVkaXRvcigpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uU2Nyb2xsRXZlbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3ZlcmFsbEhlaWdodCA9IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gdGhpcy5FTEVNRU5UX1NQQUNFX1RPX0JPVFRPTTtcbiAgICAgICAgY29uc3QgY3VycmVudEhlaWdodCA9IGVsZW1lbnQuc2Nyb2xsVG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRIZWlnaHQgPCBvdmVyYWxsSGVpZ2h0IHx8IHRoaXMuaXNSZXF1ZXN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNSZXF1ZXN0ZWQgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnJlcXVlc3RTaXplKCk7XG4gICAgICAgIGxldCBibG9ja3NDb3VudCA9IDA7XG5cbiAgICAgICAgdGhpcy5nZXRCbG9ja3ModGhpcy5wYWdlLCBzaXplKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChibG9ja3MpID0+IChibG9ja3NDb3VudCA9IGJsb2Nrcy5sZW5ndGgpKSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSZXF1ZXN0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tzQ291bnQgPj0gc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICAgIHRoaXMucGFnZSsrO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25FZGl0b3JDaGFuZ2UoXzogQVBJLCBldmVudDogQmxvY2tNdXRhdGlvbkV2ZW50IHwgQmxvY2tNdXRhdGlvbkV2ZW50W10pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSZWFkb25seSgpIHx8IHRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShldmVudCkpIHtcbiAgICAgICAgICAgIGV2ZW50ID0gW2V2ZW50XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQ2hhbmdpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlc1F1ZXVlLnVuc2hpZnQoZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGFydENoYW5nZXMoZXZlbnQpO1xuICAgICAgICB0aGlzLmVkaXRvckVtcHR5LmVtaXQodGhpcy5jaGVja0lzRW1wdHkoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkFkZGVkQ29tYmluZWRCbG9jayhkYXRhOiBDdWlDb21iaW5lZEJsb2NrQWRkaW5nRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTa2lwQ29tYmluZWRCbG9ja09uQ2hhbmdlLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5pc1NraXBDb21iaW5lZEJsb2NrT25DaGFuZ2UucG9wKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJsb2Nrc1dpdGhvdXRJZCA9IGRhdGEuYmxvY2tzLm1hcCgoYmxvY2spID0+ICh7XG4gICAgICAgICAgICBibG9jazogeyAuLi5ibG9jaywgaWQ6IHVuZGVmaW5lZCB9LFxuICAgICAgICAgICAgaWQ6IGJsb2NrLmlkIVxuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5hZGRlZEJsb2Nrcy5wdXNoKC4uLmJsb2Nrc1dpdGhvdXRJZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblVwZGF0ZWRDb21iaW5lZEJsb2NrKHVwZGF0ZWRCbG9ja3M6IEN1aUJsb2NrW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCF1cGRhdGVkQmxvY2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVkQmxvY2tzLnB1c2goLi4udXBkYXRlZEJsb2Nrcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJlbW92ZWRDb21iaW5lZEJsb2NrKGJsb2NrSWRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBpZiAoIWJsb2NrSWRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWNhbGN1bGF0ZUFsbEJsb2Nrc0FmdGVyUmVtb3ZhbChibG9ja0lkcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWNhbGN1bGF0ZUFsbEJsb2Nrc0FmdGVyUmVtb3ZhbChibG9ja0lkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVtYWluaW5nUmVtb3ZlZEJsb2NrSWRzID0gbmV3IFNldChibG9ja0lkcyk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVkQmxvY2tzID0gdGhpcy51cGRhdGVkQmxvY2tzLmZpbHRlcihcbiAgICAgICAgICAgICh1cGRhdGVkQmxvY2spID0+ICFyZW1haW5pbmdSZW1vdmVkQmxvY2tJZHMuaGFzKHVwZGF0ZWRCbG9jay5pZCA/PyAnJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hZGRlZEJsb2NrcyA9IHRoaXMuYWRkZWRCbG9ja3MuZmlsdGVyKChhZGRlZEJsb2NrKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXJlbWFpbmluZ1JlbW92ZWRCbG9ja0lkcy5oYXMoYWRkZWRCbG9jay5pZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVtYWluaW5nUmVtb3ZlZEJsb2NrSWRzLmRlbGV0ZShhZGRlZEJsb2NrLmlkKTtcblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJlbW92ZWRCbG9ja3NJZHMucHVzaCguLi5yZW1haW5pbmdSZW1vdmVkQmxvY2tJZHMudmFsdWVzKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEVkaXRvckVmZmVjdCgpOiB2b2lkIHtcbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVkaXRvckFwaUlkKCkgfHwgdGhpcy5jb25maWcoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRFZGl0b3JDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEVkaXRvckNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW5xdWV1ZUluaXQoKCkgPT4gdGhpcy5ydW5FZGl0b3JJbml0KCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNjcm9sbE9ic2VydmVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5jb25maWcoKT8uZWxlbWVudCA/PyB0aGlzLmVkaXRvckVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHNjcm9sbE9ic2VydmVyID0gZnJvbUV2ZW50KGVsZW1lbnQsICdzY3JvbGwnKTtcblxuICAgICAgICB0aGlzLnNjcm9sbFN1YnNjcmlwdGlvbiA9IHNjcm9sbE9ic2VydmVyXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95KSxcbiAgICAgICAgICAgICAgICB0aHJvdHRsZVRpbWUodGhpcy5TQ1JPTExfVEhST1RUTEVfVElNRSwgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgICAgICAgICAgIGxlYWRpbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHRyYWlsaW5nOiB0cnVlXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMub25TY3JvbGxFdmVudChlbGVtZW50KSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRFZGl0b3JFdmVudHMoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVhZE9ubHkgPSB0aGlzLmlzUmVhZG9ubHkoKTtcblxuICAgICAgICBpZiAocmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldEVkaXRvckV2ZW50cyhlbGVtZW50LCB0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnRQb29saW5nKHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gdGhpcy5jb25maWcoKT8uZWxlbWVudCA/PyB0aGlzLmVkaXRvckVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHdpdGhvdXRQcmVsb2FkID0gdGhpcy5jb25maWcoKT8ud2l0aG91dFByZWxvYWQ7XG5cbiAgICAgICAgdGhpcy5wb29saW5nU3Vic2NyaXB0aW9uID0gdGltZXIoMCwgdGhpcy5QT09MSU5HX0RFTEFZKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgY29uY2F0TWFwKCgpID0+IHRoaXMuZ2V0QmxvY2tzKHRoaXMucGFnZSwgc2l6ZSkucGlwZShkZWxheSh0aGlzLlBPT0xJTkdfREVMQVkpKSksXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMucGFnZSsrKSxcbiAgICAgICAgICAgICAgICB0YWtlV2hpbGUoXG4gICAgICAgICAgICAgICAgICAgIChibG9ja3MpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAhd2l0aG91dFByZWxvYWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbEVsZW1lbnQuc2Nyb2xsSGVpZ2h0IDw9IHNjcm9sbEVsZW1lbnQuY2xpZW50SGVpZ2h0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja3MubGVuZ3RoID49IHNpemVcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhcnRCbG9jaygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0ZWFyZG93bkVkaXRvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgICAgdGhpcy5yZXNldERhdGEoKTtcblxuICAgICAgICB0aGlzLmVkaXRvcj8uZGVzdHJveT8uKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbnF1ZXVlSW5pdChjYWxsYmFjazogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0Q2hhaW4gPSB0aGlzLmluaXRDaGFpbi5jYXRjaCgoKSA9PiB1bmRlZmluZWQpLnRoZW4oY2FsbGJhY2spO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcnVuRWRpdG9ySW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy50ZWFyZG93bkVkaXRvcigpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVkaXRvciA9IHRoaXMuYnVpbGRFZGl0b3IodGhpcy5lZGl0b3JJZCk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5lZGl0b3IuaXNSZWFkeTtcblxuICAgICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy53aXJlRWRpdG9yKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZEVkaXRvcihpZDogc3RyaW5nKTogRWRpdG9ySlMge1xuICAgICAgICByZXR1cm4gbmV3IEVkaXRvckpTKHtcbiAgICAgICAgICAgIC4uLmdldEVkaXRvckNvbmZpZyhpZCwgdGhpcy5jb25maWcoKSksXG4gICAgICAgICAgICBvbkNoYW5nZTogdGhpcy5vbkVkaXRvckNoYW5nZS5iaW5kKHRoaXMpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgd2lyZUVkaXRvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0b3JFbGVtZW50ID0gdGhpcy5lZGl0b3JSZWYoKS5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIHRoaXMuaW5pdEVkaXRvckV2ZW50cyh0aGlzLmVkaXRvckVsZW1lbnQpO1xuICAgICAgICB0aGlzLmluaXRTY3JvbGxPYnNlcnZlcigpO1xuICAgICAgICB0aGlzLnN0YXJ0UG9vbGluZyh0aGlzLnJlcXVlc3RTaXplKCkpO1xuICAgICAgICB0aGlzLnNldExpc3RlbmVyc09uQ3VzdG9tQmxvY2tDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRMaXN0ZW5lcnNPbkN1c3RvbUJsb2NrQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNldExpc3RlbmVyc09uQ3VzdG9tQmxvY2tDaGFuZ2VzKHRoaXMuZWRpdG9yLCB7XG4gICAgICAgICAgICByZW1vdmVkQ2FsbGJhY2s6IHRoaXMub25SZW1vdmVkQ29tYmluZWRCbG9jay5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdXBkYXRlZENhbGxiYWNrOiB0aGlzLm9uVXBkYXRlZENvbWJpbmVkQmxvY2suYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGFkZGVkQ2FsbGJhY2s6IHRoaXMub25BZGRlZENvbWJpbmVkQmxvY2suYmluZCh0aGlzKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHN0YXJ0Q2hhbmdlcyhldmVudDogQmxvY2tNdXRhdGlvbkV2ZW50W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNTa2lwIHx8IHRoaXMuaXNDaGFuZ2luZykge1xuICAgICAgICAgICAgdGhpcy5pc1NraXAgPSBmYWxzZTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0NoYW5naW5nID0gdHJ1ZTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZWRpdG9yT3V0cHV0ID0gYXdhaXQgdGhpcy5lZGl0b3Iuc2F2ZSgpO1xuXG4gICAgICAgICAgICByZWNhbGN1bGF0ZUluZGV4ZXModGhpcy5lZGl0b3IuYmxvY2tzKTtcblxuICAgICAgICAgICAgY29uc3QgZXZlbnRzID0gZXZlbnQuZmlsdGVyKChkYXRhKSA9PiBkYXRhLmRldGFpbC50YXJnZXQubmFtZSAhPT0gQ09NQklORURfVEVYVF9CTE9DS19OQU1FKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrcyA9IHRoaXMuZWRpdG9yU2VydmljZS5zb3J0RXZlbnRzQnlUeXBlcyhldmVudHMpO1xuICAgICAgICAgICAgY29uc3QgeyBhZGRCbG9ja3MkLCBhZGRlZEJsb2NrcyB9ID0gdGhpcy5jb2xsZWN0QWRkZWRCbG9ja3NSZXF1ZXN0KGJsb2NrcywgZWRpdG9yT3V0cHV0KTtcblxuICAgICAgICAgICAgdGhpcy5hZGRlZEJsb2NrcyA9IFtdO1xuXG4gICAgICAgICAgICBhZGRCbG9ja3MkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoYmxvY2tJZHMpID0+IHRoaXMuc2V0QmxvY2tJZHNUb01hcChibG9ja0lkcywgYWRkZWRCbG9ja3MpKSxcbiAgICAgICAgICAgICAgICAgICAgY29uY2F0TWFwKCgpID0+IHRoaXMuY29sbGVjdFVwZGF0ZWRCbG9ja3NSZXF1ZXN0KGJsb2NrcywgZWRpdG9yT3V0cHV0KSksXG4gICAgICAgICAgICAgICAgICAgIGNvbmNhdE1hcCgoKSA9PiB0aGlzLmNvbGxlY3RSZW1vdmVkQmxvY2tzUmVxdWVzdChibG9ja3MpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMuc3RhcnROZXh0Q2hhbmdlKCksXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB0aGlzLnN0YXJ0TmV4dENoYW5nZSgpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnROZXh0Q2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzQ2hhbmdpbmcgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBuZXh0RXZlbnRzID0gdGhpcy5jaGFuZ2VzUXVldWUucG9wKCk7XG5cbiAgICAgICAgaWYgKG5leHRFdmVudHMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRDaGFuZ2VzKG5leHRFdmVudHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbXB0eVF1ZXVlLm5leHQobnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb2xsZWN0QWRkZWRCbG9ja3NSZXF1ZXN0KGJsb2NrczogQ3VpRXZlbnRBY3Rpb25EYXRhLCBlZGl0b3JPdXRwdXQ6IE91dHB1dERhdGEpOiBDdWlCbG9ja3NSZXF1ZXN0RGF0YSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRCbG9ja3NXaXRoSW5kZXggPSBibG9ja3NbRXZlbnRBY3Rpb25zLmFkZF0ubWFwKChhZGRlZEJsb2NrKSA9PlxuICAgICAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmdldEZ1bGxCbG9ja0RhdGEoYWRkZWRCbG9jaywgZWRpdG9yT3V0cHV0KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBjb21iaW5lZEJsb2Nrc1dpdGhJbmRleCA9IHRoaXMuYWRkZWRCbG9ja3MubWFwKChibG9jaykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWRpdG9yRWxlbWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1pZD1cIiR7YmxvY2suaWR9XCJdYCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IE51bWJlcihlbGVtZW50Py5kYXRhc2V0WydpbmRleCddKTtcblxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYmxvY2ssIGluZGV4IH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGFkZGVkQmxvY2tzID0gWy4uLmRlZmF1bHRCbG9ja3NXaXRoSW5kZXgsIC4uLmNvbWJpbmVkQmxvY2tzV2l0aEluZGV4XS5zb3J0KFxuICAgICAgICAgICAgKGZpcnN0LCBzZWNvbmQpID0+IGZpcnN0LmluZGV4IC0gc2Vjb25kLmluZGV4XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGFkZEJsb2NrcyQgPSB0aGlzLmVkaXRvclNlcnZpY2UuY29sbGVjdEFkZGVkQmxvY2tzUmVxdWVzdChcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yQXBpSWQoKSxcbiAgICAgICAgICAgIGFkZGVkQmxvY2tzLFxuICAgICAgICAgICAgdGhpcy5yZXF1ZXN0T3B0aW9ucygpXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFkZGVkQmxvY2tzLFxuICAgICAgICAgICAgYWRkQmxvY2tzJFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY29sbGVjdFVwZGF0ZWRCbG9ja3NSZXF1ZXN0KGJsb2NrczogQ3VpRXZlbnRBY3Rpb25EYXRhLCBlZGl0b3JPdXRwdXQ6IE91dHB1dERhdGEpOiBPYnNlcnZhYmxlPEN1aUJsb2NrW10+IHtcbiAgICAgICAgYmxvY2tzW0V2ZW50QWN0aW9ucy51cGRhdGVdLmZvckVhY2goKHVwZGF0ZUJsb2NrKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGlkLCBibG9jayB9ID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmdldEZ1bGxCbG9ja0RhdGEodXBkYXRlQmxvY2ssIGVkaXRvck91dHB1dCk7XG4gICAgICAgICAgICBibG9jay5pZCA9IGlkO1xuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRCbG9ja3MucHVzaChibG9jayk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHVwZGF0ZUJsb2NrcyQgPSB0aGlzLmVkaXRvclNlcnZpY2UuY29sbGVjdFVwZGF0ZWRCbG9ja3NSZXF1ZXN0KFxuICAgICAgICAgICAgdGhpcy51cGRhdGVkQmxvY2tzLFxuICAgICAgICAgICAgdGhpcy5ibG9ja0lkc01hcCxcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdE9wdGlvbnMoKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMudXBkYXRlZEJsb2NrcyA9IFtdO1xuXG4gICAgICAgIHJldHVybiB1cGRhdGVCbG9ja3MkO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29sbGVjdFJlbW92ZWRCbG9ja3NSZXF1ZXN0KGJsb2NrczogQ3VpRXZlbnRBY3Rpb25EYXRhKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIGJsb2Nrc1tFdmVudEFjdGlvbnMucmVtb3ZlXS5mb3JFYWNoKChibG9jaykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWQgPSBibG9jay5kZXRhaWwudGFyZ2V0LmlkO1xuXG4gICAgICAgICAgICB0aGlzLnJlbW92ZWRCbG9ja3NJZHMucHVzaChpZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHJlbW92ZUJsb2NrcyQgPSB0aGlzLmVkaXRvclNlcnZpY2UuY29sbGVjdFJlbW92ZWRCbG9ja3NSZXF1ZXN0KFxuICAgICAgICAgICAgdGhpcy5lZGl0b3JBcGlJZCgpLFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVkQmxvY2tzSWRzLFxuICAgICAgICAgICAgdGhpcy5ibG9ja0lkc01hcCxcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdE9wdGlvbnMoKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlbW92ZWRCbG9ja3NJZHMgPSBbXTtcblxuICAgICAgICByZXR1cm4gcmVtb3ZlQmxvY2tzJDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJsb2NrcyhwYWdlID0gMCwgc2l6ZSA9IDQwKTogT2JzZXJ2YWJsZTxDdWlCbG9ja1tdPiB7XG4gICAgICAgIGxldCBjb21iaW5lZEJsb2NrOiBDdWlOdWxsYWJsZTxDdWlCbG9jaz47XG5cbiAgICAgICAgcmV0dXJuIHRoaXMualRleHRTZXJ2aWNlLmdldEJsb2Nrcyh0aGlzLmVkaXRvckFwaUlkKCksIHBhZ2UsIHNpemUsIHRoaXMucmVxdWVzdE9wdGlvbnMoKSkucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3kpLFxuICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb21iaW5lZEJsb2NrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQ29tYmluZWRCbG9jayhjb21iaW5lZEJsb2NrKTtcbiAgICAgICAgICAgICAgICAgICAgY29tYmluZWRCbG9jayA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVjYWxjdWxhdGVJbmRleGVzKHRoaXMuZWRpdG9yLmJsb2Nrcyk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcCgoYmxvY2spID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYmxvY2sudHlwZSA9PT0gQ09NQklORURfVEVYVF9CTE9DS19QQVJUKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrRGF0YSA9IGJsb2NrLmRhdGEgYXMgeyBwYXJlbnRJZDogc3RyaW5nIH07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbWJpbmVkQmxvY2sgJiYgYmxvY2tEYXRhLnBhcmVudElkISAhPT0gY29tYmluZWRCbG9jaz8uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQ29tYmluZWRCbG9jayhjb21iaW5lZEJsb2NrKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkQmxvY2sgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29tYmluZWRCbG9jayA9IHRoaXMuc2V0Q29tYmluZWRCbG9jayhibG9jayk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjb21iaW5lZEJsb2NrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQ29tYmluZWRCbG9jayhjb21iaW5lZEJsb2NrKTtcbiAgICAgICAgICAgICAgICAgICAgY29tYmluZWRCbG9jayA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRCbG9jayhibG9jayk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRvQXJyYXkoKVxuICAgICAgICApIGFzIHVua25vd24gYXMgT2JzZXJ2YWJsZTxDdWlCbG9ja1tdPjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEJsb2NrKGJsb2NrOiBDdWlCbG9jayk6IHZvaWQge1xuICAgICAgICBpZiAodHlwZW9mIGJsb2NrLnR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJsb2NrSWRzTWFwLnNldChibG9jay5pZCEsIGJsb2NrLmlkISk7XG4gICAgICAgIHRoaXMuaW5zZXJ0KGJsb2NrKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZENvbWJpbmVkQmxvY2soY29tYmluZWRCbG9jazogQ3VpQmxvY2spOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1NraXBDb21iaW5lZEJsb2NrT25DaGFuZ2UucHVzaCh0cnVlKTtcbiAgICAgICAgY29uc3QgYmxvY2sgPSB0aGlzLmVkaXRvci5ibG9ja3MuZ2V0QnlJZChjb21iaW5lZEJsb2NrLmlkIHx8ICcnKTtcblxuICAgICAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLmJsb2Nrcy51cGRhdGUoYmxvY2suaWQsIGNvbWJpbmVkQmxvY2suZGF0YSBhcyBDdWlDb21iaW5lZFBhcnRCbG9jayk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5zZXJ0KGNvbWJpbmVkQmxvY2spO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5zZXJ0KGJsb2NrOiBDdWlCbG9jayk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoZWNrRmlyc3QoYmxvY2spO1xuICAgICAgICB0aGlzLmluZGV4Kys7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0ZpcnN0KGJsb2NrOiBDdWlCbG9jayk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNGaXJzdCkge1xuICAgICAgICAgICAgdGhpcy5pc1NraXAgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5lZGl0b3IuYmxvY2tzLmluc2VydChibG9jay50eXBlLCBibG9jay5kYXRhLCB7fSwgdGhpcy5pbmRleCwgZmFsc2UsIGZhbHNlLCBibG9jay5pZCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRPRE86INC10YHRgtGMINCy0LDRgNC40Log0YfRgtC+INGH0YLQviDRgtC+INC/0L7QudC00LXRgiDQvdC1INGC0LDQulxuICAgICAgICB0aGlzLmVkaXRvci5ibG9ja3MucmVuZGVyKHsgYmxvY2tzOiBbYmxvY2tdIH0pLnRoZW4oKCkgPT4gKHRoaXMuaXNTa2lwID0gZmFsc2UpKTtcbiAgICAgICAgdGhpcy5pc0ZpcnN0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDb21iaW5lZEJsb2NrKGJsb2NrOiBDdWlCbG9jayk6IEN1aUJsb2NrIHtcbiAgICAgICAgY29uc3QgY29tYmluZWRCbG9ja0RhdGEgPSBibG9jay5kYXRhIGFzIHsgcGFyZW50SWQ6IHN0cmluZyB9O1xuICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmNvbWJpbmVkQmxvY2tzLmdldChjb21iaW5lZEJsb2NrRGF0YS5wYXJlbnRJZCk7XG5cbiAgICAgICAgdGhpcy5ibG9ja0lkc01hcC5zZXQoYmxvY2suaWQhLCBibG9jay5pZCEpO1xuXG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudERhdGEgPSBwYXJlbnQuZGF0YSBhcyB7IHRleHRCbG9ja3M6IEN1aUJsb2NrW10gfTtcbiAgICAgICAgICAgIHBhcmVudERhdGEudGV4dEJsb2Nrcy5wdXNoKGJsb2NrKTtcblxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcmVudE9iamVjdDogQ3VpQmxvY2sgPSB7XG4gICAgICAgICAgICBpZDogY29tYmluZWRCbG9ja0RhdGEucGFyZW50SWQsXG4gICAgICAgICAgICB0eXBlOiBDT01CSU5FRF9URVhUX0JMT0NLX05BTUUsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgaWQ6IGNvbWJpbmVkQmxvY2tEYXRhLnBhcmVudElkLFxuICAgICAgICAgICAgICAgIHRleHRCbG9ja3M6IFtibG9ja11cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmNvbWJpbmVkQmxvY2tzLnNldChjb21iaW5lZEJsb2NrRGF0YS5wYXJlbnRJZCwgcGFyZW50T2JqZWN0KTtcblxuICAgICAgICByZXR1cm4gcGFyZW50T2JqZWN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0QmxvY2tJZHNUb01hcChibG9ja0lkczogc3RyaW5nW10sIGFkZGVkQmxvY2tzOiBDdWlGdWxsQmxvY2tEYXRhW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFibG9ja0lkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlRWxlbWVudExvY2FsSWRXaXRoTWFpbklkKGJsb2NrSWRzLCBhZGRlZEJsb2Nrcyk7XG4gICAgICAgIGFkZGVkQmxvY2tzLmZvckVhY2goKGJsb2NrRGF0YSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYmxvY2tJZHNNYXAuc2V0KGJsb2NrRGF0YS5pZCwgYmxvY2tJZHNbaW5kZXhdKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVFbGVtZW50TG9jYWxJZFdpdGhNYWluSWQoYmxvY2tJZHM6IHN0cmluZ1tdLCBibG9ja3M6IEN1aUZ1bGxCbG9ja0RhdGFbXSk6IHZvaWQge1xuICAgICAgICBibG9ja3MuZm9yRWFjaCgoYmxvY2ssIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lZGl0b3JFbGVtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KGBbZGF0YS1pZD1cIiR7YmxvY2suaWR9XCJdYCk7XG5cbiAgICAgICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZWxlbWVudC5kYXRhc2V0WydpZCddID0gYmxvY2tJZHNbaW5kZXhdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFN0YXJ0QmxvY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmJsb2NrSWRzTWFwLnNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9jdXMoKTtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yRW1wdHkuZW1pdCh0aGlzLmNoZWNrSXNFbXB0eSgpKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNSZWFkb25seSgpKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvci5yZW5kZXIoeyBibG9ja3M6IFtdIH0pO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc2V0U3RhcnRCbG9jayhcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yQXBpSWQoKSxcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdE9wdGlvbnMoKSxcbiAgICAgICAgICAgIGFzeW5jIChibG9jazogQ3VpQmxvY2s8Q3VpQ29tYmluZWRCbG9ja1Rvb2xEYXRhPiwgaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tJZHNNYXAuc2V0KGlkLCBpZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1NraXBDb21iaW5lZEJsb2NrT25DaGFuZ2UucHVzaCh0cnVlKTtcblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZWRpdG9yLnJlbmRlcih7IGJsb2NrczogW2Jsb2NrXSB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9jdXMoKTtcbiAgICAgICAgICAgICAgICByZWNhbGN1bGF0ZUluZGV4ZXModGhpcy5lZGl0b3IuYmxvY2tzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnKCk/LmF1dG9mb2N1cykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lZGl0b3IuY2FyZXQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrSXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYmxvY2tzQ291bnQgPSB0aGlzLmVkaXRvci5ibG9ja3M/LmdldEJsb2Nrc0NvdW50KCkgPz8gMDtcblxuICAgICAgICBpZiAoIWJsb2Nrc0NvdW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFJFREFDVE9SX1NFTEVDVE9SID0gJy5jb2RleC1lZGl0b3JfX3JlZGFjdG9yJztcbiAgICAgICAgY29uc3QgcmVkYWN0b3JUZXh0Q29udGVudCA9IHRoaXMuZWRpdG9yRWxlbWVudC5xdWVyeVNlbGVjdG9yKFJFREFDVE9SX1NFTEVDVE9SKT8udGV4dENvbnRlbnQ/LnRyaW0oKTtcblxuICAgICAgICByZXR1cm4gIXJlZGFjdG9yVGV4dENvbnRlbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldERhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2Nyb2xsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnBvb2xpbmdTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuaXNTa2lwQ29tYmluZWRCbG9ja09uQ2hhbmdlID0gW107XG4gICAgICAgIHRoaXMuaXNGaXJzdCA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNDaGFuZ2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzU2tpcCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzUmVxdWVzdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYmxvY2tJZHNNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgICAgICB0aGlzLmNvbWJpbmVkQmxvY2tzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmluZGV4ID0gMDtcbiAgICAgICAgdGhpcy5wYWdlID0gMDtcbiAgICAgICAgdGhpcy5hZGRlZEJsb2NrcyA9IFtdO1xuICAgICAgICB0aGlzLnVwZGF0ZWRCbG9ja3MgPSBbXTtcbiAgICAgICAgdGhpcy5yZW1vdmVkQmxvY2tzSWRzID0gW107XG4gICAgICAgIHRoaXMuY2hhbmdlc1F1ZXVlID0gW107XG4gICAgICAgIHRoaXMuYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICAjZWRpdG9yXG4gICAgW2lkXT1cImVkaXRvcklkXCJcbiAgICBkYXRhLWVkaXRvclxuICAgIFtjbGFzcy5fcmVhZG9ubHldPVwiY29uZmlnKCkucmVhZE9ubHlcIlxuPjwvZGl2PlxuIl19
|