@payloadcms/ui 3.0.0-alpha.3 → 3.0.0-alpha.30
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/dist/@types/assets.d.js +0 -1
- package/dist/config.js +2 -12
- package/dist/elements/ArrayAction/index.d.ts +1 -1
- package/dist/elements/ArrayAction/index.d.ts.map +1 -1
- package/dist/elements/ArrayAction/index.js +25 -81
- package/dist/elements/ArrayAction/types.js +2 -5
- package/dist/elements/Autosave/index.d.ts +1 -1
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +37 -92
- package/dist/elements/Autosave/types.js +2 -5
- package/dist/elements/Banner/index.d.ts +1 -1
- package/dist/elements/Banner/index.d.ts.map +1 -1
- package/dist/elements/Banner/index.js +11 -34
- package/dist/elements/Banner/types.js +2 -5
- package/dist/elements/Button/index.d.ts +1 -1
- package/dist/elements/Button/index.d.ts.map +1 -1
- package/dist/elements/Button/index.js +34 -93
- package/dist/elements/Button/types.d.ts +1 -1
- package/dist/elements/Button/types.d.ts.map +1 -1
- package/dist/elements/Button/types.js +2 -5
- package/dist/elements/Card/index.d.ts +1 -1
- package/dist/elements/Card/index.d.ts.map +1 -1
- package/dist/elements/Card/index.js +9 -24
- package/dist/elements/Card/types.js +2 -5
- package/dist/elements/CodeEditor/CodeEditor.d.ts +1 -1
- package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
- package/dist/elements/CodeEditor/CodeEditor.js +11 -25
- package/dist/elements/CodeEditor/index.d.ts +1 -1
- package/dist/elements/CodeEditor/index.d.ts.map +1 -1
- package/dist/elements/CodeEditor/index.js +9 -60
- package/dist/elements/CodeEditor/types.js +2 -5
- package/dist/elements/Collapsible/index.d.ts +1 -1
- package/dist/elements/Collapsible/index.d.ts.map +1 -1
- package/dist/elements/Collapsible/index.js +27 -82
- package/dist/elements/Collapsible/provider.js +7 -66
- package/dist/elements/Collapsible/types.d.ts +1 -1
- package/dist/elements/Collapsible/types.d.ts.map +1 -1
- package/dist/elements/Collapsible/types.js +2 -5
- package/dist/elements/ColumnSelector/index.d.ts +1 -1
- package/dist/elements/ColumnSelector/index.d.ts.map +1 -1
- package/dist/elements/ColumnSelector/index.js +20 -76
- package/dist/elements/ColumnSelector/types.js +2 -5
- package/dist/elements/CopyToClipboard/index.d.ts +1 -1
- package/dist/elements/CopyToClipboard/index.d.ts.map +1 -1
- package/dist/elements/CopyToClipboard/index.js +14 -65
- package/dist/elements/CopyToClipboard/types.js +2 -5
- package/dist/elements/DatePicker/DatePicker.d.ts +1 -1
- package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +19 -75
- package/dist/elements/DatePicker/index.d.ts +1 -1
- package/dist/elements/DatePicker/index.d.ts.map +1 -1
- package/dist/elements/DatePicker/index.js +9 -60
- package/dist/elements/DatePicker/types.js +2 -5
- package/dist/elements/DeleteDocument/index.d.ts +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +66 -117
- package/dist/elements/DeleteDocument/types.js +2 -5
- package/dist/elements/DeleteMany/index.d.ts +1 -1
- package/dist/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +39 -103
- package/dist/elements/DeleteMany/types.js +2 -5
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +50 -105
- package/dist/elements/DocumentDrawer/DrawerContent.d.ts +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.js +62 -114
- package/dist/elements/DocumentDrawer/index.d.ts +1 -1
- package/dist/elements/DocumentDrawer/index.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/index.js +33 -98
- package/dist/elements/DocumentDrawer/types.d.ts +2 -2
- package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/types.js +2 -5
- package/dist/elements/DocumentFields/index.d.ts +1 -1
- package/dist/elements/DocumentFields/index.d.ts.map +1 -1
- package/dist/elements/DocumentFields/index.js +16 -31
- package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js +4 -14
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +18 -26
- package/dist/elements/DocumentHeader/Tabs/Tab/index.js +9 -68
- package/dist/elements/DocumentHeader/Tabs/getCustomViews.js +5 -15
- package/dist/elements/DocumentHeader/Tabs/getViewConfig.js +2 -12
- package/dist/elements/DocumentHeader/Tabs/index.js +18 -33
- package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +8 -23
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js +5 -23
- package/dist/elements/DocumentHeader/index.js +10 -66
- package/dist/elements/DraggableSortable/DraggableSortableItem/index.d.ts +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/index.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +7 -66
- package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/types.js +2 -5
- package/dist/elements/DraggableSortable/index.d.ts +1 -1
- package/dist/elements/DraggableSortable/index.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/index.js +15 -66
- package/dist/elements/DraggableSortable/types.js +2 -5
- package/dist/elements/DraggableSortable/useDraggableSortable/index.d.ts +1 -1
- package/dist/elements/DraggableSortable/useDraggableSortable/index.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/useDraggableSortable/index.js +4 -14
- package/dist/elements/DraggableSortable/useDraggableSortable/types.js +2 -5
- package/dist/elements/Drawer/index.d.ts +2 -2
- package/dist/elements/Drawer/index.d.ts.map +1 -1
- package/dist/elements/Drawer/index.js +32 -94
- package/dist/elements/Drawer/types.js +2 -5
- package/dist/elements/Drawer/useDrawerSlug.js +10 -20
- package/dist/elements/Dropzone/index.js +20 -35
- package/dist/elements/DuplicateDocument/index.d.ts +1 -1
- package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/elements/DuplicateDocument/index.js +34 -84
- package/dist/elements/DuplicateDocument/types.js +2 -5
- package/dist/elements/EditMany/index.d.ts +1 -1
- package/dist/elements/EditMany/index.d.ts.map +1 -1
- package/dist/elements/EditMany/index.js +73 -126
- package/dist/elements/EditMany/types.js +2 -5
- package/dist/elements/EditUpload/index.d.ts.map +1 -1
- package/dist/elements/EditUpload/index.js +73 -127
- package/dist/elements/ErrorPill/index.d.ts +1 -1
- package/dist/elements/ErrorPill/index.d.ts.map +1 -1
- package/dist/elements/ErrorPill/index.js +7 -22
- package/dist/elements/ErrorPill/types.js +2 -5
- package/dist/elements/FieldSelect/index.js +23 -79
- package/dist/elements/FileDetails/FileMeta/index.d.ts +1 -1
- package/dist/elements/FileDetails/FileMeta/index.d.ts.map +1 -1
- package/dist/elements/FileDetails/FileMeta/index.js +19 -75
- package/dist/elements/FileDetails/FileMeta/types.js +2 -5
- package/dist/elements/FileDetails/index.d.ts +1 -1
- package/dist/elements/FileDetails/index.d.ts.map +1 -1
- package/dist/elements/FileDetails/index.js +15 -30
- package/dist/elements/FileDetails/types.js +2 -5
- package/dist/elements/GenerateConfirmation/index.d.ts +1 -1
- package/dist/elements/GenerateConfirmation/index.d.ts.map +1 -1
- package/dist/elements/GenerateConfirmation/index.js +22 -37
- package/dist/elements/GenerateConfirmation/types.js +2 -5
- package/dist/elements/GetFilterOptions/index.d.ts +1 -1
- package/dist/elements/GetFilterOptions/index.d.ts.map +1 -1
- package/dist/elements/GetFilterOptions/index.js +18 -33
- package/dist/elements/Gutter/index.js +5 -56
- package/dist/elements/Hamburger/index.js +18 -33
- package/dist/elements/Header/index.d.ts.map +1 -1
- package/dist/elements/Header/index.js +40 -95
- package/dist/elements/HydrateClientUser/index.d.ts +1 -1
- package/dist/elements/HydrateClientUser/index.js +6 -16
- package/dist/elements/IDLabel/index.js +5 -20
- package/dist/elements/ListControls/getTextFieldsToBeSearched.js +6 -16
- package/dist/elements/ListControls/index.d.ts +1 -1
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +53 -104
- package/dist/elements/ListControls/types.d.ts +1 -1
- package/dist/elements/ListControls/types.d.ts.map +1 -1
- package/dist/elements/ListControls/types.js +2 -5
- package/dist/elements/ListDrawer/DrawerContent.d.ts +1 -1
- package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js +73 -129
- package/dist/elements/ListDrawer/index.d.ts +1 -1
- package/dist/elements/ListDrawer/index.d.ts.map +1 -1
- package/dist/elements/ListDrawer/index.js +32 -100
- package/dist/elements/ListDrawer/types.d.ts +1 -1
- package/dist/elements/ListDrawer/types.d.ts.map +1 -1
- package/dist/elements/ListDrawer/types.js +2 -5
- package/dist/elements/ListSelection/index.js +11 -62
- package/dist/elements/Loading/index.d.ts +1 -1
- package/dist/elements/Loading/index.d.ts.map +1 -1
- package/dist/elements/Loading/index.js +29 -55
- package/dist/elements/LoadingOverlay/index.d.ts +1 -1
- package/dist/elements/LoadingOverlay/index.d.ts.map +1 -1
- package/dist/elements/LoadingOverlay/index.js +25 -87
- package/dist/elements/LoadingOverlay/reducer.d.ts +1 -1
- package/dist/elements/LoadingOverlay/reducer.d.ts.map +1 -1
- package/dist/elements/LoadingOverlay/reducer.js +6 -24
- package/dist/elements/LoadingOverlay/types.js +2 -5
- package/dist/elements/Localizer/LocalizerLabel/index.js +15 -30
- package/dist/elements/Localizer/index.d.ts.map +1 -1
- package/dist/elements/Localizer/index.js +37 -95
- package/dist/elements/Logout/index.js +13 -28
- package/dist/elements/Nav/NavHamburger/index.js +8 -23
- package/dist/elements/Nav/NavToggler/index.js +13 -28
- package/dist/elements/Nav/NavWrapper/index.js +8 -23
- package/dist/elements/Nav/context.js +20 -82
- package/dist/elements/Nav/index.d.ts.map +1 -1
- package/dist/elements/Nav/index.js +37 -51
- package/dist/elements/NavGroup/index.d.ts.map +1 -1
- package/dist/elements/NavGroup/index.js +24 -79
- package/dist/elements/Pagination/ClickableArrow/index.d.ts +1 -1
- package/dist/elements/Pagination/ClickableArrow/index.d.ts.map +1 -1
- package/dist/elements/Pagination/ClickableArrow/index.js +7 -22
- package/dist/elements/Pagination/ClickableArrow/types.js +2 -5
- package/dist/elements/Pagination/Page/index.d.ts +1 -1
- package/dist/elements/Pagination/Page/index.d.ts.map +1 -1
- package/dist/elements/Pagination/Page/index.js +4 -19
- package/dist/elements/Pagination/Page/types.js +2 -5
- package/dist/elements/Pagination/Separator/index.js +4 -19
- package/dist/elements/Pagination/index.d.ts +1 -1
- package/dist/elements/Pagination/index.d.ts.map +1 -1
- package/dist/elements/Pagination/index.js +28 -43
- package/dist/elements/Pagination/types.js +2 -5
- package/dist/elements/PerPage/index.js +28 -83
- package/dist/elements/Pill/index.d.ts +1 -1
- package/dist/elements/Pill/index.d.ts.map +1 -1
- package/dist/elements/Pill/index.js +17 -40
- package/dist/elements/Pill/types.js +2 -5
- package/dist/elements/Popup/PopupButtonList/index.d.ts +1 -1
- package/dist/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
- package/dist/elements/Popup/PopupButtonList/index.js +11 -75
- package/dist/elements/Popup/PopupTrigger/index.d.ts +1 -1
- package/dist/elements/Popup/PopupTrigger/index.d.ts.map +1 -1
- package/dist/elements/Popup/PopupTrigger/index.js +6 -21
- package/dist/elements/Popup/PopupTrigger/types.d.ts +1 -1
- package/dist/elements/Popup/PopupTrigger/types.js +2 -5
- package/dist/elements/Popup/index.d.ts +1 -1
- package/dist/elements/Popup/index.d.ts.map +1 -1
- package/dist/elements/Popup/index.js +29 -80
- package/dist/elements/Popup/types.js +2 -5
- package/dist/elements/PreviewButton/index.js +22 -73
- package/dist/elements/PreviewSizes/index.js +24 -80
- package/dist/elements/Publish/index.js +23 -79
- package/dist/elements/PublishMany/index.d.ts +1 -1
- package/dist/elements/PublishMany/index.d.ts.map +1 -1
- package/dist/elements/PublishMany/index.js +38 -94
- package/dist/elements/PublishMany/types.js +2 -5
- package/dist/elements/ReactSelect/ClearIndicator/index.d.ts +1 -1
- package/dist/elements/ReactSelect/ClearIndicator/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/ClearIndicator/index.js +7 -22
- package/dist/elements/ReactSelect/Control/index.d.ts +1 -1
- package/dist/elements/ReactSelect/Control/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/Control/index.js +6 -22
- package/dist/elements/ReactSelect/MultiValue/index.d.ts +1 -1
- package/dist/elements/ReactSelect/MultiValue/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/MultiValue/index.js +8 -23
- package/dist/elements/ReactSelect/MultiValueLabel/index.d.ts +1 -1
- package/dist/elements/ReactSelect/MultiValueLabel/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/MultiValueLabel/index.js +8 -23
- package/dist/elements/ReactSelect/MultiValueRemove/index.d.ts +1 -1
- package/dist/elements/ReactSelect/MultiValueRemove/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/MultiValueRemove/index.js +12 -27
- package/dist/elements/ReactSelect/SingleValue/index.d.ts +1 -1
- package/dist/elements/ReactSelect/SingleValue/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/SingleValue/index.js +5 -20
- package/dist/elements/ReactSelect/ValueContainer/index.d.ts +1 -1
- package/dist/elements/ReactSelect/ValueContainer/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/ValueContainer/index.js +8 -23
- package/dist/elements/ReactSelect/index.d.ts +1 -1
- package/dist/elements/ReactSelect/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/index.js +45 -60
- package/dist/elements/ReactSelect/types.d.ts +2 -2
- package/dist/elements/ReactSelect/types.d.ts.map +1 -1
- package/dist/elements/ReactSelect/types.js +2 -5
- package/dist/elements/RenderCustomComponent/index.js +5 -20
- package/dist/elements/RenderCustomComponent/types.js +2 -5
- package/dist/elements/RenderTitle/index.d.ts +1 -1
- package/dist/elements/RenderTitle/index.d.ts.map +1 -1
- package/dist/elements/RenderTitle/index.js +11 -26
- package/dist/elements/RenderTitle/types.d.ts +1 -1
- package/dist/elements/RenderTitle/types.d.ts.map +1 -1
- package/dist/elements/RenderTitle/types.js +2 -5
- package/dist/elements/Save/index.js +16 -72
- package/dist/elements/SaveDraft/index.js +24 -80
- package/dist/elements/SearchFilter/index.d.ts +1 -1
- package/dist/elements/SearchFilter/index.d.ts.map +1 -1
- package/dist/elements/SearchFilter/index.js +31 -86
- package/dist/elements/SearchFilter/types.js +2 -5
- package/dist/elements/SelectAll/index.d.ts.map +1 -1
- package/dist/elements/SelectAll/index.js +13 -26
- package/dist/elements/SelectRow/index.d.ts.map +1 -1
- package/dist/elements/SelectRow/index.js +10 -23
- package/dist/elements/ShimmerEffect/index.js +12 -71
- package/dist/elements/SortColumn/index.d.ts +1 -1
- package/dist/elements/SortColumn/index.d.ts.map +1 -1
- package/dist/elements/SortColumn/index.js +27 -90
- package/dist/elements/SortColumn/types.js +2 -5
- package/dist/elements/SortComplex/index.d.ts +1 -1
- package/dist/elements/SortComplex/index.d.ts.map +1 -1
- package/dist/elements/SortComplex/index.js +35 -90
- package/dist/elements/SortComplex/types.js +2 -5
- package/dist/elements/Status/index.js +38 -88
- package/dist/elements/StayLoggedIn/index.d.ts +1 -1
- package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
- package/dist/elements/StayLoggedIn/index.js +20 -34
- package/dist/elements/StayLoggedIn/types.js +2 -5
- package/dist/elements/StepNav/SetStepNav.d.ts +2 -2
- package/dist/elements/StepNav/SetStepNav.d.ts.map +1 -1
- package/dist/elements/StepNav/SetStepNav.js +6 -16
- package/dist/elements/StepNav/index.d.ts +1 -1
- package/dist/elements/StepNav/index.d.ts.map +1 -1
- package/dist/elements/StepNav/index.js +27 -93
- package/dist/elements/StepNav/types.js +2 -5
- package/dist/elements/Table/TableCellProvider/index.js +9 -32
- package/dist/elements/Table/index.d.ts +1 -1
- package/dist/elements/Table/index.d.ts.map +1 -1
- package/dist/elements/Table/index.js +15 -38
- package/dist/elements/Table/types.js +2 -5
- package/dist/elements/TableColumns/buildColumns.d.ts +3 -3
- package/dist/elements/TableColumns/buildColumns.d.ts.map +1 -1
- package/dist/elements/TableColumns/buildColumns.js +7 -16
- package/dist/elements/TableColumns/columnReducer.d.ts +1 -1
- package/dist/elements/TableColumns/columnReducer.d.ts.map +1 -1
- package/dist/elements/TableColumns/columnReducer.js +2 -12
- package/dist/elements/TableColumns/index.d.ts +3 -3
- package/dist/elements/TableColumns/index.d.ts.map +1 -1
- package/dist/elements/TableColumns/index.js +24 -86
- package/dist/elements/Thumbnail/index.d.ts +1 -1
- package/dist/elements/Thumbnail/index.d.ts.map +1 -1
- package/dist/elements/Thumbnail/index.js +12 -68
- package/dist/elements/Thumbnail/types.js +2 -5
- package/dist/elements/ThumbnailCard/index.d.ts +1 -1
- package/dist/elements/ThumbnailCard/index.d.ts.map +1 -1
- package/dist/elements/ThumbnailCard/index.js +13 -28
- package/dist/elements/ThumbnailCard/types.d.ts +1 -1
- package/dist/elements/ThumbnailCard/types.js +2 -5
- package/dist/elements/Tooltip/index.d.ts +1 -1
- package/dist/elements/Tooltip/index.d.ts.map +1 -1
- package/dist/elements/Tooltip/index.js +14 -65
- package/dist/elements/Tooltip/types.d.ts +1 -1
- package/dist/elements/Tooltip/types.js +2 -5
- package/dist/elements/Translation/index.js +7 -58
- package/dist/elements/UnpublishMany/index.d.ts +1 -1
- package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/index.js +38 -94
- package/dist/elements/UnpublishMany/types.js +2 -5
- package/dist/elements/Upload/index.d.ts +1 -1
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +55 -127
- package/dist/elements/Upload/types.d.ts +1 -2
- package/dist/elements/Upload/types.d.ts.map +1 -1
- package/dist/elements/Upload/types.js +2 -5
- package/dist/elements/ViewDescription/index.d.ts +1 -1
- package/dist/elements/ViewDescription/index.d.ts.map +1 -1
- package/dist/elements/ViewDescription/index.js +12 -27
- package/dist/elements/ViewDescription/types.js +4 -19
- package/dist/elements/WhereBuilder/Condition/Date/index.d.ts +1 -1
- package/dist/elements/WhereBuilder/Condition/Date/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Date/index.js +6 -21
- package/dist/elements/WhereBuilder/Condition/Date/types.d.ts +1 -1
- package/dist/elements/WhereBuilder/Condition/Date/types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Date/types.js +2 -5
- package/dist/elements/WhereBuilder/Condition/Number/index.d.ts +1 -1
- package/dist/elements/WhereBuilder/Condition/Number/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Number/index.js +7 -22
- package/dist/elements/WhereBuilder/Condition/Number/types.js +2 -5
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +32 -88
- package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.d.ts +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.js +5 -15
- package/dist/elements/WhereBuilder/Condition/Relationship/types.js +2 -5
- package/dist/elements/WhereBuilder/Condition/Select/index.d.ts +1 -1
- package/dist/elements/WhereBuilder/Condition/Select/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Select/index.js +15 -30
- package/dist/elements/WhereBuilder/Condition/Select/types.js +2 -5
- package/dist/elements/WhereBuilder/Condition/Text/index.d.ts +1 -1
- package/dist/elements/WhereBuilder/Condition/Text/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Text/index.js +7 -22
- package/dist/elements/WhereBuilder/Condition/Text/types.js +2 -5
- package/dist/elements/WhereBuilder/Condition/index.d.ts +1 -1
- package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.js +47 -103
- package/dist/elements/WhereBuilder/Condition/types.d.ts +1 -1
- package/dist/elements/WhereBuilder/Condition/types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/types.js +2 -5
- package/dist/elements/WhereBuilder/field-types.js +2 -12
- package/dist/elements/WhereBuilder/index.d.ts +1 -1
- package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/index.js +43 -98
- package/dist/elements/WhereBuilder/reducer.d.ts +1 -1
- package/dist/elements/WhereBuilder/reducer.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/reducer.js +2 -12
- package/dist/elements/WhereBuilder/transformWhereQuery.js +6 -12
- package/dist/elements/WhereBuilder/types.js +2 -5
- package/dist/elements/WhereBuilder/validateWhereQuery.js +4 -14
- package/dist/exports/assets.js +3 -26
- package/dist/exports/elements.d.ts +48 -47
- package/dist/exports/elements.d.ts.map +1 -1
- package/dist/exports/elements.js +48 -245
- package/dist/exports/forms.d.ts +40 -39
- package/dist/exports/forms.d.ts.map +1 -1
- package/dist/exports/forms.js +36 -157
- package/dist/exports/graphics.d.ts +2 -2
- package/dist/exports/graphics.d.ts.map +1 -1
- package/dist/exports/graphics.js +3 -26
- package/dist/exports/hooks.d.ts +7 -7
- package/dist/exports/hooks.d.ts.map +1 -1
- package/dist/exports/hooks.js +10 -54
- package/dist/exports/icons.d.ts +17 -17
- package/dist/exports/icons.d.ts.map +1 -1
- package/dist/exports/icons.js +18 -81
- package/dist/exports/index.d.ts +9 -9
- package/dist/exports/index.d.ts.map +1 -1
- package/dist/exports/index.js +10 -27
- package/dist/exports/providers.d.ts +27 -26
- package/dist/exports/providers.d.ts.map +1 -1
- package/dist/exports/providers.js +24 -115
- package/dist/exports/templates.d.ts +2 -2
- package/dist/exports/templates.d.ts.map +1 -1
- package/dist/exports/templates.js +3 -21
- package/dist/exports/types.d.ts +2 -1
- package/dist/exports/types.d.ts.map +1 -1
- package/dist/exports/types.js +2 -5
- package/dist/exports/utilities.d.ts +13 -13
- package/dist/exports/utilities.d.ts.map +1 -1
- package/dist/exports/utilities.js +11 -61
- package/dist/forms/Error/index.js +11 -26
- package/dist/forms/FieldDescription/index.d.ts +1 -1
- package/dist/forms/FieldDescription/index.d.ts.map +1 -1
- package/dist/forms/FieldDescription/index.js +9 -24
- package/dist/forms/FieldDescription/types.js +2 -5
- package/dist/forms/FieldPathProvider/index.d.ts.map +1 -1
- package/dist/forms/FieldPathProvider/index.js +7 -30
- package/dist/forms/Form/buildFieldSchemaMap.js +14 -14
- package/dist/forms/Form/context.d.ts +2 -2
- package/dist/forms/Form/context.d.ts.map +1 -1
- package/dist/forms/Form/context.js +17 -67
- package/dist/forms/Form/createNestedFieldPath.js +5 -15
- package/dist/forms/Form/errorMessages.js +2 -12
- package/dist/forms/Form/fieldReducer.d.ts +2 -1
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +26 -38
- package/dist/forms/Form/getDataByPath.d.ts +1 -1
- package/dist/forms/Form/getDataByPath.d.ts.map +1 -1
- package/dist/forms/Form/getDataByPath.js +4 -14
- package/dist/forms/Form/getSiblingData.d.ts +1 -2
- package/dist/forms/Form/getSiblingData.d.ts.map +1 -1
- package/dist/forms/Form/getSiblingData.js +6 -21
- package/dist/forms/Form/index.d.ts +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +97 -157
- package/dist/forms/Form/initContextState.d.ts +1 -1
- package/dist/forms/Form/initContextState.d.ts.map +1 -1
- package/dist/forms/Form/initContextState.js +2 -12
- package/dist/forms/Form/mergeServerFormState.d.ts +1 -1
- package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
- package/dist/forms/Form/mergeServerFormState.js +5 -15
- package/dist/forms/Form/reduceFieldsToValues.d.ts +1 -2
- package/dist/forms/Form/reduceFieldsToValues.d.ts.map +1 -1
- package/dist/forms/Form/reduceFieldsToValues.js +4 -14
- package/dist/forms/Form/rows.d.ts +1 -1
- package/dist/forms/Form/rows.d.ts.map +1 -1
- package/dist/forms/Form/rows.js +3 -21
- package/dist/forms/Form/types.d.ts +2 -23
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js +2 -5
- package/dist/forms/Label/index.js +9 -24
- package/dist/forms/NullifyField/index.d.ts.map +1 -1
- package/dist/forms/NullifyField/index.js +16 -72
- package/dist/forms/ReadOnlyProvider/index.d.ts +7 -0
- package/dist/forms/ReadOnlyProvider/index.d.ts.map +1 -0
- package/dist/forms/ReadOnlyProvider/index.js +15 -0
- package/dist/forms/RenderFields/RenderField.d.ts +3 -0
- package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
- package/dist/forms/RenderFields/RenderField.js +27 -23
- package/dist/forms/RenderFields/index.d.ts +1 -1
- package/dist/forms/RenderFields/index.d.ts.map +1 -1
- package/dist/forms/RenderFields/index.js +16 -29
- package/dist/forms/RenderFields/types.d.ts +3 -1
- package/dist/forms/RenderFields/types.d.ts.map +1 -1
- package/dist/forms/RenderFields/types.js +2 -5
- package/dist/forms/RowLabel/index.d.ts +1 -1
- package/dist/forms/RowLabel/index.d.ts.map +1 -1
- package/dist/forms/RowLabel/index.js +13 -28
- package/dist/forms/RowLabel/types.d.ts +1 -2
- package/dist/forms/RowLabel/types.d.ts.map +1 -1
- package/dist/forms/RowLabel/types.js +4 -19
- package/dist/forms/Submit/index.d.ts +1 -1
- package/dist/forms/Submit/index.d.ts.map +1 -1
- package/dist/forms/Submit/index.js +11 -62
- package/dist/forms/WatchChildErrors/buildPathSegments.d.ts +1 -1
- package/dist/forms/WatchChildErrors/buildPathSegments.d.ts.map +1 -1
- package/dist/forms/WatchChildErrors/buildPathSegments.js +2 -12
- package/dist/forms/WatchChildErrors/getFieldStateFromPaths.d.ts +1 -1
- package/dist/forms/WatchChildErrors/getFieldStateFromPaths.js +2 -12
- package/dist/forms/WatchChildErrors/getNestedFieldState.d.ts +1 -2
- package/dist/forms/WatchChildErrors/getNestedFieldState.d.ts.map +1 -1
- package/dist/forms/WatchChildErrors/getNestedFieldState.js +5 -14
- package/dist/forms/WatchChildErrors/index.d.ts +1 -1
- package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
- package/dist/forms/WatchChildErrors/index.js +11 -26
- package/dist/forms/fields/Array/ArrayRow.d.ts +3 -4
- package/dist/forms/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/forms/fields/Array/ArrayRow.js +24 -39
- package/dist/forms/fields/Array/index.d.ts +1 -1
- package/dist/forms/fields/Array/index.d.ts.map +1 -1
- package/dist/forms/fields/Array/index.js +59 -115
- package/dist/forms/fields/Array/types.d.ts +1 -1
- package/dist/forms/fields/Array/types.d.ts.map +1 -1
- package/dist/forms/fields/Array/types.js +2 -5
- package/dist/forms/fields/Blocks/BlockRow.d.ts +3 -4
- package/dist/forms/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/forms/fields/Blocks/BlockRow.js +27 -42
- package/dist/forms/fields/Blocks/BlocksDrawer/BlockSearch/index.js +10 -25
- package/dist/forms/fields/Blocks/BlocksDrawer/index.d.ts +1 -1
- package/dist/forms/fields/Blocks/BlocksDrawer/index.d.ts.map +1 -1
- package/dist/forms/fields/Blocks/BlocksDrawer/index.js +29 -85
- package/dist/forms/fields/Blocks/BlocksDrawer/types.d.ts +1 -1
- package/dist/forms/fields/Blocks/BlocksDrawer/types.d.ts.map +1 -1
- package/dist/forms/fields/Blocks/BlocksDrawer/types.js +2 -5
- package/dist/forms/fields/Blocks/RowActions.d.ts +1 -1
- package/dist/forms/fields/Blocks/RowActions.d.ts.map +1 -1
- package/dist/forms/fields/Blocks/RowActions.js +12 -27
- package/dist/forms/fields/Blocks/SectionTitle/index.d.ts +1 -1
- package/dist/forms/fields/Blocks/SectionTitle/index.d.ts.map +1 -1
- package/dist/forms/fields/Blocks/SectionTitle/index.js +10 -25
- package/dist/forms/fields/Blocks/SectionTitle/types.d.ts +1 -1
- package/dist/forms/fields/Blocks/SectionTitle/types.js +2 -5
- package/dist/forms/fields/Blocks/index.d.ts +1 -1
- package/dist/forms/fields/Blocks/index.d.ts.map +1 -1
- package/dist/forms/fields/Blocks/index.js +78 -133
- package/dist/forms/fields/Blocks/types.d.ts +1 -1
- package/dist/forms/fields/Blocks/types.d.ts.map +1 -1
- package/dist/forms/fields/Blocks/types.js +2 -5
- package/dist/forms/fields/Checkbox/Input.d.ts.map +1 -1
- package/dist/forms/fields/Checkbox/Input.js +11 -33
- package/dist/forms/fields/Checkbox/index.d.ts +1 -1
- package/dist/forms/fields/Checkbox/index.d.ts.map +1 -1
- package/dist/forms/fields/Checkbox/index.js +19 -75
- package/dist/forms/fields/Checkbox/types.d.ts +1 -1
- package/dist/forms/fields/Checkbox/types.d.ts.map +1 -1
- package/dist/forms/fields/Checkbox/types.js +2 -5
- package/dist/forms/fields/Code/index.d.ts +1 -1
- package/dist/forms/fields/Code/index.d.ts.map +1 -1
- package/dist/forms/fields/Code/index.js +15 -71
- package/dist/forms/fields/Code/types.d.ts +1 -1
- package/dist/forms/fields/Code/types.d.ts.map +1 -1
- package/dist/forms/fields/Code/types.js +2 -5
- package/dist/forms/fields/Collapsible/index.d.ts +1 -1
- package/dist/forms/fields/Collapsible/index.d.ts.map +1 -1
- package/dist/forms/fields/Collapsible/index.js +31 -87
- package/dist/forms/fields/Collapsible/types.d.ts +1 -1
- package/dist/forms/fields/Collapsible/types.d.ts.map +1 -1
- package/dist/forms/fields/Collapsible/types.js +2 -5
- package/dist/forms/fields/ConfirmPassword/index.d.ts +1 -1
- package/dist/forms/fields/ConfirmPassword/index.d.ts.map +1 -1
- package/dist/forms/fields/ConfirmPassword/index.js +19 -75
- package/dist/forms/fields/ConfirmPassword/types.js +2 -5
- package/dist/forms/fields/DateTime/index.d.ts +1 -1
- package/dist/forms/fields/DateTime/index.d.ts.map +1 -1
- package/dist/forms/fields/DateTime/index.js +18 -74
- package/dist/forms/fields/DateTime/types.d.ts +1 -1
- package/dist/forms/fields/DateTime/types.d.ts.map +1 -1
- package/dist/forms/fields/DateTime/types.js +2 -5
- package/dist/forms/fields/Email/index.d.ts +1 -1
- package/dist/forms/fields/Email/index.d.ts.map +1 -1
- package/dist/forms/fields/Email/index.js +19 -83
- package/dist/forms/fields/Email/types.d.ts +1 -1
- package/dist/forms/fields/Email/types.d.ts.map +1 -1
- package/dist/forms/fields/Email/types.js +2 -5
- package/dist/forms/fields/Group/index.d.ts +1 -1
- package/dist/forms/fields/Group/index.d.ts.map +1 -1
- package/dist/forms/fields/Group/index.js +32 -88
- package/dist/forms/fields/Group/provider.js +7 -69
- package/dist/forms/fields/Group/types.d.ts +1 -1
- package/dist/forms/fields/Group/types.d.ts.map +1 -1
- package/dist/forms/fields/Group/types.js +2 -5
- package/dist/forms/fields/HiddenInput/index.d.ts +1 -1
- package/dist/forms/fields/HiddenInput/index.d.ts.map +1 -1
- package/dist/forms/fields/HiddenInput/index.js +8 -64
- package/dist/forms/fields/HiddenInput/types.js +2 -5
- package/dist/forms/fields/JSON/index.d.ts +1 -1
- package/dist/forms/fields/JSON/index.d.ts.map +1 -1
- package/dist/forms/fields/JSON/index.js +20 -76
- package/dist/forms/fields/JSON/types.d.ts +1 -1
- package/dist/forms/fields/JSON/types.d.ts.map +1 -1
- package/dist/forms/fields/JSON/types.js +2 -5
- package/dist/forms/fields/Number/index.d.ts +1 -1
- package/dist/forms/fields/Number/index.d.ts.map +1 -1
- package/dist/forms/fields/Number/index.js +26 -82
- package/dist/forms/fields/Number/types.d.ts +1 -1
- package/dist/forms/fields/Number/types.d.ts.map +1 -1
- package/dist/forms/fields/Number/types.js +2 -5
- package/dist/forms/fields/Password/index.d.ts +1 -1
- package/dist/forms/fields/Password/index.d.ts.map +1 -1
- package/dist/forms/fields/Password/index.js +15 -79
- package/dist/forms/fields/Password/types.d.ts +1 -1
- package/dist/forms/fields/Password/types.d.ts.map +1 -1
- package/dist/forms/fields/Password/types.js +2 -5
- package/dist/forms/fields/Point/index.d.ts +1 -1
- package/dist/forms/fields/Point/index.d.ts.map +1 -1
- package/dist/forms/fields/Point/index.js +24 -80
- package/dist/forms/fields/Point/types.d.ts +1 -1
- package/dist/forms/fields/Point/types.d.ts.map +1 -1
- package/dist/forms/fields/Point/types.js +2 -5
- package/dist/forms/fields/RadioGroup/Radio/index.d.ts +1 -1
- package/dist/forms/fields/RadioGroup/Radio/index.d.ts.map +1 -1
- package/dist/forms/fields/RadioGroup/Radio/index.js +13 -28
- package/dist/forms/fields/RadioGroup/index.d.ts +1 -1
- package/dist/forms/fields/RadioGroup/index.d.ts.map +1 -1
- package/dist/forms/fields/RadioGroup/index.js +23 -79
- package/dist/forms/fields/RadioGroup/types.d.ts +1 -1
- package/dist/forms/fields/RadioGroup/types.d.ts.map +1 -1
- package/dist/forms/fields/RadioGroup/types.js +2 -5
- package/dist/forms/fields/Relationship/AddNew/index.d.ts +1 -1
- package/dist/forms/fields/Relationship/AddNew/index.d.ts.map +1 -1
- package/dist/forms/fields/Relationship/AddNew/index.js +43 -99
- package/dist/forms/fields/Relationship/AddNew/types.d.ts +1 -1
- package/dist/forms/fields/Relationship/AddNew/types.d.ts.map +1 -1
- package/dist/forms/fields/Relationship/AddNew/types.js +2 -5
- package/dist/forms/fields/Relationship/AddNew/useRelatedCollections.js +6 -16
- package/dist/forms/fields/Relationship/createRelationMap.d.ts +1 -1
- package/dist/forms/fields/Relationship/createRelationMap.d.ts.map +1 -1
- package/dist/forms/fields/Relationship/createRelationMap.js +2 -12
- package/dist/forms/fields/Relationship/findOptionsByValue.d.ts +2 -2
- package/dist/forms/fields/Relationship/findOptionsByValue.d.ts.map +1 -1
- package/dist/forms/fields/Relationship/findOptionsByValue.js +2 -12
- package/dist/forms/fields/Relationship/index.d.ts +1 -1
- package/dist/forms/fields/Relationship/index.d.ts.map +1 -1
- package/dist/forms/fields/Relationship/index.js +64 -120
- package/dist/forms/fields/Relationship/optionsReducer.d.ts +1 -1
- package/dist/forms/fields/Relationship/optionsReducer.d.ts.map +1 -1
- package/dist/forms/fields/Relationship/optionsReducer.js +7 -17
- package/dist/forms/fields/Relationship/select-components/MultiValueLabel/index.d.ts +1 -1
- package/dist/forms/fields/Relationship/select-components/MultiValueLabel/index.d.ts.map +1 -1
- package/dist/forms/fields/Relationship/select-components/MultiValueLabel/index.js +21 -72
- package/dist/forms/fields/Relationship/select-components/SingleValue/index.d.ts +1 -1
- package/dist/forms/fields/Relationship/select-components/SingleValue/index.d.ts.map +1 -1
- package/dist/forms/fields/Relationship/select-components/SingleValue/index.js +22 -73
- package/dist/forms/fields/Relationship/types.d.ts +1 -1
- package/dist/forms/fields/Relationship/types.d.ts.map +1 -1
- package/dist/forms/fields/Relationship/types.js +2 -5
- package/dist/forms/fields/RichText/index.d.ts +1 -1
- package/dist/forms/fields/RichText/index.d.ts.map +1 -1
- package/dist/forms/fields/RichText/index.js +2 -12
- package/dist/forms/fields/RichText/types.d.ts +1 -1
- package/dist/forms/fields/RichText/types.d.ts.map +1 -1
- package/dist/forms/fields/RichText/types.js +2 -5
- package/dist/forms/fields/Row/index.d.ts +1 -1
- package/dist/forms/fields/Row/index.d.ts.map +1 -1
- package/dist/forms/fields/Row/index.js +11 -26
- package/dist/forms/fields/Row/provider.js +7 -69
- package/dist/forms/fields/Row/types.d.ts +1 -1
- package/dist/forms/fields/Row/types.d.ts.map +1 -1
- package/dist/forms/fields/Row/types.js +2 -5
- package/dist/forms/fields/Select/index.d.ts +1 -1
- package/dist/forms/fields/Select/index.d.ts.map +1 -1
- package/dist/forms/fields/Select/index.js +24 -88
- package/dist/forms/fields/Select/types.d.ts +1 -1
- package/dist/forms/fields/Select/types.d.ts.map +1 -1
- package/dist/forms/fields/Select/types.js +2 -5
- package/dist/forms/fields/Tabs/Tab/index.d.ts +1 -1
- package/dist/forms/fields/Tabs/Tab/index.d.ts.map +1 -1
- package/dist/forms/fields/Tabs/Tab/index.js +13 -64
- package/dist/forms/fields/Tabs/index.d.ts +1 -1
- package/dist/forms/fields/Tabs/index.d.ts.map +1 -1
- package/dist/forms/fields/Tabs/index.js +35 -91
- package/dist/forms/fields/Tabs/provider.js +7 -69
- package/dist/forms/fields/Tabs/types.d.ts +1 -1
- package/dist/forms/fields/Tabs/types.d.ts.map +1 -1
- package/dist/forms/fields/Tabs/types.js +2 -5
- package/dist/forms/fields/Text/Input.d.ts +18 -0
- package/dist/forms/fields/Text/Input.d.ts.map +1 -0
- package/dist/forms/fields/Text/Input.js +62 -0
- package/dist/forms/fields/Text/index.d.ts +1 -1
- package/dist/forms/fields/Text/index.d.ts.map +1 -1
- package/dist/forms/fields/Text/index.js +44 -129
- package/dist/forms/fields/Text/types.d.ts +4 -4
- package/dist/forms/fields/Text/types.d.ts.map +1 -1
- package/dist/forms/fields/Text/types.js +2 -5
- package/dist/forms/fields/Textarea/Input.d.ts +11 -0
- package/dist/forms/fields/Textarea/Input.d.ts.map +1 -0
- package/dist/forms/fields/Textarea/Input.js +43 -0
- package/dist/forms/fields/Textarea/index.d.ts +1 -1
- package/dist/forms/fields/Textarea/index.d.ts.map +1 -1
- package/dist/forms/fields/Textarea/index.js +39 -104
- package/dist/forms/fields/Textarea/types.d.ts +1 -1
- package/dist/forms/fields/Textarea/types.d.ts.map +1 -1
- package/dist/forms/fields/Textarea/types.js +2 -5
- package/dist/forms/fields/UI/index.js +2 -12
- package/dist/forms/fields/Upload/Input.d.ts +15 -1
- package/dist/forms/fields/Upload/Input.d.ts.map +1 -1
- package/dist/forms/fields/Upload/Input.js +127 -2
- package/dist/forms/fields/Upload/index.d.ts +1 -1
- package/dist/forms/fields/Upload/index.d.ts.map +1 -1
- package/dist/forms/fields/Upload/index.js +32 -180
- package/dist/forms/fields/Upload/types.d.ts +1 -1
- package/dist/forms/fields/Upload/types.d.ts.map +1 -1
- package/dist/forms/fields/Upload/types.js +2 -5
- package/dist/forms/fields/getFilterOptionsQuery.js +2 -12
- package/dist/forms/fields/index.js +50 -65
- package/dist/forms/fields/shared.d.ts +5 -5
- package/dist/forms/fields/shared.d.ts.map +1 -1
- package/dist/forms/fields/shared.js +7 -21
- package/dist/forms/useField/index.d.ts +1 -1
- package/dist/forms/useField/index.d.ts.map +1 -1
- package/dist/forms/useField/index.js +30 -41
- package/dist/forms/useField/types.d.ts +2 -2
- package/dist/forms/useField/types.d.ts.map +1 -1
- package/dist/forms/useField/types.js +2 -5
- package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.d.ts +1 -2
- package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js +22 -33
- package/dist/forms/utilities/buildStateFromSchema/buildStateFromSchema.spec.js +11 -20
- package/dist/forms/utilities/buildStateFromSchema/index.d.ts +1 -2
- package/dist/forms/utilities/buildStateFromSchema/index.d.ts.map +1 -1
- package/dist/forms/utilities/buildStateFromSchema/index.js +4 -14
- package/dist/forms/utilities/buildStateFromSchema/iterateFields.d.ts +2 -3
- package/dist/forms/utilities/buildStateFromSchema/iterateFields.d.ts.map +1 -1
- package/dist/forms/utilities/buildStateFromSchema/iterateFields.js +8 -16
- package/dist/forms/withCondition/WatchCondition.js +7 -57
- package/dist/forms/withCondition/index.js +8 -23
- package/dist/graphics/Account/Default/index.js +7 -22
- package/dist/graphics/Account/Gravatar/index.js +10 -25
- package/dist/graphics/Account/index.js +15 -30
- package/dist/graphics/DefaultBlockImage/index.js +11 -62
- package/dist/graphics/ExternalLink/index.js +5 -20
- package/dist/graphics/File/index.js +7 -22
- package/dist/graphics/Icon/index.js +13 -28
- package/dist/graphics/Logo/index.js +15 -30
- package/dist/graphics/Search/index.js +6 -21
- package/dist/hooks/useAdminThumbnail.d.ts.map +1 -1
- package/dist/hooks/useAdminThumbnail.js +6 -15
- package/dist/hooks/useDebounce.js +6 -16
- package/dist/hooks/useDebouncedCallback.js +10 -15
- package/dist/hooks/useDebouncedEffect.js +6 -16
- package/dist/hooks/useDelay.js +7 -58
- package/dist/hooks/useDelayedRender.js +11 -62
- package/dist/hooks/useHotkey.js +10 -20
- package/dist/hooks/useIntersect.d.ts +1 -1
- package/dist/hooks/useIntersect.js +7 -17
- package/dist/hooks/usePayloadAPI.d.ts +1 -1
- package/dist/hooks/usePayloadAPI.js +17 -32
- package/dist/hooks/useResize.js +5 -15
- package/dist/hooks/useThrottledEffect.d.ts +1 -1
- package/dist/hooks/useThrottledEffect.js +5 -15
- package/dist/hooks/useThumbnail.js +8 -18
- package/dist/hooks/useUseAsTitle.js +6 -16
- package/dist/icons/Calendar/index.js +8 -23
- package/dist/icons/Check/index.js +6 -21
- package/dist/icons/Chevron/index.js +5 -20
- package/dist/icons/CloseMenu/index.js +6 -21
- package/dist/icons/CodeBlock/index.js +5 -20
- package/dist/icons/Copy/index.js +6 -21
- package/dist/icons/DragHandle/index.js +10 -25
- package/dist/icons/Edit/index.js +7 -22
- package/dist/icons/Line/index.js +5 -20
- package/dist/icons/Link/index.js +6 -21
- package/dist/icons/LogOut/index.js +7 -22
- package/dist/icons/Menu/index.js +7 -22
- package/dist/icons/MinimizeMaximize/index.js +12 -63
- package/dist/icons/More/index.js +7 -22
- package/dist/icons/Plus/index.js +6 -21
- package/dist/icons/Search/index.js +6 -21
- package/dist/icons/Swap/index.js +8 -23
- package/dist/icons/X/index.js +6 -21
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -19
- package/dist/providers/ActionsProvider/SetViewActions/index.d.ts +6 -0
- package/dist/providers/ActionsProvider/SetViewActions/index.d.ts.map +1 -0
- package/dist/providers/ActionsProvider/SetViewActions/index.js +18 -0
- package/dist/providers/ActionsProvider/index.d.ts +3 -2
- package/dist/providers/ActionsProvider/index.d.ts.map +1 -1
- package/dist/providers/ActionsProvider/index.js +13 -72
- package/dist/providers/Auth/index.d.ts +1 -1
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +58 -133
- package/dist/providers/Auth/types.js +2 -5
- package/dist/providers/ClientFunction/index.js +14 -40
- package/dist/providers/ComponentMapProvider/index.d.ts +5 -1
- package/dist/providers/ComponentMapProvider/index.d.ts.map +1 -1
- package/dist/providers/ComponentMapProvider/index.js +20 -67
- package/dist/providers/Config/index.js +6 -65
- package/dist/providers/CustomProvider/index.js +9 -24
- package/dist/providers/DocumentEvents/index.d.ts +1 -1
- package/dist/providers/DocumentEvents/index.d.ts.map +1 -1
- package/dist/providers/DocumentEvents/index.js +7 -66
- package/dist/providers/DocumentEvents/types.d.ts +1 -1
- package/dist/providers/DocumentEvents/types.d.ts.map +1 -1
- package/dist/providers/DocumentEvents/types.js +2 -5
- package/dist/providers/DocumentInfo/SetDocumentInfo/index.d.ts +2 -2
- package/dist/providers/DocumentInfo/SetDocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/SetDocumentInfo/index.js +9 -19
- package/dist/providers/DocumentInfo/index.d.ts +1 -1
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +62 -111
- package/dist/providers/DocumentInfo/reducer.d.ts +17 -0
- package/dist/providers/DocumentInfo/reducer.d.ts.map +1 -0
- package/dist/providers/DocumentInfo/reducer.js +22 -0
- package/dist/providers/DocumentInfo/types.d.ts +2 -3
- package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/types.js +2 -5
- package/dist/providers/EditDepth/index.js +5 -67
- package/dist/providers/FormQueryParams/index.d.ts +6 -15
- package/dist/providers/FormQueryParams/index.d.ts.map +1 -1
- package/dist/providers/FormQueryParams/index.js +41 -69
- package/dist/providers/FormQueryParams/types.d.ts +16 -0
- package/dist/providers/FormQueryParams/types.d.ts.map +1 -0
- package/dist/providers/FormQueryParams/types.js +3 -0
- package/dist/providers/ListInfo/index.d.ts +1 -1
- package/dist/providers/ListInfo/index.d.ts.map +1 -1
- package/dist/providers/ListInfo/index.js +9 -68
- package/dist/providers/ListInfo/types.d.ts +2 -2
- package/dist/providers/ListInfo/types.d.ts.map +1 -1
- package/dist/providers/ListInfo/types.js +2 -5
- package/dist/providers/Locale/index.d.ts.map +1 -1
- package/dist/providers/Locale/index.js +56 -97
- package/dist/providers/OperationProvider/index.js +5 -67
- package/dist/providers/Params/index.d.ts +1 -1
- package/dist/providers/Params/index.d.ts.map +1 -1
- package/dist/providers/Params/index.js +9 -67
- package/dist/providers/Portal/index.js +4 -19
- package/dist/providers/Preferences/index.js +25 -89
- package/dist/providers/Root/index.d.ts +3 -2
- package/dist/providers/Root/index.d.ts.map +1 -1
- package/dist/providers/Root/index.js +31 -82
- package/dist/providers/SearchParams/index.d.ts +1 -1
- package/dist/providers/SearchParams/index.d.ts.map +1 -1
- package/dist/providers/SearchParams/index.js +17 -80
- package/dist/providers/SearchParams/types.d.ts +3 -3
- package/dist/providers/SearchParams/types.js +2 -5
- package/dist/providers/SelectionProvider/index.js +23 -90
- package/dist/providers/Theme/index.d.ts +6 -3
- package/dist/providers/Theme/index.d.ts.map +1 -1
- package/dist/providers/Theme/index.js +42 -106
- package/dist/providers/Theme/types.d.ts +1 -0
- package/dist/providers/Theme/types.d.ts.map +1 -1
- package/dist/providers/Theme/types.js +2 -5
- package/dist/providers/Theme/utilities.d.ts +1 -1
- package/dist/providers/Theme/utilities.d.ts.map +1 -1
- package/dist/providers/Theme/utilities.js +3 -21
- package/dist/providers/Translation/index.d.ts +1 -6
- package/dist/providers/Translation/index.d.ts.map +1 -1
- package/dist/providers/Translation/index.js +12 -69
- package/dist/templates/Default/NavHamburger/index.js +7 -22
- package/dist/templates/Default/Wrapper/index.js +7 -22
- package/dist/templates/Default/index.d.ts +1 -1
- package/dist/templates/Default/index.d.ts.map +1 -1
- package/dist/templates/Default/index.js +17 -68
- package/dist/templates/Default/types.js +2 -5
- package/dist/templates/Minimal/index.d.ts +1 -1
- package/dist/templates/Minimal/index.d.ts.map +1 -1
- package/dist/templates/Minimal/index.js +6 -21
- package/dist/templates/Minimal/types.js +2 -5
- package/dist/utilities/api.js +4 -19
- package/dist/utilities/arraysHaveSameStrings.js +2 -12
- package/dist/utilities/buildComponentMap/index.d.ts +4 -8
- package/dist/utilities/buildComponentMap/index.d.ts.map +1 -1
- package/dist/utilities/buildComponentMap/index.js +36 -45
- package/dist/utilities/buildComponentMap/mapActions.d.ts +7 -0
- package/dist/utilities/buildComponentMap/mapActions.d.ts.map +1 -0
- package/dist/utilities/buildComponentMap/mapActions.js +39 -0
- package/dist/utilities/buildComponentMap/mapFields.d.ts +3 -6
- package/dist/utilities/buildComponentMap/mapFields.d.ts.map +1 -1
- package/dist/utilities/buildComponentMap/mapFields.js +47 -118
- package/dist/utilities/buildComponentMap/types.d.ts +12 -2
- package/dist/utilities/buildComponentMap/types.d.ts.map +1 -1
- package/dist/utilities/buildComponentMap/types.js +2 -5
- package/dist/utilities/buildFieldSchemaMap/index.d.ts +1 -1
- package/dist/utilities/buildFieldSchemaMap/index.d.ts.map +1 -1
- package/dist/utilities/buildFieldSchemaMap/index.js +5 -15
- package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts +1 -1
- package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +1 -1
- package/dist/utilities/buildFieldSchemaMap/traverseFields.js +9 -19
- package/dist/utilities/buildFieldSchemaMap/types.js +2 -5
- package/dist/utilities/canUseDOM.js +2 -12
- package/dist/utilities/findLocaleFromCode.js +4 -12
- package/dist/utilities/formatDate/getSupportedDateLocale.js +2 -12
- package/dist/utilities/formatDate/index.js +10 -69
- package/dist/utilities/formatDocTitle.d.ts +1 -2
- package/dist/utilities/formatDocTitle.d.ts.map +1 -1
- package/dist/utilities/formatDocTitle.js +6 -16
- package/dist/utilities/formatFields.js +3 -13
- package/dist/utilities/getFormState.d.ts +2 -3
- package/dist/utilities/getFormState.d.ts.map +1 -1
- package/dist/utilities/getFormState.js +2 -12
- package/dist/utilities/getOffsetTop.js +2 -12
- package/dist/utilities/getRequestLanguage.d.ts +1 -1
- package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
- package/dist/utilities/getRequestLanguage.js +2 -12
- package/dist/utilities/getSupportedMonacoLocale.js +2 -12
- package/dist/utilities/groupNavItems.js +7 -25
- package/dist/utilities/scrollToID.js +2 -12
- package/dist/utilities/setsAreEqual.js +2 -12
- package/dist/utilities/withMergedProps/index.js +23 -21
- package/package.json +8 -7
- package/src/index.ts +1 -1
- package/dist/forms/FieldPathProvider/index.scss +0 -12
- package/dist/forms/FieldPathProvider/types.d.ts +0 -7
- package/dist/forms/FieldPathProvider/types.d.ts.map +0 -1
- package/dist/forms/FieldPathProvider/types.js +0 -6
- package/dist/forms/Form/buildInitialState.d.ts +0 -3
- package/dist/forms/Form/buildInitialState.d.ts.map +0 -1
- package/dist/forms/Form/buildInitialState.js +0 -26
- package/dist/providers/Auth/HydrateClientUser/index.d.ts +0 -7
- package/dist/providers/Auth/HydrateClientUser/index.d.ts.map +0 -1
- package/dist/providers/Auth/HydrateClientUser/index.js +0 -28
- package/dist/views/Global/RenderCustomView.d.ts +0 -2
- package/dist/views/Global/RenderCustomView.d.ts.map +0 -1
- package/dist/views/Global/RenderCustomView.js +0 -3
package/dist/forms/Form/index.js
CHANGED
|
@@ -1,110 +1,57 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const _context = require("./context");
|
|
29
|
-
const _errorMessages = /*#__PURE__*/ _interop_require_default(require("./errorMessages"));
|
|
30
|
-
const _fieldReducer = require("./fieldReducer");
|
|
31
|
-
const _getDataByPath = /*#__PURE__*/ _interop_require_default(require("./getDataByPath"));
|
|
32
|
-
const _getSiblingData = /*#__PURE__*/ _interop_require_default(require("./getSiblingData"));
|
|
33
|
-
const _initContextState = /*#__PURE__*/ _interop_require_default(require("./initContextState"));
|
|
34
|
-
const _mergeServerFormState = require("./mergeServerFormState");
|
|
35
|
-
const _reduceFieldsToValues = /*#__PURE__*/ _interop_require_default(require("./reduceFieldsToValues"));
|
|
36
|
-
function _interop_require_default(obj) {
|
|
37
|
-
return obj && obj.__esModule ? obj : {
|
|
38
|
-
default: obj
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
function _getRequireWildcardCache(nodeInterop) {
|
|
42
|
-
if (typeof WeakMap !== "function") return null;
|
|
43
|
-
var cacheBabelInterop = new WeakMap();
|
|
44
|
-
var cacheNodeInterop = new WeakMap();
|
|
45
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
46
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
47
|
-
})(nodeInterop);
|
|
48
|
-
}
|
|
49
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
|
50
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
|
51
|
-
return obj;
|
|
52
|
-
}
|
|
53
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
54
|
-
return {
|
|
55
|
-
default: obj
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
|
59
|
-
if (cache && cache.has(obj)) {
|
|
60
|
-
return cache.get(obj);
|
|
61
|
-
}
|
|
62
|
-
var newObj = {
|
|
63
|
-
__proto__: null
|
|
64
|
-
};
|
|
65
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
66
|
-
for(var key in obj){
|
|
67
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
68
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
69
|
-
if (desc && (desc.get || desc.set)) {
|
|
70
|
-
Object.defineProperty(newObj, key, desc);
|
|
71
|
-
} else {
|
|
72
|
-
newObj[key] = obj[key];
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
newObj.default = obj;
|
|
77
|
-
if (cache) {
|
|
78
|
-
cache.set(obj, newObj);
|
|
79
|
-
}
|
|
80
|
-
return newObj;
|
|
81
|
-
}
|
|
2
|
+
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */ import isDeepEqual from 'deep-equal';
|
|
3
|
+
import { useRouter } from 'next/navigation.js';
|
|
4
|
+
import { serialize } from 'object-to-formdata';
|
|
5
|
+
import { wait } from 'payload/utilities';
|
|
6
|
+
import QueryString from 'qs';
|
|
7
|
+
import React, { useCallback, useEffect, useReducer, useRef, useState } from 'react';
|
|
8
|
+
import { toast } from 'react-toastify';
|
|
9
|
+
import { useFormQueryParams } from '../../providers/FormQueryParams/index.js';
|
|
10
|
+
import { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js';
|
|
11
|
+
import useThrottledEffect from '../../hooks/useThrottledEffect.js';
|
|
12
|
+
import { useAuth } from '../../providers/Auth/index.js';
|
|
13
|
+
import { useConfig } from '../../providers/Config/index.js';
|
|
14
|
+
import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
|
|
15
|
+
import { useLocale } from '../../providers/Locale/index.js';
|
|
16
|
+
import { useOperation } from '../../providers/OperationProvider/index.js';
|
|
17
|
+
import { useTranslation } from '../../providers/Translation/index.js';
|
|
18
|
+
import { requests } from '../../utilities/api.js';
|
|
19
|
+
import { getFormState } from '../../utilities/getFormState.js';
|
|
20
|
+
import { FormContext, FormFieldsContext, FormWatchContext, ModifiedContext, ProcessingContext, SubmittedContext } from './context.js';
|
|
21
|
+
import errorMessages from './errorMessages.js';
|
|
22
|
+
import { fieldReducer } from './fieldReducer.js';
|
|
23
|
+
import getDataByPathFunc from './getDataByPath.js';
|
|
24
|
+
import getSiblingDataFunc from './getSiblingData.js';
|
|
25
|
+
import initContextState from './initContextState.js';
|
|
26
|
+
import { mergeServerFormState } from './mergeServerFormState.js';
|
|
27
|
+
import reduceFieldsToValues from './reduceFieldsToValues.js';
|
|
82
28
|
const baseClass = 'form';
|
|
83
29
|
const Form = (props)=>{
|
|
84
|
-
const { id, getDocPreferences } =
|
|
30
|
+
const { id, getDocPreferences } = useDocumentInfo();
|
|
85
31
|
const { action, children, className, disableSuccessStatus, disabled, // fields: fieldsFromProps = collection?.fields || global?.fields,
|
|
86
32
|
beforeSubmit, handleResponse, initialState, onChange, onSubmit, onSuccess, redirect, submitted: submittedFromProps, uuid, waitForAutocomplete } = props;
|
|
87
33
|
const method = 'method' in props ? props.method : undefined;
|
|
88
|
-
const router =
|
|
89
|
-
const { code: locale } =
|
|
90
|
-
const { i18n, t } =
|
|
91
|
-
const { refreshCookie, user } =
|
|
92
|
-
const operation =
|
|
93
|
-
const
|
|
34
|
+
const router = useRouter();
|
|
35
|
+
const { code: locale } = useLocale();
|
|
36
|
+
const { i18n, t } = useTranslation();
|
|
37
|
+
const { refreshCookie, user } = useAuth();
|
|
38
|
+
const operation = useOperation();
|
|
39
|
+
const { formQueryParams } = useFormQueryParams();
|
|
40
|
+
const config = useConfig();
|
|
94
41
|
const { routes: { api: apiRoute }, serverURL } = config;
|
|
95
|
-
const [modified, setModified] =
|
|
96
|
-
const [processing, setProcessing] =
|
|
97
|
-
const [submitted, setSubmitted] =
|
|
98
|
-
const formRef =
|
|
99
|
-
const contextRef =
|
|
100
|
-
const { collectionSlug, globalSlug } =
|
|
101
|
-
const fieldsReducer =
|
|
42
|
+
const [modified, setModified] = useState(false);
|
|
43
|
+
const [processing, setProcessing] = useState(false);
|
|
44
|
+
const [submitted, setSubmitted] = useState(false);
|
|
45
|
+
const formRef = useRef(null);
|
|
46
|
+
const contextRef = useRef({});
|
|
47
|
+
const { collectionSlug, globalSlug } = useDocumentInfo();
|
|
48
|
+
const fieldsReducer = useReducer(fieldReducer, {}, ()=>initialState);
|
|
102
49
|
/**
|
|
103
50
|
* `fields` is the current, up-to-date state/data of all fields in the form. It can be modified by using dispatchFields,
|
|
104
51
|
* which calls the fieldReducer, which then updates the state.
|
|
105
52
|
*/ const [fields, dispatchFields] = fieldsReducer;
|
|
106
53
|
contextRef.current.fields = fields;
|
|
107
|
-
const validateForm =
|
|
54
|
+
const validateForm = useCallback(async ()=>{
|
|
108
55
|
const validatedFieldState = {};
|
|
109
56
|
let isValid = true;
|
|
110
57
|
const dataFromContext = contextRef.current.getData();
|
|
@@ -140,7 +87,7 @@ const Form = (props)=>{
|
|
|
140
87
|
validatedFieldState[path] = validatedField;
|
|
141
88
|
});
|
|
142
89
|
await Promise.all(validationPromises);
|
|
143
|
-
if (!(
|
|
90
|
+
if (!isDeepEqual(contextRef.current.fields, validatedFieldState)) {
|
|
144
91
|
dispatchFields({
|
|
145
92
|
type: 'REPLACE_STATE',
|
|
146
93
|
state: validatedFieldState
|
|
@@ -155,7 +102,7 @@ const Form = (props)=>{
|
|
|
155
102
|
dispatchFields,
|
|
156
103
|
config
|
|
157
104
|
]);
|
|
158
|
-
const submit =
|
|
105
|
+
const submit = useCallback(async (options = {}, e)=>{
|
|
159
106
|
const { action: actionToUse = action, method: methodToUse = method, overrides = {}, skipValidation } = options;
|
|
160
107
|
if (disabled) {
|
|
161
108
|
if (e) {
|
|
@@ -169,7 +116,7 @@ const Form = (props)=>{
|
|
|
169
116
|
}
|
|
170
117
|
setProcessing(true);
|
|
171
118
|
setSubmitted(true);
|
|
172
|
-
if (waitForAutocomplete) await
|
|
119
|
+
if (waitForAutocomplete) await wait(100);
|
|
173
120
|
// Execute server side validations
|
|
174
121
|
if (Array.isArray(beforeSubmit)) {
|
|
175
122
|
let revalidatedFormState;
|
|
@@ -192,14 +139,14 @@ const Form = (props)=>{
|
|
|
192
139
|
const isValid = skipValidation ? true : await contextRef.current.validateForm();
|
|
193
140
|
// If not valid, prevent submission
|
|
194
141
|
if (!isValid) {
|
|
195
|
-
|
|
142
|
+
toast.error(t('error:correctInvalidFields'));
|
|
196
143
|
setProcessing(false);
|
|
197
144
|
return;
|
|
198
145
|
}
|
|
199
146
|
// If submit handler comes through via props, run that
|
|
200
147
|
if (onSubmit) {
|
|
201
148
|
const data = {
|
|
202
|
-
...(
|
|
149
|
+
...reduceFieldsToValues(fields, true),
|
|
203
150
|
...overrides
|
|
204
151
|
};
|
|
205
152
|
onSubmit(fields, data);
|
|
@@ -208,7 +155,10 @@ const Form = (props)=>{
|
|
|
208
155
|
try {
|
|
209
156
|
let res;
|
|
210
157
|
if (typeof actionToUse === 'string') {
|
|
211
|
-
|
|
158
|
+
const actionEndpoint = `${actionToUse}${QueryString.stringify(formQueryParams, {
|
|
159
|
+
addQueryPrefix: true
|
|
160
|
+
})}`;
|
|
161
|
+
res = await requests[methodToUse.toLowerCase()](actionEndpoint, {
|
|
212
162
|
body: formData,
|
|
213
163
|
headers: {
|
|
214
164
|
'Accept-Language': i18n.language
|
|
@@ -231,23 +181,9 @@ const Form = (props)=>{
|
|
|
231
181
|
setSubmitted(false);
|
|
232
182
|
if (typeof onSuccess === 'function') onSuccess(json);
|
|
233
183
|
if (redirect) {
|
|
234
|
-
// const destination = {
|
|
235
|
-
// pathname: redirect,
|
|
236
|
-
// state: {},
|
|
237
|
-
// }
|
|
238
|
-
// if (typeof json === 'object' && json.message && !disableSuccessStatus) {
|
|
239
|
-
// destination.state = {
|
|
240
|
-
// status: [
|
|
241
|
-
// {
|
|
242
|
-
// message: json.message,
|
|
243
|
-
// type: 'success',
|
|
244
|
-
// },
|
|
245
|
-
// ],
|
|
246
|
-
// }
|
|
247
|
-
// }
|
|
248
184
|
router.push(redirect);
|
|
249
185
|
} else if (!disableSuccessStatus) {
|
|
250
|
-
|
|
186
|
+
toast.success(json.message || t('general:submissionSuccessful'), {
|
|
251
187
|
autoClose: 3000
|
|
252
188
|
});
|
|
253
189
|
}
|
|
@@ -257,7 +193,7 @@ const Form = (props)=>{
|
|
|
257
193
|
} // triggers rerender of all components that subscribe to form
|
|
258
194
|
;
|
|
259
195
|
if (json.message) {
|
|
260
|
-
|
|
196
|
+
toast.error(json.message);
|
|
261
197
|
return;
|
|
262
198
|
}
|
|
263
199
|
if (Array.isArray(json.errors)) {
|
|
@@ -300,16 +236,16 @@ const Form = (props)=>{
|
|
|
300
236
|
});
|
|
301
237
|
});
|
|
302
238
|
nonFieldErrors.forEach((err)=>{
|
|
303
|
-
|
|
239
|
+
toast.error(err.message || t('error:unknown'));
|
|
304
240
|
});
|
|
305
241
|
return;
|
|
306
242
|
}
|
|
307
|
-
const message =
|
|
308
|
-
|
|
243
|
+
const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown');
|
|
244
|
+
toast.error(message);
|
|
309
245
|
}
|
|
310
246
|
} catch (err) {
|
|
311
247
|
setProcessing(false);
|
|
312
|
-
|
|
248
|
+
toast.error(err);
|
|
313
249
|
}
|
|
314
250
|
}, [
|
|
315
251
|
action,
|
|
@@ -326,15 +262,16 @@ const Form = (props)=>{
|
|
|
326
262
|
t,
|
|
327
263
|
i18n,
|
|
328
264
|
waitForAutocomplete,
|
|
329
|
-
beforeSubmit
|
|
265
|
+
beforeSubmit,
|
|
266
|
+
formQueryParams
|
|
330
267
|
]);
|
|
331
|
-
const getFields =
|
|
332
|
-
const getField =
|
|
333
|
-
const getData =
|
|
334
|
-
const getSiblingData =
|
|
335
|
-
const getDataByPath =
|
|
336
|
-
const createFormData =
|
|
337
|
-
const data = (
|
|
268
|
+
const getFields = useCallback(()=>contextRef.current.fields, []);
|
|
269
|
+
const getField = useCallback((path)=>contextRef.current.fields[path], []);
|
|
270
|
+
const getData = useCallback(()=>reduceFieldsToValues(contextRef.current.fields, true), []);
|
|
271
|
+
const getSiblingData = useCallback((path)=>getSiblingDataFunc(contextRef.current.fields, path), []);
|
|
272
|
+
const getDataByPath = useCallback((path)=>getDataByPathFunc(contextRef.current.fields, path), []);
|
|
273
|
+
const createFormData = useCallback((overrides = {})=>{
|
|
274
|
+
const data = reduceFieldsToValues(contextRef.current.fields, true);
|
|
338
275
|
const file = data?.file;
|
|
339
276
|
if (file) {
|
|
340
277
|
delete data.file;
|
|
@@ -348,13 +285,13 @@ const Form = (props)=>{
|
|
|
348
285
|
file
|
|
349
286
|
};
|
|
350
287
|
// nullAsUndefineds is important to allow uploads and relationship fields to clear themselves
|
|
351
|
-
const formData =
|
|
288
|
+
const formData = serialize(dataToSerialize, {
|
|
352
289
|
indices: true,
|
|
353
290
|
nullsAsUndefineds: false
|
|
354
291
|
});
|
|
355
292
|
return formData;
|
|
356
293
|
}, []);
|
|
357
|
-
const reset =
|
|
294
|
+
const reset = useCallback(async (fieldSchema, data)=>{
|
|
358
295
|
const preferences = await getDocPreferences();
|
|
359
296
|
// const state = await buildStateFromSchema({
|
|
360
297
|
// id,
|
|
@@ -370,16 +307,16 @@ const Form = (props)=>{
|
|
|
370
307
|
// user,
|
|
371
308
|
// })
|
|
372
309
|
contextRef.current = {
|
|
373
|
-
...
|
|
310
|
+
...initContextState
|
|
374
311
|
};
|
|
375
312
|
setModified(false);
|
|
376
313
|
// dispatchFields({ state, type: 'REPLACE_STATE' })
|
|
377
314
|
}, [
|
|
378
315
|
getDocPreferences
|
|
379
316
|
]);
|
|
380
|
-
const replaceState =
|
|
317
|
+
const replaceState = useCallback((state)=>{
|
|
381
318
|
contextRef.current = {
|
|
382
|
-
...
|
|
319
|
+
...initContextState
|
|
383
320
|
};
|
|
384
321
|
setModified(false);
|
|
385
322
|
dispatchFields({
|
|
@@ -389,8 +326,8 @@ const Form = (props)=>{
|
|
|
389
326
|
}, [
|
|
390
327
|
dispatchFields
|
|
391
328
|
]);
|
|
392
|
-
const getFieldStateByPath =
|
|
393
|
-
const fieldSchema = await
|
|
329
|
+
const getFieldStateByPath = useCallback(async ({ data, path })=>{
|
|
330
|
+
const fieldSchema = await getFormState({
|
|
394
331
|
apiRoute,
|
|
395
332
|
body: {
|
|
396
333
|
collectionSlug,
|
|
@@ -410,7 +347,7 @@ const Form = (props)=>{
|
|
|
410
347
|
globalSlug,
|
|
411
348
|
serverURL
|
|
412
349
|
]);
|
|
413
|
-
const addFieldRow =
|
|
350
|
+
const addFieldRow = useCallback(async ({ data, path, rowIndex })=>{
|
|
414
351
|
const subFieldState = await getFieldStateByPath({
|
|
415
352
|
data,
|
|
416
353
|
path
|
|
@@ -426,7 +363,7 @@ const Form = (props)=>{
|
|
|
426
363
|
getFieldStateByPath,
|
|
427
364
|
dispatchFields
|
|
428
365
|
]);
|
|
429
|
-
const removeFieldRow =
|
|
366
|
+
const removeFieldRow = useCallback(({ path, rowIndex })=>{
|
|
430
367
|
dispatchFields({
|
|
431
368
|
type: 'REMOVE_ROW',
|
|
432
369
|
path,
|
|
@@ -435,7 +372,7 @@ const Form = (props)=>{
|
|
|
435
372
|
}, [
|
|
436
373
|
dispatchFields
|
|
437
374
|
]);
|
|
438
|
-
const replaceFieldRow =
|
|
375
|
+
const replaceFieldRow = useCallback(async ({ data, path, rowIndex })=>{
|
|
439
376
|
const subFieldState = await getFieldStateByPath({
|
|
440
377
|
data,
|
|
441
378
|
path
|
|
@@ -471,15 +408,15 @@ const Form = (props)=>{
|
|
|
471
408
|
contextRef.current.removeFieldRow = removeFieldRow;
|
|
472
409
|
contextRef.current.replaceFieldRow = replaceFieldRow;
|
|
473
410
|
contextRef.current.uuid = uuid;
|
|
474
|
-
|
|
411
|
+
useEffect(()=>{
|
|
475
412
|
if (typeof submittedFromProps === 'boolean') setSubmitted(submittedFromProps);
|
|
476
413
|
}, [
|
|
477
414
|
submittedFromProps
|
|
478
415
|
]);
|
|
479
|
-
|
|
416
|
+
useEffect(()=>{
|
|
480
417
|
if (initialState) {
|
|
481
418
|
contextRef.current = {
|
|
482
|
-
...
|
|
419
|
+
...initContextState
|
|
483
420
|
};
|
|
484
421
|
dispatchFields({
|
|
485
422
|
type: 'REPLACE_STATE',
|
|
@@ -490,12 +427,12 @@ const Form = (props)=>{
|
|
|
490
427
|
initialState,
|
|
491
428
|
dispatchFields
|
|
492
429
|
]);
|
|
493
|
-
(
|
|
430
|
+
useThrottledEffect(()=>{
|
|
494
431
|
refreshCookie();
|
|
495
432
|
}, 15000, [
|
|
496
433
|
fields
|
|
497
434
|
]);
|
|
498
|
-
|
|
435
|
+
useEffect(()=>{
|
|
499
436
|
contextRef.current = {
|
|
500
437
|
...contextRef.current
|
|
501
438
|
} // triggers rerender of all components that subscribe to form
|
|
@@ -508,7 +445,7 @@ const Form = (props)=>{
|
|
|
508
445
|
className,
|
|
509
446
|
baseClass
|
|
510
447
|
].filter(Boolean).join(' ');
|
|
511
|
-
|
|
448
|
+
useDebouncedEffect(()=>{
|
|
512
449
|
const executeOnChange = async ()=>{
|
|
513
450
|
if (Array.isArray(onChange)) {
|
|
514
451
|
let revalidatedFormState;
|
|
@@ -519,7 +456,7 @@ const Form = (props)=>{
|
|
|
519
456
|
});
|
|
520
457
|
revalidatedFormState = result;
|
|
521
458
|
}, Promise.resolve());
|
|
522
|
-
const { changed, newState } =
|
|
459
|
+
const { changed, newState } = mergeServerFormState(fields, revalidatedFormState);
|
|
523
460
|
if (changed) {
|
|
524
461
|
dispatchFields({
|
|
525
462
|
type: 'REPLACE_STATE',
|
|
@@ -529,37 +466,40 @@ const Form = (props)=>{
|
|
|
529
466
|
}
|
|
530
467
|
}
|
|
531
468
|
};
|
|
532
|
-
executeOnChange() // eslint-disable-line @typescript-eslint/no-floating-promises
|
|
469
|
+
void executeOnChange() // eslint-disable-line @typescript-eslint/no-floating-promises
|
|
533
470
|
;
|
|
534
471
|
}, 150, [
|
|
535
472
|
fields,
|
|
536
473
|
dispatchFields,
|
|
537
474
|
onChange
|
|
538
475
|
]);
|
|
539
|
-
|
|
540
|
-
|
|
476
|
+
const actionString = typeof action === 'string' ? `${action}${QueryString.stringify(formQueryParams, {
|
|
477
|
+
addQueryPrefix: true
|
|
478
|
+
})}` : '';
|
|
479
|
+
return /*#__PURE__*/ React.createElement("form", {
|
|
480
|
+
action: method ? actionString : action,
|
|
541
481
|
className: classes,
|
|
542
482
|
method: method,
|
|
543
483
|
noValidate: true,
|
|
544
484
|
onSubmit: (e)=>contextRef.current.submit({}, e),
|
|
545
485
|
ref: formRef
|
|
546
|
-
}, /*#__PURE__*/
|
|
486
|
+
}, /*#__PURE__*/ React.createElement(FormContext.Provider, {
|
|
547
487
|
value: contextRef.current
|
|
548
|
-
}, /*#__PURE__*/
|
|
488
|
+
}, /*#__PURE__*/ React.createElement(FormWatchContext.Provider, {
|
|
549
489
|
value: {
|
|
550
490
|
fields,
|
|
551
491
|
...contextRef.current
|
|
552
492
|
}
|
|
553
|
-
}, /*#__PURE__*/
|
|
493
|
+
}, /*#__PURE__*/ React.createElement(SubmittedContext.Provider, {
|
|
554
494
|
value: submitted
|
|
555
|
-
}, /*#__PURE__*/
|
|
495
|
+
}, /*#__PURE__*/ React.createElement(ProcessingContext.Provider, {
|
|
556
496
|
value: processing
|
|
557
|
-
}, /*#__PURE__*/
|
|
497
|
+
}, /*#__PURE__*/ React.createElement(ModifiedContext.Provider, {
|
|
558
498
|
value: modified
|
|
559
|
-
}, /*#__PURE__*/
|
|
499
|
+
}, /*#__PURE__*/ React.createElement(FormFieldsContext.Provider, {
|
|
560
500
|
value: fieldsReducer
|
|
561
501
|
}, children)))))));
|
|
562
502
|
};
|
|
563
|
-
|
|
503
|
+
export default Form;
|
|
564
504
|
|
|
565
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3Jtcy9Gb3JtL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1ub25pbnRlcmFjdGl2ZS1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IGlzRGVlcEVxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG5pbXBvcnQgeyBzZXJpYWxpemUgfSBmcm9tICdvYmplY3QtdG8tZm9ybWRhdGEnXG5pbXBvcnQgeyB3YWl0IH0gZnJvbSAncGF5bG9hZC91dGlsaXRpZXMnXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVkdWNlciwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tICdyZWFjdC10b2FzdGlmeSdcblxuaW1wb3J0IHR5cGUge1xuICBDb250ZXh0IGFzIEZvcm1Db250ZXh0VHlwZSxcbiAgRm9ybVN0YXRlLFxuICBHZXREYXRhQnlQYXRoLFxuICBQcm9wcyxcbiAgU3VibWl0T3B0aW9ucyxcbn0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgZ2V0Rm9ybVN0YXRlIH0gZnJvbSAnLi4vLi4nXG5pbXBvcnQgeyB1c2VEZWJvdW5jZWRFZmZlY3QgfSBmcm9tICcuLi8uLi9ob29rcy91c2VEZWJvdW5jZWRFZmZlY3QnXG5pbXBvcnQgdXNlVGhyb3R0bGVkRWZmZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZVRocm90dGxlZEVmZmVjdCdcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvQXV0aCdcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9Db25maWcnXG5pbXBvcnQgeyB1c2VEb2N1bWVudEluZm8gfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvRG9jdW1lbnRJbmZvJ1xuaW1wb3J0IHsgdXNlTG9jYWxlIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL0xvY2FsZSdcbmltcG9ydCB7IHVzZU9wZXJhdGlvbiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9PcGVyYXRpb25Qcm92aWRlcidcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL1RyYW5zbGF0aW9uJ1xuaW1wb3J0IHsgcmVxdWVzdHMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvYXBpJ1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRleHQsXG4gIEZvcm1GaWVsZHNDb250ZXh0LFxuICBGb3JtV2F0Y2hDb250ZXh0LFxuICBNb2RpZmllZENvbnRleHQsXG4gIFByb2Nlc3NpbmdDb250ZXh0LFxuICBTdWJtaXR0ZWRDb250ZXh0LFxufSBmcm9tICcuL2NvbnRleHQnXG5pbXBvcnQgZXJyb3JNZXNzYWdlcyBmcm9tICcuL2Vycm9yTWVzc2FnZXMnXG5pbXBvcnQgeyBmaWVsZFJlZHVjZXIgfSBmcm9tICcuL2ZpZWxkUmVkdWNlcidcbmltcG9ydCBnZXREYXRhQnlQYXRoRnVuYyBmcm9tICcuL2dldERhdGFCeVBhdGgnXG5pbXBvcnQgZ2V0U2libGluZ0RhdGFGdW5jIGZyb20gJy4vZ2V0U2libGluZ0RhdGEnXG5pbXBvcnQgaW5pdENvbnRleHRTdGF0ZSBmcm9tICcuL2luaXRDb250ZXh0U3RhdGUnXG5pbXBvcnQgeyBtZXJnZVNlcnZlckZvcm1TdGF0ZSB9IGZyb20gJy4vbWVyZ2VTZXJ2ZXJGb3JtU3RhdGUnXG5pbXBvcnQgcmVkdWNlRmllbGRzVG9WYWx1ZXMgZnJvbSAnLi9yZWR1Y2VGaWVsZHNUb1ZhbHVlcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ2Zvcm0nXG5cbmNvbnN0IEZvcm06IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGlkLCBnZXREb2NQcmVmZXJlbmNlcyB9ID0gdXNlRG9jdW1lbnRJbmZvKClcblxuICBjb25zdCB7XG4gICAgYWN0aW9uLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBkaXNhYmxlU3VjY2Vzc1N0YXR1cyxcbiAgICBkaXNhYmxlZCxcbiAgICAvLyBmaWVsZHM6IGZpZWxkc0Zyb21Qcm9wcyA9IGNvbGxlY3Rpb24/LmZpZWxkcyB8fCBnbG9iYWw/LmZpZWxkcyxcbiAgICBiZWZvcmVTdWJtaXQsXG4gICAgaGFuZGxlUmVzcG9uc2UsXG4gICAgaW5pdGlhbFN0YXRlLCAvLyBmdWxseSBmb3JtZWQgaW5pdGlhbCBmaWVsZCBzdGF0ZVxuICAgIG9uQ2hhbmdlLFxuICAgIG9uU3VibWl0LFxuICAgIG9uU3VjY2VzcyxcbiAgICByZWRpcmVjdCxcbiAgICBzdWJtaXR0ZWQ6IHN1Ym1pdHRlZEZyb21Qcm9wcyxcbiAgICB1dWlkLFxuICAgIHdhaXRGb3JBdXRvY29tcGxldGUsXG4gIH0gPSBwcm9wc1xuXG4gIGNvbnN0IG1ldGhvZCA9ICdtZXRob2QnIGluIHByb3BzID8gcHJvcHMubWV0aG9kIDogdW5kZWZpbmVkXG5cbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKClcblxuICBjb25zdCB7IGNvZGU6IGxvY2FsZSB9ID0gdXNlTG9jYWxlKClcbiAgY29uc3QgeyBpMThuLCB0IH0gPSB1c2VUcmFuc2xhdGlvbigpXG4gIGNvbnN0IHsgcmVmcmVzaENvb2tpZSwgdXNlciB9ID0gdXNlQXV0aCgpXG4gIGNvbnN0IG9wZXJhdGlvbiA9IHVzZU9wZXJhdGlvbigpXG5cbiAgY29uc3QgY29uZmlnID0gdXNlQ29uZmlnKClcbiAgY29uc3Qge1xuICAgIHJvdXRlczogeyBhcGk6IGFwaVJvdXRlIH0sXG4gICAgc2VydmVyVVJMLFxuICB9ID0gY29uZmlnXG5cbiAgY29uc3QgW21vZGlmaWVkLCBzZXRNb2RpZmllZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Byb2Nlc3NpbmcsIHNldFByb2Nlc3NpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzdWJtaXR0ZWQsIHNldFN1Ym1pdHRlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgZm9ybVJlZiA9IHVzZVJlZjxIVE1MRm9ybUVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGNvbnRleHRSZWYgPSB1c2VSZWYoe30gYXMgRm9ybUNvbnRleHRUeXBlKVxuICBjb25zdCB7IGNvbGxlY3Rpb25TbHVnLCBnbG9iYWxTbHVnIH0gPSB1c2VEb2N1bWVudEluZm8oKVxuXG4gIGNvbnN0IGZpZWxkc1JlZHVjZXIgPSB1c2VSZWR1Y2VyKGZpZWxkUmVkdWNlciwge30sICgpID0+IGluaXRpYWxTdGF0ZSlcbiAgLyoqXG4gICAqIGBmaWVsZHNgIGlzIHRoZSBjdXJyZW50LCB1cC10by1kYXRlIHN0YXRlL2RhdGEgb2YgYWxsIGZpZWxkcyBpbiB0aGUgZm9ybS4gSXQgY2FuIGJlIG1vZGlmaWVkIGJ5IHVzaW5nIGRpc3BhdGNoRmllbGRzLFxuICAgKiB3aGljaCBjYWxscyB0aGUgZmllbGRSZWR1Y2VyLCB3aGljaCB0aGVuIHVwZGF0ZXMgdGhlIHN0YXRlLlxuICAgKi9cbiAgY29uc3QgW2ZpZWxkcywgZGlzcGF0Y2hGaWVsZHNdID0gZmllbGRzUmVkdWNlclxuXG4gIGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMgPSBmaWVsZHNcblxuICBjb25zdCB2YWxpZGF0ZUZvcm0gPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdmFsaWRhdGVkRmllbGRTdGF0ZSA9IHt9XG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlXG5cbiAgICBjb25zdCBkYXRhRnJvbUNvbnRleHQgPSBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RGF0YSgpXG4gICAgY29uc3QgZGF0YSA9IGRhdGFGcm9tQ29udGV4dFxuXG4gICAgY29uc3QgdmFsaWRhdGlvblByb21pc2VzID0gT2JqZWN0LmVudHJpZXMoY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcykubWFwKFxuICAgICAgYXN5bmMgKFtwYXRoLCBmaWVsZF0pID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVkRmllbGQgPSB7XG4gICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQucGFzc2VzQ29uZGl0aW9uICE9PSBmYWxzZSkge1xuICAgICAgICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0OiBib29sZWFuIHwgc3RyaW5nID0gdHJ1ZVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZC52YWxpZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbGV0IHZhbHVlVG9WYWxpZGF0ZSA9IGZpZWxkLnZhbHVlXG5cbiAgICAgICAgICAgIGlmIChmaWVsZD8ucm93cyAmJiBBcnJheS5pc0FycmF5KGZpZWxkLnJvd3MpKSB7XG4gICAgICAgICAgICAgIHZhbHVlVG9WYWxpZGF0ZSA9IGNvbnRleHRSZWYuY3VycmVudC5nZXREYXRhQnlQYXRoKHBhdGgpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCBmaWVsZC52YWxpZGF0ZSh2YWx1ZVRvVmFsaWRhdGUsIHtcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgICAgICBzaWJsaW5nRGF0YTogY29udGV4dFJlZi5jdXJyZW50LmdldFNpYmxpbmdEYXRhKHBhdGgpLFxuICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbGlkYXRpb25SZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZWRGaWVsZC5lcnJvck1lc3NhZ2UgPSB2YWxpZGF0aW9uUmVzdWx0XG4gICAgICAgICAgICB2YWxpZGF0ZWRGaWVsZC52YWxpZCA9IGZhbHNlXG4gICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YWxpZGF0ZWRGaWVsZFN0YXRlW3BhdGhdID0gdmFsaWRhdGVkRmllbGRcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodmFsaWRhdGlvblByb21pc2VzKVxuXG4gICAgaWYgKCFpc0RlZXBFcXVhbChjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCB2YWxpZGF0ZWRGaWVsZFN0YXRlKSkge1xuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyB0eXBlOiAnUkVQTEFDRV9TVEFURScsIHN0YXRlOiB2YWxpZGF0ZWRGaWVsZFN0YXRlIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWRcbiAgfSwgW2lkLCB1c2VyLCBvcGVyYXRpb24sIHQsIGRpc3BhdGNoRmllbGRzLCBjb25maWddKVxuXG4gIGNvbnN0IHN1Ym1pdCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChvcHRpb25zOiBTdWJtaXRPcHRpb25zID0ge30sIGUpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYWN0aW9uOiBhY3Rpb25Ub1VzZSA9IGFjdGlvbixcbiAgICAgICAgbWV0aG9kOiBtZXRob2RUb1VzZSA9IG1ldGhvZCxcbiAgICAgICAgb3ZlcnJpZGVzID0ge30sXG4gICAgICAgIHNraXBWYWxpZGF0aW9uLFxuICAgICAgfSA9IG9wdGlvbnNcblxuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChlKSB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB9XG5cbiAgICAgIHNldFByb2Nlc3NpbmcodHJ1ZSlcbiAgICAgIHNldFN1Ym1pdHRlZCh0cnVlKVxuXG4gICAgICBpZiAod2FpdEZvckF1dG9jb21wbGV0ZSkgYXdhaXQgd2FpdCgxMDApXG5cbiAgICAgIC8vIEV4ZWN1dGUgc2VydmVyIHNpZGUgdmFsaWRhdGlvbnNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGJlZm9yZVN1Ym1pdCkpIHtcbiAgICAgICAgbGV0IHJldmFsaWRhdGVkRm9ybVN0YXRlOiBGb3JtU3RhdGVcblxuICAgICAgICBhd2FpdCBiZWZvcmVTdWJtaXQucmVkdWNlKGFzeW5jIChwcmlvck9uQ2hhbmdlLCBiZWZvcmVTdWJtaXRGbikgPT4ge1xuICAgICAgICAgIGF3YWl0IHByaW9yT25DaGFuZ2VcblxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJlZm9yZVN1Ym1pdEZuKHtcbiAgICAgICAgICAgIGZvcm1TdGF0ZTogZmllbGRzLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZXZhbGlkYXRlZEZvcm1TdGF0ZSA9IHJlc3VsdFxuICAgICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gT2JqZWN0LmVudHJpZXMocmV2YWxpZGF0ZWRGb3JtU3RhdGUpLmV2ZXJ5KChbLCBmaWVsZF0pID0+IGZpZWxkLnZhbGlkKVxuXG4gICAgICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgICAgIHNldFByb2Nlc3NpbmcoZmFsc2UpXG4gICAgICAgICAgcmV0dXJuIGRpc3BhdGNoRmllbGRzKHsgdHlwZTogJ1JFUExBQ0VfU1RBVEUnLCBzdGF0ZTogcmV2YWxpZGF0ZWRGb3JtU3RhdGUgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBpc1ZhbGlkID0gc2tpcFZhbGlkYXRpb24gPyB0cnVlIDogYXdhaXQgY29udGV4dFJlZi5jdXJyZW50LnZhbGlkYXRlRm9ybSgpXG5cbiAgICAgIC8vIElmIG5vdCB2YWxpZCwgcHJldmVudCBzdWJtaXNzaW9uXG4gICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgdG9hc3QuZXJyb3IodCgnZXJyb3I6Y29ycmVjdEludmFsaWRGaWVsZHMnKSlcbiAgICAgICAgc2V0UHJvY2Vzc2luZyhmYWxzZSlcblxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSWYgc3VibWl0IGhhbmRsZXIgY29tZXMgdGhyb3VnaCB2aWEgcHJvcHMsIHJ1biB0aGF0XG4gICAgICBpZiAob25TdWJtaXQpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAuLi5yZWR1Y2VGaWVsZHNUb1ZhbHVlcyhmaWVsZHMsIHRydWUpLFxuICAgICAgICAgIC4uLm92ZXJyaWRlcyxcbiAgICAgICAgfVxuXG4gICAgICAgIG9uU3VibWl0KGZpZWxkcywgZGF0YSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybURhdGEgPSBjb250ZXh0UmVmLmN1cnJlbnQuY3JlYXRlRm9ybURhdGEob3ZlcnJpZGVzKVxuXG4gICAgICB0cnkge1xuICAgICAgICBsZXQgcmVzXG5cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb25Ub1VzZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXMgPSBhd2FpdCByZXF1ZXN0c1ttZXRob2RUb1VzZS50b0xvd2VyQ2FzZSgpXShhY3Rpb25Ub1VzZSwge1xuICAgICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY3Rpb25Ub1VzZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJlcyA9IGF3YWl0IGFjdGlvblRvVXNlKGZvcm1EYXRhKVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0TW9kaWZpZWQoZmFsc2UpXG5cbiAgICAgICAgaWYgKHR5cGVvZiBoYW5kbGVSZXNwb25zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGhhbmRsZVJlc3BvbnNlKHJlcylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHNldFByb2Nlc3NpbmcoZmFsc2UpXG5cbiAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSByZXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpXG4gICAgICAgIGNvbnN0IGlzSlNPTiA9IGNvbnRlbnRUeXBlICYmIGNvbnRlbnRUeXBlLmluZGV4T2YoJ2FwcGxpY2F0aW9uL2pzb24nKSAhPT0gLTFcblxuICAgICAgICBsZXQganNvbjogYW55ID0ge31cblxuICAgICAgICBpZiAoaXNKU09OKSBqc29uID0gYXdhaXQgcmVzLmpzb24oKVxuXG4gICAgICAgIGlmIChyZXMuc3RhdHVzIDwgNDAwKSB7XG4gICAgICAgICAgc2V0U3VibWl0dGVkKGZhbHNlKVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiBvblN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIG9uU3VjY2Vzcyhqc29uKVxuXG4gICAgICAgICAgaWYgKHJlZGlyZWN0KSB7XG4gICAgICAgICAgICAvLyBjb25zdCBkZXN0aW5hdGlvbiA9IHtcbiAgICAgICAgICAgIC8vICAgcGF0aG5hbWU6IHJlZGlyZWN0LFxuICAgICAgICAgICAgLy8gICBzdGF0ZToge30sXG4gICAgICAgICAgICAvLyB9XG5cbiAgICAgICAgICAgIC8vIGlmICh0eXBlb2YganNvbiA9PT0gJ29iamVjdCcgJiYganNvbi5tZXNzYWdlICYmICFkaXNhYmxlU3VjY2Vzc1N0YXR1cykge1xuICAgICAgICAgICAgLy8gICBkZXN0aW5hdGlvbi5zdGF0ZSA9IHtcbiAgICAgICAgICAgIC8vICAgICBzdGF0dXM6IFtcbiAgICAgICAgICAgIC8vICAgICAgIHtcbiAgICAgICAgICAgIC8vICAgICAgICAgbWVzc2FnZToganNvbi5tZXNzYWdlLFxuICAgICAgICAgICAgLy8gICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAvLyAgICAgICB9LFxuICAgICAgICAgICAgLy8gICAgIF0sXG4gICAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAgIC8vIH1cblxuICAgICAgICAgICAgcm91dGVyLnB1c2gocmVkaXJlY3QpXG4gICAgICAgICAgfSBlbHNlIGlmICghZGlzYWJsZVN1Y2Nlc3NTdGF0dXMpIHtcbiAgICAgICAgICAgIHRvYXN0LnN1Y2Nlc3MoanNvbi5tZXNzYWdlIHx8IHQoJ2dlbmVyYWw6c3VibWlzc2lvblN1Y2Nlc3NmdWwnKSwgeyBhdXRvQ2xvc2U6IDMwMDAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGV4dFJlZi5jdXJyZW50ID0geyAuLi5jb250ZXh0UmVmLmN1cnJlbnQgfSAvLyB0cmlnZ2VycyByZXJlbmRlciBvZiBhbGwgY29tcG9uZW50cyB0aGF0IHN1YnNjcmliZSB0byBmb3JtXG4gICAgICAgICAgaWYgKGpzb24ubWVzc2FnZSkge1xuICAgICAgICAgICAgdG9hc3QuZXJyb3IoanNvbi5tZXNzYWdlKVxuXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShqc29uLmVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IFtmaWVsZEVycm9ycywgbm9uRmllbGRFcnJvcnNdID0ganNvbi5lcnJvcnMucmVkdWNlKFxuICAgICAgICAgICAgICAoW2ZpZWxkRXJycywgbm9uRmllbGRFcnJzXSwgZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RmllbGRFcnJzID0gW11cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdOb25GaWVsZEVycnMgPSBbXVxuXG4gICAgICAgICAgICAgICAgaWYgKGVycj8ubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgbmV3Tm9uRmllbGRFcnJzLnB1c2goZXJyKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVycj8uZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgIGVyci5kYXRhLmZvckVhY2goKGRhdGFFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YUVycm9yPy5maWVsZCkge1xuICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpZWxkRXJycy5wdXNoKGRhdGFFcnJvcilcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBuZXdOb25GaWVsZEVycnMucHVzaChkYXRhRXJyb3IpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgIFsuLi5maWVsZEVycnMsIC4uLm5ld0ZpZWxkRXJyc10sXG4gICAgICAgICAgICAgICAgICBbLi4ubm9uRmllbGRFcnJzLCAuLi5uZXdOb25GaWVsZEVycnNdLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgW1tdLCBbXV0sXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGZpZWxkRXJyb3JzLmZvckVhY2goKGVycikgPT4ge1xuICAgICAgICAgICAgICBkaXNwYXRjaEZpZWxkcyh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1VQREFURScsXG4gICAgICAgICAgICAgICAgLi4uKGNvbnRleHRSZWYuY3VycmVudD8uZmllbGRzPy5bZXJyLmZpZWxkXSB8fCB7fSksXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBlcnIubWVzc2FnZSxcbiAgICAgICAgICAgICAgICBwYXRoOiBlcnIuZmllbGQsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgbm9uRmllbGRFcnJvcnMuZm9yRWFjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgIHRvYXN0LmVycm9yKGVyci5tZXNzYWdlIHx8IHQoJ2Vycm9yOnVua25vd24nKSlcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VzPy5bcmVzLnN0YXR1c10gfHwgcmVzPy5zdGF0dXNUZXh0IHx8IHQoJ2Vycm9yOnVua25vd24nKVxuXG4gICAgICAgICAgdG9hc3QuZXJyb3IobWVzc2FnZSlcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHNldFByb2Nlc3NpbmcoZmFsc2UpXG5cbiAgICAgICAgdG9hc3QuZXJyb3IoZXJyKVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYWN0aW9uLFxuICAgICAgZGlzYWJsZVN1Y2Nlc3NTdGF0dXMsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGRpc3BhdGNoRmllbGRzLFxuICAgICAgZmllbGRzLFxuICAgICAgaGFuZGxlUmVzcG9uc2UsXG4gICAgICBtZXRob2QsXG4gICAgICBvblN1Ym1pdCxcbiAgICAgIG9uU3VjY2VzcyxcbiAgICAgIHJlZGlyZWN0LFxuICAgICAgcm91dGVyLFxuICAgICAgdCxcbiAgICAgIGkxOG4sXG4gICAgICB3YWl0Rm9yQXV0b2NvbXBsZXRlLFxuICAgICAgYmVmb3JlU3VibWl0LFxuICAgIF0sXG4gIClcblxuICBjb25zdCBnZXRGaWVsZHMgPSB1c2VDYWxsYmFjaygoKSA9PiBjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCBbXSlcblxuICBjb25zdCBnZXRGaWVsZCA9IHVzZUNhbGxiYWNrKChwYXRoOiBzdHJpbmcpID0+IGNvbnRleHRSZWYuY3VycmVudC5maWVsZHNbcGF0aF0sIFtdKVxuXG4gIGNvbnN0IGdldERhdGEgPSB1c2VDYWxsYmFjaygoKSA9PiByZWR1Y2VGaWVsZHNUb1ZhbHVlcyhjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCB0cnVlKSwgW10pXG5cbiAgY29uc3QgZ2V0U2libGluZ0RhdGEgPSB1c2VDYWxsYmFjayhcbiAgICAocGF0aDogc3RyaW5nKSA9PiBnZXRTaWJsaW5nRGF0YUZ1bmMoY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcywgcGF0aCksXG4gICAgW10sXG4gIClcbiAgY29uc3QgZ2V0RGF0YUJ5UGF0aCA9IHVzZUNhbGxiYWNrPEdldERhdGFCeVBhdGg+KFxuICAgIChwYXRoOiBzdHJpbmcpID0+IGdldERhdGFCeVBhdGhGdW5jKGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMsIHBhdGgpLFxuICAgIFtdLFxuICApXG5cbiAgY29uc3QgY3JlYXRlRm9ybURhdGEgPSB1c2VDYWxsYmFjaygob3ZlcnJpZGVzOiBhbnkgPSB7fSkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSByZWR1Y2VGaWVsZHNUb1ZhbHVlcyhjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCB0cnVlKVxuXG4gICAgY29uc3QgZmlsZSA9IGRhdGE/LmZpbGVcblxuICAgIGlmIChmaWxlKSB7XG4gICAgICBkZWxldGUgZGF0YS5maWxlXG4gICAgfVxuXG4gICAgY29uc3QgZGF0YVdpdGhPdmVycmlkZXMgPSB7XG4gICAgICAuLi5kYXRhLFxuICAgICAgLi4ub3ZlcnJpZGVzLFxuICAgIH1cblxuICAgIGNvbnN0IGRhdGFUb1NlcmlhbGl6ZSA9IHtcbiAgICAgIF9wYXlsb2FkOiBKU09OLnN0cmluZ2lmeShkYXRhV2l0aE92ZXJyaWRlcyksXG4gICAgICBmaWxlLFxuICAgIH1cblxuICAgIC8vIG51bGxBc1VuZGVmaW5lZHMgaXMgaW1wb3J0YW50IHRvIGFsbG93IHVwbG9hZHMgYW5kIHJlbGF0aW9uc2hpcCBmaWVsZHMgdG8gY2xlYXIgdGhlbXNlbHZlc1xuICAgIGNvbnN0IGZvcm1EYXRhID0gc2VyaWFsaXplKGRhdGFUb1NlcmlhbGl6ZSwgeyBpbmRpY2VzOiB0cnVlLCBudWxsc0FzVW5kZWZpbmVkczogZmFsc2UgfSlcblxuICAgIHJldHVybiBmb3JtRGF0YVxuICB9LCBbXSlcblxuICBjb25zdCByZXNldCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChmaWVsZFNjaGVtYTogRmllbGRbXSwgZGF0YTogdW5rbm93bikgPT4ge1xuICAgICAgY29uc3QgcHJlZmVyZW5jZXMgPSBhd2FpdCBnZXREb2NQcmVmZXJlbmNlcygpXG4gICAgICAvLyBjb25zdCBzdGF0ZSA9IGF3YWl0IGJ1aWxkU3RhdGVGcm9tU2NoZW1hKHtcbiAgICAgIC8vICAgaWQsXG4gICAgICAvLyAgIC8vIFRPRE86IGZpeCB0aGlzXG4gICAgICAvLyAgIC8vIEB0cy1pZ25vcmUtbmV4dC1saW5lXG4gICAgICAvLyAgIGNvbmZpZyxcbiAgICAgIC8vICAgZGF0YSxcbiAgICAgIC8vICAgZmllbGRTY2hlbWEsXG4gICAgICAvLyAgIGxvY2FsZSxcbiAgICAgIC8vICAgb3BlcmF0aW9uLFxuICAgICAgLy8gICBwcmVmZXJlbmNlcyxcbiAgICAgIC8vICAgdCxcbiAgICAgIC8vICAgdXNlcixcbiAgICAgIC8vIH0pXG4gICAgICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IC4uLmluaXRDb250ZXh0U3RhdGUgfSBhcyBGb3JtQ29udGV4dFR5cGVcbiAgICAgIHNldE1vZGlmaWVkKGZhbHNlKVxuICAgICAgLy8gZGlzcGF0Y2hGaWVsZHMoeyBzdGF0ZSwgdHlwZTogJ1JFUExBQ0VfU1RBVEUnIH0pXG4gICAgfSxcbiAgICBbZ2V0RG9jUHJlZmVyZW5jZXNdLFxuICApXG5cbiAgY29uc3QgcmVwbGFjZVN0YXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKHN0YXRlOiBGb3JtU3RhdGUpID0+IHtcbiAgICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uaW5pdENvbnRleHRTdGF0ZSB9IGFzIEZvcm1Db250ZXh0VHlwZVxuICAgICAgc2V0TW9kaWZpZWQoZmFsc2UpXG4gICAgICBkaXNwYXRjaEZpZWxkcyh7IHR5cGU6ICdSRVBMQUNFX1NUQVRFJywgc3RhdGUgfSlcbiAgICB9LFxuICAgIFtkaXNwYXRjaEZpZWxkc10sXG4gIClcblxuICBjb25zdCBnZXRGaWVsZFN0YXRlQnlQYXRoID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHsgZGF0YSwgcGF0aCB9KSA9PiB7XG4gICAgICBjb25zdCBmaWVsZFNjaGVtYSA9IGF3YWl0IGdldEZvcm1TdGF0ZSh7XG4gICAgICAgIGFwaVJvdXRlLFxuICAgICAgICBib2R5OiB7XG4gICAgICAgICAgY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBnbG9iYWxTbHVnLFxuICAgICAgICAgIC8qKlxuICAgICAgICAgICAgVHVybnM6ICdhcnJheUZpZWxkLjAuZ3JvdXAxMjNmaWVsZC5hcnJheUZpZWxkLjAudGV4dEZpZWxkJ1xuICAgICAgICAgICAgSW50bzogJ2FycmF5RmllbGQuZ3JvdXAxMjNmaWVsZC5hcnJheUZpZWxkLnRleHRGaWVsZCdcbiAgICAgICAgICAqL1xuICAgICAgICAgIHNjaGVtYVBhdGg6IGAke2NvbGxlY3Rpb25TbHVnIHx8IGdsb2JhbFNsdWd9LiR7cGF0aH1gLnJlcGxhY2UoL1xcLlxcZCtcXC4vZywgJy4nKSxcbiAgICAgICAgfSxcbiAgICAgICAgc2VydmVyVVJMLFxuICAgICAgfSlcbiAgICAgIHJldHVybiBmaWVsZFNjaGVtYVxuICAgIH0sXG4gICAgW2FwaVJvdXRlLCBjb2xsZWN0aW9uU2x1ZywgZ2xvYmFsU2x1Zywgc2VydmVyVVJMXSxcbiAgKVxuXG4gIGNvbnN0IGFkZEZpZWxkUm93OiBGb3JtQ29udGV4dFR5cGVbJ2FkZEZpZWxkUm93J10gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoeyBkYXRhLCBwYXRoLCByb3dJbmRleCB9KSA9PiB7XG4gICAgICBjb25zdCBzdWJGaWVsZFN0YXRlID0gYXdhaXQgZ2V0RmllbGRTdGF0ZUJ5UGF0aCh7IGRhdGEsIHBhdGggfSlcblxuICAgICAgZGlzcGF0Y2hGaWVsZHMoe1xuICAgICAgICB0eXBlOiAnQUREX1JPVycsXG4gICAgICAgIGJsb2NrVHlwZTogZGF0YT8uYmxvY2tUeXBlLFxuICAgICAgICBwYXRoLFxuICAgICAgICByb3dJbmRleCxcbiAgICAgICAgc3ViRmllbGRTdGF0ZSxcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbZ2V0RmllbGRTdGF0ZUJ5UGF0aCwgZGlzcGF0Y2hGaWVsZHNdLFxuICApXG5cbiAgY29uc3QgcmVtb3ZlRmllbGRSb3c6IEZvcm1Db250ZXh0VHlwZVsncmVtb3ZlRmllbGRSb3cnXSA9IHVzZUNhbGxiYWNrKFxuICAgICh7IHBhdGgsIHJvd0luZGV4IH0pID0+IHtcbiAgICAgIGRpc3BhdGNoRmllbGRzKHsgdHlwZTogJ1JFTU9WRV9ST1cnLCBwYXRoLCByb3dJbmRleCB9KVxuICAgIH0sXG4gICAgW2Rpc3BhdGNoRmllbGRzXSxcbiAgKVxuXG4gIGNvbnN0IHJlcGxhY2VGaWVsZFJvdzogRm9ybUNvbnRleHRUeXBlWydyZXBsYWNlRmllbGRSb3cnXSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7IGRhdGEsIHBhdGgsIHJvd0luZGV4IH0pID0+IHtcbiAgICAgIGNvbnN0IHN1YkZpZWxkU3RhdGUgPSBhd2FpdCBnZXRGaWVsZFN0YXRlQnlQYXRoKHsgZGF0YSwgcGF0aCB9KVxuXG4gICAgICBkaXNwYXRjaEZpZWxkcyh7XG4gICAgICAgIHR5cGU6ICdSRVBMQUNFX1JPVycsXG4gICAgICAgIGJsb2NrVHlwZTogZGF0YT8uYmxvY2tUeXBlLFxuICAgICAgICBwYXRoLFxuICAgICAgICByb3dJbmRleCxcbiAgICAgICAgc3ViRmllbGRTdGF0ZSxcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbZ2V0RmllbGRTdGF0ZUJ5UGF0aCwgZGlzcGF0Y2hGaWVsZHNdLFxuICApXG5cbiAgY29udGV4dFJlZi5jdXJyZW50LnN1Ym1pdCA9IHN1Ym1pdFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RmllbGRzID0gZ2V0RmllbGRzXG4gIGNvbnRleHRSZWYuY3VycmVudC5nZXRGaWVsZCA9IGdldEZpZWxkXG4gIGNvbnRleHRSZWYuY3VycmVudC5nZXREYXRhID0gZ2V0RGF0YVxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0U2libGluZ0RhdGEgPSBnZXRTaWJsaW5nRGF0YVxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RGF0YUJ5UGF0aCA9IGdldERhdGFCeVBhdGhcbiAgY29udGV4dFJlZi5jdXJyZW50LnZhbGlkYXRlRm9ybSA9IHZhbGlkYXRlRm9ybVxuICBjb250ZXh0UmVmLmN1cnJlbnQuY3JlYXRlRm9ybURhdGEgPSBjcmVhdGVGb3JtRGF0YVxuICBjb250ZXh0UmVmLmN1cnJlbnQuc2V0TW9kaWZpZWQgPSBzZXRNb2RpZmllZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuc2V0UHJvY2Vzc2luZyA9IHNldFByb2Nlc3NpbmdcbiAgY29udGV4dFJlZi5jdXJyZW50LnNldFN1Ym1pdHRlZCA9IHNldFN1Ym1pdHRlZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZGlzYWJsZWQgPSBkaXNhYmxlZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZm9ybVJlZiA9IGZvcm1SZWZcbiAgY29udGV4dFJlZi5jdXJyZW50LnJlc2V0ID0gcmVzZXRcbiAgY29udGV4dFJlZi5jdXJyZW50LnJlcGxhY2VTdGF0ZSA9IHJlcGxhY2VTdGF0ZVxuICBjb250ZXh0UmVmLmN1cnJlbnQuZGlzcGF0Y2hGaWVsZHMgPSBkaXNwYXRjaEZpZWxkc1xuICBjb250ZXh0UmVmLmN1cnJlbnQuYWRkRmllbGRSb3cgPSBhZGRGaWVsZFJvd1xuICBjb250ZXh0UmVmLmN1cnJlbnQucmVtb3ZlRmllbGRSb3cgPSByZW1vdmVGaWVsZFJvd1xuICBjb250ZXh0UmVmLmN1cnJlbnQucmVwbGFjZUZpZWxkUm93ID0gcmVwbGFjZUZpZWxkUm93XG4gIGNvbnRleHRSZWYuY3VycmVudC51dWlkID0gdXVpZFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBzdWJtaXR0ZWRGcm9tUHJvcHMgPT09ICdib29sZWFuJykgc2V0U3VibWl0dGVkKHN1Ym1pdHRlZEZyb21Qcm9wcylcbiAgfSwgW3N1Ym1pdHRlZEZyb21Qcm9wc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5pdGlhbFN0YXRlKSB7XG4gICAgICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IC4uLmluaXRDb250ZXh0U3RhdGUgfSBhcyBGb3JtQ29udGV4dFR5cGVcbiAgICAgIGRpc3BhdGNoRmllbGRzKHsgdHlwZTogJ1JFUExBQ0VfU1RBVEUnLCBzdGF0ZTogaW5pdGlhbFN0YXRlIH0pXG4gICAgfVxuICB9LCBbaW5pdGlhbFN0YXRlLCBkaXNwYXRjaEZpZWxkc10pXG5cbiAgdXNlVGhyb3R0bGVkRWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIHJlZnJlc2hDb29raWUoKVxuICAgIH0sXG4gICAgMTUwMDAsXG4gICAgW2ZpZWxkc10sXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uY29udGV4dFJlZi5jdXJyZW50IH0gLy8gdHJpZ2dlcnMgcmVyZW5kZXIgb2YgYWxsIGNvbXBvbmVudHMgdGhhdCBzdWJzY3JpYmUgdG8gZm9ybVxuICAgIHNldE1vZGlmaWVkKGZhbHNlKVxuICB9LCBbbG9jYWxlXSlcblxuICBjb25zdCBjbGFzc2VzID0gW2NsYXNzTmFtZSwgYmFzZUNsYXNzXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpXG5cbiAgdXNlRGVib3VuY2VkRWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGVPbkNoYW5nZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob25DaGFuZ2UpKSB7XG4gICAgICAgICAgbGV0IHJldmFsaWRhdGVkRm9ybVN0YXRlOiBGb3JtU3RhdGVcblxuICAgICAgICAgIGF3YWl0IG9uQ2hhbmdlLnJlZHVjZShhc3luYyAocHJpb3JPbkNoYW5nZSwgb25DaGFuZ2VGbikgPT4ge1xuICAgICAgICAgICAgYXdhaXQgcHJpb3JPbkNoYW5nZVxuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBvbkNoYW5nZUZuKHtcbiAgICAgICAgICAgICAgZm9ybVN0YXRlOiBmaWVsZHMsXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXZhbGlkYXRlZEZvcm1TdGF0ZSA9IHJlc3VsdFxuICAgICAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuXG4gICAgICAgICAgY29uc3QgeyBjaGFuZ2VkLCBuZXdTdGF0ZSB9ID0gbWVyZ2VTZXJ2ZXJGb3JtU3RhdGUoZmllbGRzLCByZXZhbGlkYXRlZEZvcm1TdGF0ZSlcblxuICAgICAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgICAgICBkaXNwYXRjaEZpZWxkcyh7IHR5cGU6ICdSRVBMQUNFX1NUQVRFJywgb3B0aW1pemU6IGZhbHNlLCBzdGF0ZTogbmV3U3RhdGUgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZXhlY3V0ZU9uQ2hhbmdlKCkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICB9LFxuICAgIDE1MCxcbiAgICBbZmllbGRzLCBkaXNwYXRjaEZpZWxkcywgb25DaGFuZ2VdLFxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybVxuICAgICAgYWN0aW9uPXthY3Rpb259XG4gICAgICBjbGFzc05hbWU9e2NsYXNzZXN9XG4gICAgICBtZXRob2Q9e21ldGhvZH1cbiAgICAgIG5vVmFsaWRhdGVcbiAgICAgIG9uU3VibWl0PXsoZSkgPT4gY29udGV4dFJlZi5jdXJyZW50LnN1Ym1pdCh7fSwgZSl9XG4gICAgICByZWY9e2Zvcm1SZWZ9XG4gICAgPlxuICAgICAgPEZvcm1Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0UmVmLmN1cnJlbnR9PlxuICAgICAgICA8Rm9ybVdhdGNoQ29udGV4dC5Qcm92aWRlclxuICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICAuLi5jb250ZXh0UmVmLmN1cnJlbnQsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTdWJtaXR0ZWRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtzdWJtaXR0ZWR9PlxuICAgICAgICAgICAgPFByb2Nlc3NpbmdDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtwcm9jZXNzaW5nfT5cbiAgICAgICAgICAgICAgPE1vZGlmaWVkQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bW9kaWZpZWR9PlxuICAgICAgICAgICAgICAgIDxGb3JtRmllbGRzQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17ZmllbGRzUmVkdWNlcn0+XG4gICAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgICAgPC9Gb3JtRmllbGRzQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICAgICAgPC9Nb2RpZmllZENvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICAgICA8L1Byb2Nlc3NpbmdDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgIDwvU3VibWl0dGVkQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgPC9Gb3JtV2F0Y2hDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9Gb3JtQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L2Zvcm0+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgRm9ybVxuIl0sIm5hbWVzIjpbImJhc2VDbGFzcyIsIkZvcm0iLCJwcm9wcyIsImlkIiwiZ2V0RG9jUHJlZmVyZW5jZXMiLCJ1c2VEb2N1bWVudEluZm8iLCJhY3Rpb24iLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImRpc2FibGVTdWNjZXNzU3RhdHVzIiwiZGlzYWJsZWQiLCJiZWZvcmVTdWJtaXQiLCJoYW5kbGVSZXNwb25zZSIsImluaXRpYWxTdGF0ZSIsIm9uQ2hhbmdlIiwib25TdWJtaXQiLCJvblN1Y2Nlc3MiLCJyZWRpcmVjdCIsInN1Ym1pdHRlZCIsInN1Ym1pdHRlZEZyb21Qcm9wcyIsInV1aWQiLCJ3YWl0Rm9yQXV0b2NvbXBsZXRlIiwibWV0aG9kIiwidW5kZWZpbmVkIiwicm91dGVyIiwidXNlUm91dGVyIiwiY29kZSIsImxvY2FsZSIsInVzZUxvY2FsZSIsImkxOG4iLCJ0IiwidXNlVHJhbnNsYXRpb24iLCJyZWZyZXNoQ29va2llIiwidXNlciIsInVzZUF1dGgiLCJvcGVyYXRpb24iLCJ1c2VPcGVyYXRpb24iLCJjb25maWciLCJ1c2VDb25maWciLCJyb3V0ZXMiLCJhcGkiLCJhcGlSb3V0ZSIsInNlcnZlclVSTCIsIm1vZGlmaWVkIiwic2V0TW9kaWZpZWQiLCJ1c2VTdGF0ZSIsInByb2Nlc3NpbmciLCJzZXRQcm9jZXNzaW5nIiwic2V0U3VibWl0dGVkIiwiZm9ybVJlZiIsInVzZVJlZiIsImNvbnRleHRSZWYiLCJjb2xsZWN0aW9uU2x1ZyIsImdsb2JhbFNsdWciLCJmaWVsZHNSZWR1Y2VyIiwidXNlUmVkdWNlciIsImZpZWxkUmVkdWNlciIsImZpZWxkcyIsImRpc3BhdGNoRmllbGRzIiwiY3VycmVudCIsInZhbGlkYXRlRm9ybSIsInVzZUNhbGxiYWNrIiwidmFsaWRhdGVkRmllbGRTdGF0ZSIsImlzVmFsaWQiLCJkYXRhRnJvbUNvbnRleHQiLCJnZXREYXRhIiwiZGF0YSIsInZhbGlkYXRpb25Qcm9taXNlcyIsIk9iamVjdCIsImVudHJpZXMiLCJtYXAiLCJwYXRoIiwiZmllbGQiLCJ2YWxpZGF0ZWRGaWVsZCIsInZhbGlkIiwicGFzc2VzQ29uZGl0aW9uIiwidmFsaWRhdGlvblJlc3VsdCIsInZhbGlkYXRlIiwidmFsdWVUb1ZhbGlkYXRlIiwidmFsdWUiLCJyb3dzIiwiQXJyYXkiLCJpc0FycmF5IiwiZ2V0RGF0YUJ5UGF0aCIsInNpYmxpbmdEYXRhIiwiZ2V0U2libGluZ0RhdGEiLCJlcnJvck1lc3NhZ2UiLCJQcm9taXNlIiwiYWxsIiwiaXNEZWVwRXF1YWwiLCJ0eXBlIiwic3RhdGUiLCJzdWJtaXQiLCJvcHRpb25zIiwiZSIsImFjdGlvblRvVXNlIiwibWV0aG9kVG9Vc2UiLCJvdmVycmlkZXMiLCJza2lwVmFsaWRhdGlvbiIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwid2FpdCIsInJldmFsaWRhdGVkRm9ybVN0YXRlIiwicmVkdWNlIiwicHJpb3JPbkNoYW5nZSIsImJlZm9yZVN1Ym1pdEZuIiwicmVzdWx0IiwiZm9ybVN0YXRlIiwicmVzb2x2ZSIsImV2ZXJ5IiwidG9hc3QiLCJlcnJvciIsInJlZHVjZUZpZWxkc1RvVmFsdWVzIiwiZm9ybURhdGEiLCJjcmVhdGVGb3JtRGF0YSIsInJlcyIsInJlcXVlc3RzIiwidG9Mb3dlckNhc2UiLCJib2R5IiwiaGVhZGVycyIsImxhbmd1YWdlIiwiY29udGVudFR5cGUiLCJnZXQiLCJpc0pTT04iLCJpbmRleE9mIiwianNvbiIsInN0YXR1cyIsInB1c2giLCJzdWNjZXNzIiwibWVzc2FnZSIsImF1dG9DbG9zZSIsImVycm9ycyIsImZpZWxkRXJyb3JzIiwibm9uRmllbGRFcnJvcnMiLCJmaWVsZEVycnMiLCJub25GaWVsZEVycnMiLCJlcnIiLCJuZXdGaWVsZEVycnMiLCJuZXdOb25GaWVsZEVycnMiLCJmb3JFYWNoIiwiZGF0YUVycm9yIiwiZXJyb3JNZXNzYWdlcyIsInN0YXR1c1RleHQiLCJnZXRGaWVsZHMiLCJnZXRGaWVsZCIsImdldFNpYmxpbmdEYXRhRnVuYyIsImdldERhdGFCeVBhdGhGdW5jIiwiZmlsZSIsImRhdGFXaXRoT3ZlcnJpZGVzIiwiZGF0YVRvU2VyaWFsaXplIiwiX3BheWxvYWQiLCJKU09OIiwic3RyaW5naWZ5Iiwic2VyaWFsaXplIiwiaW5kaWNlcyIsIm51bGxzQXNVbmRlZmluZWRzIiwicmVzZXQiLCJmaWVsZFNjaGVtYSIsInByZWZlcmVuY2VzIiwiaW5pdENvbnRleHRTdGF0ZSIsInJlcGxhY2VTdGF0ZSIsImdldEZpZWxkU3RhdGVCeVBhdGgiLCJnZXRGb3JtU3RhdGUiLCJzY2hlbWFQYXRoIiwicmVwbGFjZSIsImFkZEZpZWxkUm93Iiwicm93SW5kZXgiLCJzdWJGaWVsZFN0YXRlIiwiYmxvY2tUeXBlIiwicmVtb3ZlRmllbGRSb3ciLCJyZXBsYWNlRmllbGRSb3ciLCJ1c2VFZmZlY3QiLCJ1c2VUaHJvdHRsZWRFZmZlY3QiLCJjbGFzc2VzIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJ1c2VEZWJvdW5jZWRFZmZlY3QiLCJleGVjdXRlT25DaGFuZ2UiLCJvbkNoYW5nZUZuIiwiY2hhbmdlZCIsIm5ld1N0YXRlIiwibWVyZ2VTZXJ2ZXJGb3JtU3RhdGUiLCJvcHRpbWl6ZSIsImZvcm0iLCJub1ZhbGlkYXRlIiwicmVmIiwiRm9ybUNvbnRleHQiLCJQcm92aWRlciIsIkZvcm1XYXRjaENvbnRleHQiLCJTdWJtaXR0ZWRDb250ZXh0IiwiUHJvY2Vzc2luZ0NvbnRleHQiLCJNb2RpZmllZENvbnRleHQiLCJGb3JtRmllbGRzQ29udGV4dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OytCQXlsQkE7OztlQUFBOzs7a0VBcmxCd0I7NEJBQ0U7a0NBQ0E7MkJBQ0w7K0RBQ3VEOytCQUN0RDtrQkFVTztvQ0FDTTsyRUFDSjtzQkFDUDt3QkFDRTs4QkFDTTt3QkFDTjttQ0FDRzs2QkFDRTtxQkFDTjt5QkFRbEI7c0VBQ21COzhCQUNHO3NFQUNDO3VFQUNDO3lFQUNGO3NDQUNROzZFQUNKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVqQyxNQUFNQSxZQUFZO0FBRWxCLE1BQU1DLE9BQXdCLENBQUNDO0lBQzdCLE1BQU0sRUFBRUMsRUFBRSxFQUFFQyxpQkFBaUIsRUFBRSxHQUFHQyxJQUFBQSw2QkFBZTtJQUVqRCxNQUFNLEVBQ0pDLE1BQU0sRUFDTkMsUUFBUSxFQUNSQyxTQUFTLEVBQ1RDLG9CQUFvQixFQUNwQkMsUUFBUSxFQUNSLGtFQUFrRTtJQUNsRUMsWUFBWSxFQUNaQyxjQUFjLEVBQ2RDLFlBQVksRUFDWkMsUUFBUSxFQUNSQyxRQUFR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
|
|
505
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3Jtcy9Gb3JtL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgRmllbGQsIEZvcm1TdGF0ZSB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLW5vbmludGVyYWN0aXZlLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgaXNEZWVwRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gJ25leHQvbmF2aWdhdGlvbi5qcydcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gJ29iamVjdC10by1mb3JtZGF0YSdcbmltcG9ydCB7IHdhaXQgfSBmcm9tICdwYXlsb2FkL3V0aWxpdGllcydcbmltcG9ydCBRdWVyeVN0cmluZyBmcm9tICdxcydcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWR1Y2VyLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gJ3JlYWN0LXRvYXN0aWZ5J1xuXG5pbXBvcnQgdHlwZSB7IENvbnRleHQgYXMgRm9ybUNvbnRleHRUeXBlLCBHZXREYXRhQnlQYXRoLCBQcm9wcywgU3VibWl0T3B0aW9ucyB9IGZyb20gJy4vdHlwZXMuZC50cydcblxuaW1wb3J0IHsgdXNlRm9ybVF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL0Zvcm1RdWVyeVBhcmFtcy9pbmRleC5qcydcbmltcG9ydCB7IHVzZURlYm91bmNlZEVmZmVjdCB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZURlYm91bmNlZEVmZmVjdC5qcydcbmltcG9ydCB1c2VUaHJvdHRsZWRFZmZlY3QgZnJvbSAnLi4vLi4vaG9va3MvdXNlVGhyb3R0bGVkRWZmZWN0LmpzJ1xuaW1wb3J0IHsgdXNlQXV0aCB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9BdXRoL2luZGV4LmpzJ1xuaW1wb3J0IHsgdXNlQ29uZmlnIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL0NvbmZpZy9pbmRleC5qcydcbmltcG9ydCB7IHVzZURvY3VtZW50SW5mbyB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9Eb2N1bWVudEluZm8vaW5kZXguanMnXG5pbXBvcnQgeyB1c2VMb2NhbGUgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvTG9jYWxlL2luZGV4LmpzJ1xuaW1wb3J0IHsgdXNlT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL09wZXJhdGlvblByb3ZpZGVyL2luZGV4LmpzJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvVHJhbnNsYXRpb24vaW5kZXguanMnXG5pbXBvcnQgeyByZXF1ZXN0cyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9hcGkuanMnXG5pbXBvcnQgeyBnZXRGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZ2V0Rm9ybVN0YXRlLmpzJ1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRleHQsXG4gIEZvcm1GaWVsZHNDb250ZXh0LFxuICBGb3JtV2F0Y2hDb250ZXh0LFxuICBNb2RpZmllZENvbnRleHQsXG4gIFByb2Nlc3NpbmdDb250ZXh0LFxuICBTdWJtaXR0ZWRDb250ZXh0LFxufSBmcm9tICcuL2NvbnRleHQuanMnXG5pbXBvcnQgZXJyb3JNZXNzYWdlcyBmcm9tICcuL2Vycm9yTWVzc2FnZXMuanMnXG5pbXBvcnQgeyBmaWVsZFJlZHVjZXIgfSBmcm9tICcuL2ZpZWxkUmVkdWNlci5qcydcbmltcG9ydCBnZXREYXRhQnlQYXRoRnVuYyBmcm9tICcuL2dldERhdGFCeVBhdGguanMnXG5pbXBvcnQgZ2V0U2libGluZ0RhdGFGdW5jIGZyb20gJy4vZ2V0U2libGluZ0RhdGEuanMnXG5pbXBvcnQgaW5pdENvbnRleHRTdGF0ZSBmcm9tICcuL2luaXRDb250ZXh0U3RhdGUuanMnXG5pbXBvcnQgeyBtZXJnZVNlcnZlckZvcm1TdGF0ZSB9IGZyb20gJy4vbWVyZ2VTZXJ2ZXJGb3JtU3RhdGUuanMnXG5pbXBvcnQgcmVkdWNlRmllbGRzVG9WYWx1ZXMgZnJvbSAnLi9yZWR1Y2VGaWVsZHNUb1ZhbHVlcy5qcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ2Zvcm0nXG5cbmNvbnN0IEZvcm06IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGlkLCBnZXREb2NQcmVmZXJlbmNlcyB9ID0gdXNlRG9jdW1lbnRJbmZvKClcblxuICBjb25zdCB7XG4gICAgYWN0aW9uLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBkaXNhYmxlU3VjY2Vzc1N0YXR1cyxcbiAgICBkaXNhYmxlZCxcbiAgICAvLyBmaWVsZHM6IGZpZWxkc0Zyb21Qcm9wcyA9IGNvbGxlY3Rpb24/LmZpZWxkcyB8fCBnbG9iYWw/LmZpZWxkcyxcbiAgICBiZWZvcmVTdWJtaXQsXG4gICAgaGFuZGxlUmVzcG9uc2UsXG4gICAgaW5pdGlhbFN0YXRlLCAvLyBmdWxseSBmb3JtZWQgaW5pdGlhbCBmaWVsZCBzdGF0ZVxuICAgIG9uQ2hhbmdlLFxuICAgIG9uU3VibWl0LFxuICAgIG9uU3VjY2VzcyxcbiAgICByZWRpcmVjdCxcbiAgICBzdWJtaXR0ZWQ6IHN1Ym1pdHRlZEZyb21Qcm9wcyxcbiAgICB1dWlkLFxuICAgIHdhaXRGb3JBdXRvY29tcGxldGUsXG4gIH0gPSBwcm9wc1xuXG4gIGNvbnN0IG1ldGhvZCA9ICdtZXRob2QnIGluIHByb3BzID8gcHJvcHMubWV0aG9kIDogdW5kZWZpbmVkXG5cbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKClcblxuICBjb25zdCB7IGNvZGU6IGxvY2FsZSB9ID0gdXNlTG9jYWxlKClcbiAgY29uc3QgeyBpMThuLCB0IH0gPSB1c2VUcmFuc2xhdGlvbigpXG4gIGNvbnN0IHsgcmVmcmVzaENvb2tpZSwgdXNlciB9ID0gdXNlQXV0aCgpXG4gIGNvbnN0IG9wZXJhdGlvbiA9IHVzZU9wZXJhdGlvbigpXG4gIGNvbnN0IHsgZm9ybVF1ZXJ5UGFyYW1zIH0gPSB1c2VGb3JtUXVlcnlQYXJhbXMoKVxuXG4gIGNvbnN0IGNvbmZpZyA9IHVzZUNvbmZpZygpXG4gIGNvbnN0IHtcbiAgICByb3V0ZXM6IHsgYXBpOiBhcGlSb3V0ZSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IGNvbmZpZ1xuXG4gIGNvbnN0IFttb2RpZmllZCwgc2V0TW9kaWZpZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwcm9jZXNzaW5nLCBzZXRQcm9jZXNzaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc3VibWl0dGVkLCBzZXRTdWJtaXR0ZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGZvcm1SZWYgPSB1c2VSZWY8SFRNTEZvcm1FbGVtZW50PihudWxsKVxuICBjb25zdCBjb250ZXh0UmVmID0gdXNlUmVmKHt9IGFzIEZvcm1Db250ZXh0VHlwZSlcbiAgY29uc3QgeyBjb2xsZWN0aW9uU2x1ZywgZ2xvYmFsU2x1ZyB9ID0gdXNlRG9jdW1lbnRJbmZvKClcblxuICBjb25zdCBmaWVsZHNSZWR1Y2VyID0gdXNlUmVkdWNlcihmaWVsZFJlZHVjZXIsIHt9LCAoKSA9PiBpbml0aWFsU3RhdGUpXG4gIC8qKlxuICAgKiBgZmllbGRzYCBpcyB0aGUgY3VycmVudCwgdXAtdG8tZGF0ZSBzdGF0ZS9kYXRhIG9mIGFsbCBmaWVsZHMgaW4gdGhlIGZvcm0uIEl0IGNhbiBiZSBtb2RpZmllZCBieSB1c2luZyBkaXNwYXRjaEZpZWxkcyxcbiAgICogd2hpY2ggY2FsbHMgdGhlIGZpZWxkUmVkdWNlciwgd2hpY2ggdGhlbiB1cGRhdGVzIHRoZSBzdGF0ZS5cbiAgICovXG4gIGNvbnN0IFtmaWVsZHMsIGRpc3BhdGNoRmllbGRzXSA9IGZpZWxkc1JlZHVjZXJcblxuICBjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzID0gZmllbGRzXG5cbiAgY29uc3QgdmFsaWRhdGVGb3JtID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHZhbGlkYXRlZEZpZWxkU3RhdGUgPSB7fVxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZVxuXG4gICAgY29uc3QgZGF0YUZyb21Db250ZXh0ID0gY29udGV4dFJlZi5jdXJyZW50LmdldERhdGEoKVxuICAgIGNvbnN0IGRhdGEgPSBkYXRhRnJvbUNvbnRleHRcblxuICAgIGNvbnN0IHZhbGlkYXRpb25Qcm9taXNlcyA9IE9iamVjdC5lbnRyaWVzKGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMpLm1hcChcbiAgICAgIGFzeW5jIChbcGF0aCwgZmllbGRdKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlZEZpZWxkID0ge1xuICAgICAgICAgIC4uLmZpZWxkLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLnBhc3Nlc0NvbmRpdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBsZXQgdmFsaWRhdGlvblJlc3VsdDogYm9vbGVhbiB8IHN0cmluZyA9IHRydWVcblxuICAgICAgICAgIGlmICh0eXBlb2YgZmllbGQudmFsaWRhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZVRvVmFsaWRhdGUgPSBmaWVsZC52YWx1ZVxuXG4gICAgICAgICAgICBpZiAoZmllbGQ/LnJvd3MgJiYgQXJyYXkuaXNBcnJheShmaWVsZC5yb3dzKSkge1xuICAgICAgICAgICAgICB2YWx1ZVRvVmFsaWRhdGUgPSBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RGF0YUJ5UGF0aChwYXRoKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YWxpZGF0aW9uUmVzdWx0ID0gYXdhaXQgZmllbGQudmFsaWRhdGUodmFsdWVUb1ZhbGlkYXRlLCB7XG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICAgICAgc2libGluZ0RhdGE6IGNvbnRleHRSZWYuY3VycmVudC5nZXRTaWJsaW5nRGF0YShwYXRoKSxcbiAgICAgICAgICAgICAgdCxcbiAgICAgICAgICAgICAgdXNlcixcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0aW9uUmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFsaWRhdGVkRmllbGQuZXJyb3JNZXNzYWdlID0gdmFsaWRhdGlvblJlc3VsdFxuICAgICAgICAgICAgdmFsaWRhdGVkRmllbGQudmFsaWQgPSBmYWxzZVxuICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFsaWRhdGVkRmllbGRTdGF0ZVtwYXRoXSA9IHZhbGlkYXRlZEZpZWxkXG4gICAgICB9LFxuICAgIClcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKHZhbGlkYXRpb25Qcm9taXNlcylcblxuICAgIGlmICghaXNEZWVwRXF1YWwoY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcywgdmFsaWRhdGVkRmllbGRTdGF0ZSkpIHtcbiAgICAgIGRpc3BhdGNoRmllbGRzKHsgdHlwZTogJ1JFUExBQ0VfU1RBVEUnLCBzdGF0ZTogdmFsaWRhdGVkRmllbGRTdGF0ZSB9KVxuICAgIH1cblxuICAgIHJldHVybiBpc1ZhbGlkXG4gIH0sIFtpZCwgdXNlciwgb3BlcmF0aW9uLCB0LCBkaXNwYXRjaEZpZWxkcywgY29uZmlnXSlcblxuICBjb25zdCBzdWJtaXQgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAob3B0aW9uczogU3VibWl0T3B0aW9ucyA9IHt9LCBlKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGFjdGlvbjogYWN0aW9uVG9Vc2UgPSBhY3Rpb24sXG4gICAgICAgIG1ldGhvZDogbWV0aG9kVG9Vc2UgPSBtZXRob2QsXG4gICAgICAgIG92ZXJyaWRlcyA9IHt9LFxuICAgICAgICBza2lwVmFsaWRhdGlvbixcbiAgICAgIH0gPSBvcHRpb25zXG5cbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICBpZiAoZSkge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoZSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuXG4gICAgICBzZXRQcm9jZXNzaW5nKHRydWUpXG4gICAgICBzZXRTdWJtaXR0ZWQodHJ1ZSlcblxuICAgICAgaWYgKHdhaXRGb3JBdXRvY29tcGxldGUpIGF3YWl0IHdhaXQoMTAwKVxuXG4gICAgICAvLyBFeGVjdXRlIHNlcnZlciBzaWRlIHZhbGlkYXRpb25zXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShiZWZvcmVTdWJtaXQpKSB7XG4gICAgICAgIGxldCByZXZhbGlkYXRlZEZvcm1TdGF0ZTogRm9ybVN0YXRlXG5cbiAgICAgICAgYXdhaXQgYmVmb3JlU3VibWl0LnJlZHVjZShhc3luYyAocHJpb3JPbkNoYW5nZSwgYmVmb3JlU3VibWl0Rm4pID0+IHtcbiAgICAgICAgICBhd2FpdCBwcmlvck9uQ2hhbmdlXG5cbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiZWZvcmVTdWJtaXRGbih7XG4gICAgICAgICAgICBmb3JtU3RhdGU6IGZpZWxkcyxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgcmV2YWxpZGF0ZWRGb3JtU3RhdGUgPSByZXN1bHRcbiAgICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG5cbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IE9iamVjdC5lbnRyaWVzKHJldmFsaWRhdGVkRm9ybVN0YXRlKS5ldmVyeSgoWywgZmllbGRdKSA9PiBmaWVsZC52YWxpZClcblxuICAgICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgICBzZXRQcm9jZXNzaW5nKGZhbHNlKVxuICAgICAgICAgIHJldHVybiBkaXNwYXRjaEZpZWxkcyh7IHR5cGU6ICdSRVBMQUNFX1NUQVRFJywgc3RhdGU6IHJldmFsaWRhdGVkRm9ybVN0YXRlIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNWYWxpZCA9IHNraXBWYWxpZGF0aW9uID8gdHJ1ZSA6IGF3YWl0IGNvbnRleHRSZWYuY3VycmVudC52YWxpZGF0ZUZvcm0oKVxuXG4gICAgICAvLyBJZiBub3QgdmFsaWQsIHByZXZlbnQgc3VibWlzc2lvblxuICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgIHRvYXN0LmVycm9yKHQoJ2Vycm9yOmNvcnJlY3RJbnZhbGlkRmllbGRzJykpXG4gICAgICAgIHNldFByb2Nlc3NpbmcoZmFsc2UpXG5cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHN1Ym1pdCBoYW5kbGVyIGNvbWVzIHRocm91Z2ggdmlhIHByb3BzLCBydW4gdGhhdFxuICAgICAgaWYgKG9uU3VibWl0KSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgLi4ucmVkdWNlRmllbGRzVG9WYWx1ZXMoZmllbGRzLCB0cnVlKSxcbiAgICAgICAgICAuLi5vdmVycmlkZXMsXG4gICAgICAgIH1cblxuICAgICAgICBvblN1Ym1pdChmaWVsZHMsIGRhdGEpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvcm1EYXRhID0gY29udGV4dFJlZi5jdXJyZW50LmNyZWF0ZUZvcm1EYXRhKG92ZXJyaWRlcylcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IHJlc1xuXG4gICAgICAgIGlmICh0eXBlb2YgYWN0aW9uVG9Vc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgY29uc3QgYWN0aW9uRW5kcG9pbnQgPSBgJHthY3Rpb25Ub1VzZX0ke1F1ZXJ5U3RyaW5nLnN0cmluZ2lmeShmb3JtUXVlcnlQYXJhbXMsIHsgYWRkUXVlcnlQcmVmaXg6IHRydWUgfSl9YFxuICAgICAgICAgIHJlcyA9IGF3YWl0IHJlcXVlc3RzW21ldGhvZFRvVXNlLnRvTG93ZXJDYXNlKCldKGFjdGlvbkVuZHBvaW50LCB7XG4gICAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjdGlvblRvVXNlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmVzID0gYXdhaXQgYWN0aW9uVG9Vc2UoZm9ybURhdGEpXG4gICAgICAgIH1cblxuICAgICAgICBzZXRNb2RpZmllZChmYWxzZSlcblxuICAgICAgICBpZiAodHlwZW9mIGhhbmRsZVJlc3BvbnNlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgaGFuZGxlUmVzcG9uc2UocmVzKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgc2V0UHJvY2Vzc2luZyhmYWxzZSlcblxuICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IHJlcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJylcbiAgICAgICAgY29uc3QgaXNKU09OID0gY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuaW5kZXhPZignYXBwbGljYXRpb24vanNvbicpICE9PSAtMVxuXG4gICAgICAgIGxldCBqc29uOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge31cblxuICAgICAgICBpZiAoaXNKU09OKSBqc29uID0gYXdhaXQgcmVzLmpzb24oKVxuXG4gICAgICAgIGlmIChyZXMuc3RhdHVzIDwgNDAwKSB7XG4gICAgICAgICAgc2V0U3VibWl0dGVkKGZhbHNlKVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiBvblN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIG9uU3VjY2Vzcyhqc29uKVxuXG4gICAgICAgICAgaWYgKHJlZGlyZWN0KSB7XG4gICAgICAgICAgICByb3V0ZXIucHVzaChyZWRpcmVjdClcbiAgICAgICAgICB9IGVsc2UgaWYgKCFkaXNhYmxlU3VjY2Vzc1N0YXR1cykge1xuICAgICAgICAgICAgdG9hc3Quc3VjY2Vzcyhqc29uLm1lc3NhZ2UgfHwgdCgnZ2VuZXJhbDpzdWJtaXNzaW9uU3VjY2Vzc2Z1bCcpLCB7IGF1dG9DbG9zZTogMzAwMCB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IC4uLmNvbnRleHRSZWYuY3VycmVudCB9IC8vIHRyaWdnZXJzIHJlcmVuZGVyIG9mIGFsbCBjb21wb25lbnRzIHRoYXQgc3Vic2NyaWJlIHRvIGZvcm1cbiAgICAgICAgICBpZiAoanNvbi5tZXNzYWdlKSB7XG4gICAgICAgICAgICB0b2FzdC5lcnJvcihqc29uLm1lc3NhZ2UpXG5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGpzb24uZXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgW2ZpZWxkRXJyb3JzLCBub25GaWVsZEVycm9yc10gPSBqc29uLmVycm9ycy5yZWR1Y2UoXG4gICAgICAgICAgICAgIChbZmllbGRFcnJzLCBub25GaWVsZEVycnNdLCBlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdGaWVsZEVycnMgPSBbXVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld05vbkZpZWxkRXJycyA9IFtdXG5cbiAgICAgICAgICAgICAgICBpZiAoZXJyPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICBuZXdOb25GaWVsZEVycnMucHVzaChlcnIpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyPy5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgZXJyLmRhdGEuZm9yRWFjaCgoZGF0YUVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhRXJyb3I/LmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgbmV3RmllbGRFcnJzLnB1c2goZGF0YUVycm9yKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIG5ld05vbkZpZWxkRXJycy5wdXNoKGRhdGFFcnJvcilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgWy4uLmZpZWxkRXJycywgLi4ubmV3RmllbGRFcnJzXSxcbiAgICAgICAgICAgICAgICAgIFsuLi5ub25GaWVsZEVycnMsIC4uLm5ld05vbkZpZWxkRXJyc10sXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbW10sIFtdXSxcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgZmllbGRFcnJvcnMuZm9yRWFjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgIGRpc3BhdGNoRmllbGRzKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnVVBEQVRFJyxcbiAgICAgICAgICAgICAgICAuLi4oY29udGV4dFJlZi5jdXJyZW50Py5maWVsZHM/LltlcnIuZmllbGRdIHx8IHt9KSxcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U6IGVyci5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIHBhdGg6IGVyci5maWVsZCxcbiAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBub25GaWVsZEVycm9ycy5mb3JFYWNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgdG9hc3QuZXJyb3IoZXJyLm1lc3NhZ2UgfHwgdCgnZXJyb3I6dW5rbm93bicpKVxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yTWVzc2FnZXM/LltyZXMuc3RhdHVzXSB8fCByZXM/LnN0YXR1c1RleHQgfHwgdCgnZXJyb3I6dW5rbm93bicpXG5cbiAgICAgICAgICB0b2FzdC5lcnJvcihtZXNzYWdlKVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgc2V0UHJvY2Vzc2luZyhmYWxzZSlcblxuICAgICAgICB0b2FzdC5lcnJvcihlcnIpXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBhY3Rpb24sXG4gICAgICBkaXNhYmxlU3VjY2Vzc1N0YXR1cyxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgZGlzcGF0Y2hGaWVsZHMsXG4gICAgICBmaWVsZHMsXG4gICAgICBoYW5kbGVSZXNwb25zZSxcbiAgICAgIG1ldGhvZCxcbiAgICAgIG9uU3VibWl0LFxuICAgICAgb25TdWNjZXNzLFxuICAgICAgcmVkaXJlY3QsXG4gICAgICByb3V0ZXIsXG4gICAgICB0LFxuICAgICAgaTE4bixcbiAgICAgIHdhaXRGb3JBdXRvY29tcGxldGUsXG4gICAgICBiZWZvcmVTdWJtaXQsXG4gICAgICBmb3JtUXVlcnlQYXJhbXMsXG4gICAgXSxcbiAgKVxuXG4gIGNvbnN0IGdldEZpZWxkcyA9IHVzZUNhbGxiYWNrKCgpID0+IGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMsIFtdKVxuXG4gIGNvbnN0IGdldEZpZWxkID0gdXNlQ2FsbGJhY2soKHBhdGg6IHN0cmluZykgPT4gY29udGV4dFJlZi5jdXJyZW50LmZpZWxkc1twYXRoXSwgW10pXG5cbiAgY29uc3QgZ2V0RGF0YSA9IHVzZUNhbGxiYWNrKCgpID0+IHJlZHVjZUZpZWxkc1RvVmFsdWVzKGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMsIHRydWUpLCBbXSlcblxuICBjb25zdCBnZXRTaWJsaW5nRGF0YSA9IHVzZUNhbGxiYWNrKFxuICAgIChwYXRoOiBzdHJpbmcpID0+IGdldFNpYmxpbmdEYXRhRnVuYyhjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCBwYXRoKSxcbiAgICBbXSxcbiAgKVxuICBjb25zdCBnZXREYXRhQnlQYXRoID0gdXNlQ2FsbGJhY2s8R2V0RGF0YUJ5UGF0aD4oXG4gICAgKHBhdGg6IHN0cmluZykgPT4gZ2V0RGF0YUJ5UGF0aEZ1bmMoY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcywgcGF0aCksXG4gICAgW10sXG4gIClcblxuICBjb25zdCBjcmVhdGVGb3JtRGF0YSA9IHVzZUNhbGxiYWNrKChvdmVycmlkZXM6IGFueSA9IHt9KSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IHJlZHVjZUZpZWxkc1RvVmFsdWVzKGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMsIHRydWUpXG5cbiAgICBjb25zdCBmaWxlID0gZGF0YT8uZmlsZVxuXG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIGRlbGV0ZSBkYXRhLmZpbGVcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhV2l0aE92ZXJyaWRlcyA9IHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICAuLi5vdmVycmlkZXMsXG4gICAgfVxuXG4gICAgY29uc3QgZGF0YVRvU2VyaWFsaXplID0ge1xuICAgICAgX3BheWxvYWQ6IEpTT04uc3RyaW5naWZ5KGRhdGFXaXRoT3ZlcnJpZGVzKSxcbiAgICAgIGZpbGUsXG4gICAgfVxuXG4gICAgLy8gbnVsbEFzVW5kZWZpbmVkcyBpcyBpbXBvcnRhbnQgdG8gYWxsb3cgdXBsb2FkcyBhbmQgcmVsYXRpb25zaGlwIGZpZWxkcyB0byBjbGVhciB0aGVtc2VsdmVzXG4gICAgY29uc3QgZm9ybURhdGEgPSBzZXJpYWxpemUoZGF0YVRvU2VyaWFsaXplLCB7IGluZGljZXM6IHRydWUsIG51bGxzQXNVbmRlZmluZWRzOiBmYWxzZSB9KVxuXG4gICAgcmV0dXJuIGZvcm1EYXRhXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHJlc2V0ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGZpZWxkU2NoZW1hOiBGaWVsZFtdLCBkYXRhOiB1bmtub3duKSA9PiB7XG4gICAgICBjb25zdCBwcmVmZXJlbmNlcyA9IGF3YWl0IGdldERvY1ByZWZlcmVuY2VzKClcbiAgICAgIC8vIGNvbnN0IHN0YXRlID0gYXdhaXQgYnVpbGRTdGF0ZUZyb21TY2hlbWEoe1xuICAgICAgLy8gICBpZCxcbiAgICAgIC8vICAgLy8gVE9ETzogZml4IHRoaXNcbiAgICAgIC8vICAgLy8gQHRzLWlnbm9yZS1uZXh0LWxpbmVcbiAgICAgIC8vICAgY29uZmlnLFxuICAgICAgLy8gICBkYXRhLFxuICAgICAgLy8gICBmaWVsZFNjaGVtYSxcbiAgICAgIC8vICAgbG9jYWxlLFxuICAgICAgLy8gICBvcGVyYXRpb24sXG4gICAgICAvLyAgIHByZWZlcmVuY2VzLFxuICAgICAgLy8gICB0LFxuICAgICAgLy8gICB1c2VyLFxuICAgICAgLy8gfSlcbiAgICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uaW5pdENvbnRleHRTdGF0ZSB9IGFzIEZvcm1Db250ZXh0VHlwZVxuICAgICAgc2V0TW9kaWZpZWQoZmFsc2UpXG4gICAgICAvLyBkaXNwYXRjaEZpZWxkcyh7IHN0YXRlLCB0eXBlOiAnUkVQTEFDRV9TVEFURScgfSlcbiAgICB9LFxuICAgIFtnZXREb2NQcmVmZXJlbmNlc10sXG4gIClcblxuICBjb25zdCByZXBsYWNlU3RhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAoc3RhdGU6IEZvcm1TdGF0ZSkgPT4ge1xuICAgICAgY29udGV4dFJlZi5jdXJyZW50ID0geyAuLi5pbml0Q29udGV4dFN0YXRlIH0gYXMgRm9ybUNvbnRleHRUeXBlXG4gICAgICBzZXRNb2RpZmllZChmYWxzZSlcbiAgICAgIGRpc3BhdGNoRmllbGRzKHsgdHlwZTogJ1JFUExBQ0VfU1RBVEUnLCBzdGF0ZSB9KVxuICAgIH0sXG4gICAgW2Rpc3BhdGNoRmllbGRzXSxcbiAgKVxuXG4gIGNvbnN0IGdldEZpZWxkU3RhdGVCeVBhdGggPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoeyBkYXRhLCBwYXRoIH0pID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkU2NoZW1hID0gYXdhaXQgZ2V0Rm9ybVN0YXRlKHtcbiAgICAgICAgYXBpUm91dGUsXG4gICAgICAgIGJvZHk6IHtcbiAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGdsb2JhbFNsdWcsXG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICBUdXJuczogJ2FycmF5RmllbGQuMC5ncm91cDEyM2ZpZWxkLmFycmF5RmllbGQuMC50ZXh0RmllbGQnXG4gICAgICAgICAgICBJbnRvOiAnYXJyYXlGaWVsZC5ncm91cDEyM2ZpZWxkLmFycmF5RmllbGQudGV4dEZpZWxkJ1xuICAgICAgICAgICovXG4gICAgICAgICAgc2NoZW1hUGF0aDogYCR7Y29sbGVjdGlvblNsdWcgfHwgZ2xvYmFsU2x1Z30uJHtwYXRofWAucmVwbGFjZSgvXFwuXFxkK1xcLi9nLCAnLicpLFxuICAgICAgICB9LFxuICAgICAgICBzZXJ2ZXJVUkwsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIGZpZWxkU2NoZW1hXG4gICAgfSxcbiAgICBbYXBpUm91dGUsIGNvbGxlY3Rpb25TbHVnLCBnbG9iYWxTbHVnLCBzZXJ2ZXJVUkxdLFxuICApXG5cbiAgY29uc3QgYWRkRmllbGRSb3c6IEZvcm1Db250ZXh0VHlwZVsnYWRkRmllbGRSb3cnXSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7IGRhdGEsIHBhdGgsIHJvd0luZGV4IH0pID0+IHtcbiAgICAgIGNvbnN0IHN1YkZpZWxkU3RhdGUgPSBhd2FpdCBnZXRGaWVsZFN0YXRlQnlQYXRoKHsgZGF0YSwgcGF0aCB9KVxuXG4gICAgICBkaXNwYXRjaEZpZWxkcyh7XG4gICAgICAgIHR5cGU6ICdBRERfUk9XJyxcbiAgICAgICAgYmxvY2tUeXBlOiBkYXRhPy5ibG9ja1R5cGUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHJvd0luZGV4LFxuICAgICAgICBzdWJGaWVsZFN0YXRlLFxuICAgICAgfSlcbiAgICB9LFxuICAgIFtnZXRGaWVsZFN0YXRlQnlQYXRoLCBkaXNwYXRjaEZpZWxkc10sXG4gIClcblxuICBjb25zdCByZW1vdmVGaWVsZFJvdzogRm9ybUNvbnRleHRUeXBlWydyZW1vdmVGaWVsZFJvdyddID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgcGF0aCwgcm93SW5kZXggfSkgPT4ge1xuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyB0eXBlOiAnUkVNT1ZFX1JPVycsIHBhdGgsIHJvd0luZGV4IH0pXG4gICAgfSxcbiAgICBbZGlzcGF0Y2hGaWVsZHNdLFxuICApXG5cbiAgY29uc3QgcmVwbGFjZUZpZWxkUm93OiBGb3JtQ29udGV4dFR5cGVbJ3JlcGxhY2VGaWVsZFJvdyddID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHsgZGF0YSwgcGF0aCwgcm93SW5kZXggfSkgPT4ge1xuICAgICAgY29uc3Qgc3ViRmllbGRTdGF0ZSA9IGF3YWl0IGdldEZpZWxkU3RhdGVCeVBhdGgoeyBkYXRhLCBwYXRoIH0pXG5cbiAgICAgIGRpc3BhdGNoRmllbGRzKHtcbiAgICAgICAgdHlwZTogJ1JFUExBQ0VfUk9XJyxcbiAgICAgICAgYmxvY2tUeXBlOiBkYXRhPy5ibG9ja1R5cGUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHJvd0luZGV4LFxuICAgICAgICBzdWJGaWVsZFN0YXRlLFxuICAgICAgfSlcbiAgICB9LFxuICAgIFtnZXRGaWVsZFN0YXRlQnlQYXRoLCBkaXNwYXRjaEZpZWxkc10sXG4gIClcblxuICBjb250ZXh0UmVmLmN1cnJlbnQuc3VibWl0ID0gc3VibWl0XG4gIGNvbnRleHRSZWYuY3VycmVudC5nZXRGaWVsZHMgPSBnZXRGaWVsZHNcbiAgY29udGV4dFJlZi5jdXJyZW50LmdldEZpZWxkID0gZ2V0RmllbGRcbiAgY29udGV4dFJlZi5jdXJyZW50LmdldERhdGEgPSBnZXREYXRhXG4gIGNvbnRleHRSZWYuY3VycmVudC5nZXRTaWJsaW5nRGF0YSA9IGdldFNpYmxpbmdEYXRhXG4gIGNvbnRleHRSZWYuY3VycmVudC5nZXREYXRhQnlQYXRoID0gZ2V0RGF0YUJ5UGF0aFxuICBjb250ZXh0UmVmLmN1cnJlbnQudmFsaWRhdGVGb3JtID0gdmFsaWRhdGVGb3JtXG4gIGNvbnRleHRSZWYuY3VycmVudC5jcmVhdGVGb3JtRGF0YSA9IGNyZWF0ZUZvcm1EYXRhXG4gIGNvbnRleHRSZWYuY3VycmVudC5zZXRNb2RpZmllZCA9IHNldE1vZGlmaWVkXG4gIGNvbnRleHRSZWYuY3VycmVudC5zZXRQcm9jZXNzaW5nID0gc2V0UHJvY2Vzc2luZ1xuICBjb250ZXh0UmVmLmN1cnJlbnQuc2V0U3VibWl0dGVkID0gc2V0U3VibWl0dGVkXG4gIGNvbnRleHRSZWYuY3VycmVudC5kaXNhYmxlZCA9IGRpc2FibGVkXG4gIGNvbnRleHRSZWYuY3VycmVudC5mb3JtUmVmID0gZm9ybVJlZlxuICBjb250ZXh0UmVmLmN1cnJlbnQucmVzZXQgPSByZXNldFxuICBjb250ZXh0UmVmLmN1cnJlbnQucmVwbGFjZVN0YXRlID0gcmVwbGFjZVN0YXRlXG4gIGNvbnRleHRSZWYuY3VycmVudC5kaXNwYXRjaEZpZWxkcyA9IGRpc3BhdGNoRmllbGRzXG4gIGNvbnRleHRSZWYuY3VycmVudC5hZGRGaWVsZFJvdyA9IGFkZEZpZWxkUm93XG4gIGNvbnRleHRSZWYuY3VycmVudC5yZW1vdmVGaWVsZFJvdyA9IHJlbW92ZUZpZWxkUm93XG4gIGNvbnRleHRSZWYuY3VycmVudC5yZXBsYWNlRmllbGRSb3cgPSByZXBsYWNlRmllbGRSb3dcbiAgY29udGV4dFJlZi5jdXJyZW50LnV1aWQgPSB1dWlkXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHN1Ym1pdHRlZEZyb21Qcm9wcyA9PT0gJ2Jvb2xlYW4nKSBzZXRTdWJtaXR0ZWQoc3VibWl0dGVkRnJvbVByb3BzKVxuICB9LCBbc3VibWl0dGVkRnJvbVByb3BzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbml0aWFsU3RhdGUpIHtcbiAgICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uaW5pdENvbnRleHRTdGF0ZSB9IGFzIEZvcm1Db250ZXh0VHlwZVxuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyB0eXBlOiAnUkVQTEFDRV9TVEFURScsIHN0YXRlOiBpbml0aWFsU3RhdGUgfSlcbiAgICB9XG4gIH0sIFtpbml0aWFsU3RhdGUsIGRpc3BhdGNoRmllbGRzXSlcblxuICB1c2VUaHJvdHRsZWRFZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgcmVmcmVzaENvb2tpZSgpXG4gICAgfSxcbiAgICAxNTAwMCxcbiAgICBbZmllbGRzXSxcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29udGV4dFJlZi5jdXJyZW50ID0geyAuLi5jb250ZXh0UmVmLmN1cnJlbnQgfSAvLyB0cmlnZ2VycyByZXJlbmRlciBvZiBhbGwgY29tcG9uZW50cyB0aGF0IHN1YnNjcmliZSB0byBmb3JtXG4gICAgc2V0TW9kaWZpZWQoZmFsc2UpXG4gIH0sIFtsb2NhbGVdKVxuXG4gIGNvbnN0IGNsYXNzZXMgPSBbY2xhc3NOYW1lLCBiYXNlQ2xhc3NdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJylcblxuICB1c2VEZWJvdW5jZWRFZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgZXhlY3V0ZU9uQ2hhbmdlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbkNoYW5nZSkpIHtcbiAgICAgICAgICBsZXQgcmV2YWxpZGF0ZWRGb3JtU3RhdGU6IEZvcm1TdGF0ZVxuXG4gICAgICAgICAgYXdhaXQgb25DaGFuZ2UucmVkdWNlKGFzeW5jIChwcmlvck9uQ2hhbmdlLCBvbkNoYW5nZUZuKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBwcmlvck9uQ2hhbmdlXG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG9uQ2hhbmdlRm4oe1xuICAgICAgICAgICAgICBmb3JtU3RhdGU6IGZpZWxkcyxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHJldmFsaWRhdGVkRm9ybVN0YXRlID0gcmVzdWx0XG4gICAgICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG5cbiAgICAgICAgICBjb25zdCB7IGNoYW5nZWQsIG5ld1N0YXRlIH0gPSBtZXJnZVNlcnZlckZvcm1TdGF0ZShmaWVsZHMsIHJldmFsaWRhdGVkRm9ybVN0YXRlKVxuXG4gICAgICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgICAgIGRpc3BhdGNoRmllbGRzKHsgdHlwZTogJ1JFUExBQ0VfU1RBVEUnLCBvcHRpbWl6ZTogZmFsc2UsIHN0YXRlOiBuZXdTdGF0ZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2b2lkIGV4ZWN1dGVPbkNoYW5nZSgpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgfSxcbiAgICAxNTAsXG4gICAgW2ZpZWxkcywgZGlzcGF0Y2hGaWVsZHMsIG9uQ2hhbmdlXSxcbiAgKVxuXG4gIGNvbnN0IGFjdGlvblN0cmluZyA9XG4gICAgdHlwZW9mIGFjdGlvbiA9PT0gJ3N0cmluZydcbiAgICAgID8gYCR7YWN0aW9ufSR7UXVlcnlTdHJpbmcuc3RyaW5naWZ5KGZvcm1RdWVyeVBhcmFtcywgeyBhZGRRdWVyeVByZWZpeDogdHJ1ZSB9KX1gXG4gICAgICA6ICcnXG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybVxuICAgICAgYWN0aW9uPXttZXRob2QgPyBhY3Rpb25TdHJpbmcgOiBhY3Rpb259XG4gICAgICBjbGFzc05hbWU9e2NsYXNzZXN9XG4gICAgICBtZXRob2Q9e21ldGhvZH1cbiAgICAgIG5vVmFsaWRhdGVcbiAgICAgIG9uU3VibWl0PXsoZSkgPT4gY29udGV4dFJlZi5jdXJyZW50LnN1Ym1pdCh7fSwgZSl9XG4gICAgICByZWY9e2Zvcm1SZWZ9XG4gICAgPlxuICAgICAgPEZvcm1Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0UmVmLmN1cnJlbnR9PlxuICAgICAgICA8Rm9ybVdhdGNoQ29udGV4dC5Qcm92aWRlclxuICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICAuLi5jb250ZXh0UmVmLmN1cnJlbnQsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTdWJtaXR0ZWRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtzdWJtaXR0ZWR9PlxuICAgICAgICAgICAgPFByb2Nlc3NpbmdDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtwcm9jZXNzaW5nfT5cbiAgICAgICAgICAgICAgPE1vZGlmaWVkQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bW9kaWZpZWR9PlxuICAgICAgICAgICAgICAgIDxGb3JtRmllbGRzQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17ZmllbGRzUmVkdWNlcn0+XG4gICAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgICAgPC9Gb3JtRmllbGRzQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICAgICAgPC9Nb2RpZmllZENvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICAgICA8L1Byb2Nlc3NpbmdDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgIDwvU3VibWl0dGVkQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgPC9Gb3JtV2F0Y2hDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9Gb3JtQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L2Zvcm0+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgRm9ybVxuIl0sIm5hbWVzIjpbImlzRGVlcEVxdWFsIiwidXNlUm91dGVyIiwic2VyaWFsaXplIiwid2FpdCIsIlF1ZXJ5U3RyaW5nIiwiUmVhY3QiLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVJlZHVjZXIiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInRvYXN0IiwidXNlRm9ybVF1ZXJ5UGFyYW1zIiwidXNlRGVib3VuY2VkRWZmZWN0IiwidXNlVGhyb3R0bGVkRWZmZWN0IiwidXNlQXV0aCIsInVzZUNvbmZpZyIsInVzZURvY3VtZW50SW5mbyIsInVzZUxvY2FsZSIsInVzZU9wZXJhdGlvbiIsInVzZVRyYW5zbGF0aW9uIiwicmVxdWVzdHMiLCJnZXRGb3JtU3RhdGUiLCJGb3JtQ29udGV4dCIsIkZvcm1GaWVsZHNDb250ZXh0IiwiRm9ybVdhdGNoQ29udGV4dCIsIk1vZGlmaWVkQ29udGV4dCIsIlByb2Nlc3NpbmdDb250ZXh0IiwiU3VibWl0dGVkQ29udGV4dCIsImVycm9yTWVzc2FnZXMiLCJmaWVsZFJlZHVjZXIiLCJnZXREYXRhQnlQYXRoRnVuYyIsImdldFNpYmxpbmdEYXRhRnVuYyIsImluaXRDb250ZXh0U3RhdGUiLCJtZXJnZVNlcnZlckZvcm1TdGF0ZSIsInJlZHVjZUZpZWxkc1RvVmFsdWVzIiwiYmFzZUNsYXNzIiwiRm9ybSIsInByb3BzIiwiaWQiLCJnZXREb2NQcmVmZXJlbmNlcyIsImFjdGlvbiIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiZGlzYWJsZVN1Y2Nlc3NTdGF0dXMiLCJkaXNhYmxlZCIsImJlZm9yZVN1Ym1pdCIsImhhbmRsZVJlc3BvbnNlIiwiaW5pdGlhbFN0YXRlIiwib25DaGFuZ2UiLCJvblN1Ym1pdCIsIm9uU3VjY2VzcyIsInJlZGlyZWN0Iiwic3VibWl0dGVkIiwic3VibWl0dGVkRnJvbVByb3BzIiwidXVpZCIsIndhaXRGb3JBdXRvY29tcGxldGUiLCJtZXRob2QiLCJ1bmRlZmluZWQiLCJyb3V0ZXIiLCJjb2RlIiwibG9jYWxlIiwiaTE4biIsInQiLCJyZWZyZXNoQ29va2llIiwidXNlciIsIm9wZXJhdGlvbiIsImZvcm1RdWVyeVBhcmFtcyIsImNvbmZpZyIsInJvdXRlcyIsImFwaSIsImFwaVJvdXRlIiwic2VydmVyVVJMIiwibW9kaWZpZWQiLCJzZXRNb2RpZmllZCIsInByb2Nlc3NpbmciLCJzZXRQcm9jZXNzaW5nIiwic2V0U3VibWl0dGVkIiwiZm9ybVJlZiIsImNvbnRleHRSZWYiLCJjb2xsZWN0aW9uU2x1ZyIsImdsb2JhbFNsdWciLCJmaWVsZHNSZWR1Y2VyIiwiZmllbGRzIiwiZGlzcGF0Y2hGaWVsZHMiLCJjdXJyZW50IiwidmFsaWRhdGVGb3JtIiwidmFsaWRhdGVkRmllbGRTdGF0ZSIsImlzVmFsaWQiLCJkYXRhRnJvbUNvbnRleHQiLCJnZXREYXRhIiwiZGF0YSIsInZhbGlkYXRpb25Qcm9taXNlcyIsIk9iamVjdCIsImVudHJpZXMiLCJtYXAiLCJwYXRoIiwiZmllbGQiLCJ2YWxpZGF0ZWRGaWVsZCIsInZhbGlkIiwicGFzc2VzQ29uZGl0aW9uIiwidmFsaWRhdGlvblJlc3VsdCIsInZhbGlkYXRlIiwidmFsdWVUb1ZhbGlkYXRlIiwidmFsdWUiLCJyb3dzIiwiQXJyYXkiLCJpc0FycmF5IiwiZ2V0RGF0YUJ5UGF0aCIsInNpYmxpbmdEYXRhIiwiZ2V0U2libGluZ0RhdGEiLCJlcnJvck1lc3NhZ2UiLCJQcm9taXNlIiwiYWxsIiwidHlwZSIsInN0YXRlIiwic3VibWl0Iiwib3B0aW9ucyIsImUiLCJhY3Rpb25Ub1VzZSIsIm1ldGhvZFRvVXNlIiwib3ZlcnJpZGVzIiwic2tpcFZhbGlkYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsInJldmFsaWRhdGVkRm9ybVN0YXRlIiwicmVkdWNlIiwicHJpb3JPbkNoYW5nZSIsImJlZm9yZVN1Ym1pdEZuIiwicmVzdWx0IiwiZm9ybVN0YXRlIiwicmVzb2x2ZSIsImV2ZXJ5IiwiZXJyb3IiLCJmb3JtRGF0YSIsImNyZWF0ZUZvcm1EYXRhIiwicmVzIiwiYWN0aW9uRW5kcG9pbnQiLCJzdHJpbmdpZnkiLCJhZGRRdWVyeVByZWZpeCIsInRvTG93ZXJDYXNlIiwiYm9keSIsImhlYWRlcnMiLCJsYW5ndWFnZSIsImNvbnRlbnRUeXBlIiwiZ2V0IiwiaXNKU09OIiwiaW5kZXhPZiIsImpzb24iLCJzdGF0dXMiLCJwdXNoIiwic3VjY2VzcyIsIm1lc3NhZ2UiLCJhdXRvQ2xvc2UiLCJlcnJvcnMiLCJmaWVsZEVycm9ycyIsIm5vbkZpZWxkRXJyb3JzIiwiZmllbGRFcnJzIiwibm9uRmllbGRFcnJzIiwiZXJyIiwibmV3RmllbGRFcnJzIiwibmV3Tm9uRmllbGRFcnJzIiwiZm9yRWFjaCIsImRhdGFFcnJvciIsInN0YXR1c1RleHQiLCJnZXRGaWVsZHMiLCJnZXRGaWVsZCIsImZpbGUiLCJkYXRhV2l0aE92ZXJyaWRlcyIsImRhdGFUb1NlcmlhbGl6ZSIsIl9wYXlsb2FkIiwiSlNPTiIsImluZGljZXMiLCJudWxsc0FzVW5kZWZpbmVkcyIsInJlc2V0IiwiZmllbGRTY2hlbWEiLCJwcmVmZXJlbmNlcyIsInJlcGxhY2VTdGF0ZSIsImdldEZpZWxkU3RhdGVCeVBhdGgiLCJzY2hlbWFQYXRoIiwicmVwbGFjZSIsImFkZEZpZWxkUm93Iiwicm93SW5kZXgiLCJzdWJGaWVsZFN0YXRlIiwiYmxvY2tUeXBlIiwicmVtb3ZlRmllbGRSb3ciLCJyZXBsYWNlRmllbGRSb3ciLCJjbGFzc2VzIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJleGVjdXRlT25DaGFuZ2UiLCJvbkNoYW5nZUZuIiwiY2hhbmdlZCIsIm5ld1N0YXRlIiwib3B0aW1pemUiLCJhY3Rpb25TdHJpbmciLCJmb3JtIiwibm9WYWxpZGF0ZSIsInJlZiIsIlByb3ZpZGVyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUdBLGtFQUFrRSxHQUNsRSxPQUFPQSxpQkFBaUIsYUFBWTtBQUNwQyxTQUFTQyxTQUFTLFFBQVEscUJBQW9CO0FBQzlDLFNBQVNDLFNBQVMsUUFBUSxxQkFBb0I7QUFDOUMsU0FBU0MsSUFBSSxRQUFRLG9CQUFtQjtBQUN4QyxPQUFPQyxpQkFBaUIsS0FBSTtBQUM1QixPQUFPQyxTQUFTQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsVUFBVSxFQUFFQyxNQUFNLEVBQUVDLFFBQVEs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
|