@payloadcms/ui 3.0.0-alpha.2 → 3.0.0-alpha.21
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.js +25 -81
- package/dist/elements/ArrayAction/types.js +2 -5
- package/dist/elements/Autosave/index.js +37 -92
- package/dist/elements/Autosave/types.js +2 -5
- package/dist/elements/Banner/index.js +10 -34
- package/dist/elements/Banner/types.js +2 -5
- package/dist/elements/Button/index.js +34 -93
- package/dist/elements/Button/types.js +2 -5
- package/dist/elements/Card/index.js +9 -24
- package/dist/elements/Card/types.js +2 -5
- package/dist/elements/CodeEditor/CodeEditor.js +10 -25
- package/dist/elements/CodeEditor/index.js +8 -59
- package/dist/elements/CodeEditor/types.js +2 -5
- package/dist/elements/Collapsible/index.js +26 -82
- package/dist/elements/Collapsible/provider.js +7 -66
- package/dist/elements/Collapsible/types.js +2 -5
- package/dist/elements/ColumnSelector/index.js +20 -76
- package/dist/elements/ColumnSelector/types.js +2 -5
- package/dist/elements/CopyToClipboard/index.js +14 -65
- package/dist/elements/CopyToClipboard/types.js +2 -5
- package/dist/elements/DatePicker/DatePicker.js +19 -75
- package/dist/elements/DatePicker/index.js +8 -59
- package/dist/elements/DatePicker/types.js +2 -5
- package/dist/elements/DeleteDocument/index.js +36 -86
- package/dist/elements/DeleteDocument/types.js +2 -5
- package/dist/elements/DeleteMany/index.js +38 -102
- package/dist/elements/DeleteMany/types.js +2 -5
- package/dist/elements/DocumentControls/index.js +46 -102
- package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.js +62 -114
- package/dist/elements/DocumentDrawer/index.js +33 -98
- package/dist/elements/DocumentDrawer/types.js +2 -5
- 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 +17 -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.js +7 -66
- package/dist/elements/DraggableSortable/DraggableSortableItem/types.js +2 -5
- package/dist/elements/DraggableSortable/index.js +15 -66
- package/dist/elements/DraggableSortable/types.js +2 -5
- 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 +1 -1
- package/dist/elements/Drawer/index.js +32 -94
- package/dist/elements/Drawer/types.js +2 -5
- package/dist/elements/Drawer/useDrawerSlug.js +8 -18
- package/dist/elements/Dropzone/index.js +20 -35
- package/dist/elements/DuplicateDocument/index.js +33 -83
- package/dist/elements/DuplicateDocument/types.js +2 -5
- package/dist/elements/EditMany/index.d.ts.map +1 -1
- package/dist/elements/EditMany/index.js +72 -125
- package/dist/elements/EditMany/types.js +2 -5
- package/dist/elements/EditUpload/index.js +66 -122
- 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.js +19 -75
- package/dist/elements/FileDetails/FileMeta/types.js +2 -5
- package/dist/elements/FileDetails/index.js +15 -30
- package/dist/elements/FileDetails/types.js +2 -5
- package/dist/elements/GenerateConfirmation/index.js +22 -37
- package/dist/elements/GenerateConfirmation/types.js +2 -5
- 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.js +39 -95
- 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.js +52 -104
- package/dist/elements/ListControls/types.js +2 -5
- package/dist/elements/ListDrawer/DrawerContent.js +72 -128
- package/dist/elements/ListDrawer/index.js +32 -100
- package/dist/elements/ListDrawer/types.js +2 -5
- package/dist/elements/ListSelection/index.js +11 -62
- package/dist/elements/Loading/index.js +25 -51
- package/dist/elements/LoadingOverlay/index.js +17 -79
- package/dist/elements/LoadingOverlay/reducer.js +3 -21
- 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.js +36 -51
- package/dist/elements/NavGroup/index.js +21 -77
- package/dist/elements/Pagination/ClickableArrow/index.js +7 -22
- package/dist/elements/Pagination/ClickableArrow/types.js +2 -5
- 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.js +20 -35
- package/dist/elements/Pagination/types.js +2 -5
- package/dist/elements/PerPage/index.js +28 -83
- package/dist/elements/Pill/index.js +16 -40
- package/dist/elements/Pill/types.js +2 -5
- package/dist/elements/Popup/PopupButtonList/index.js +10 -75
- package/dist/elements/Popup/PopupTrigger/index.js +6 -21
- package/dist/elements/Popup/PopupTrigger/types.js +2 -5
- 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.js +37 -93
- package/dist/elements/PublishMany/types.js +2 -5
- package/dist/elements/ReactSelect/ClearIndicator/index.js +7 -22
- package/dist/elements/ReactSelect/Control/index.js +5 -20
- package/dist/elements/ReactSelect/MultiValue/index.js +8 -23
- package/dist/elements/ReactSelect/MultiValueLabel/index.js +7 -22
- package/dist/elements/ReactSelect/MultiValueRemove/index.js +12 -27
- package/dist/elements/ReactSelect/SingleValue/index.js +5 -20
- package/dist/elements/ReactSelect/ValueContainer/index.js +7 -22
- package/dist/elements/ReactSelect/index.js +45 -60
- 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.js +9 -24
- 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.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.js +27 -90
- package/dist/elements/SortColumn/types.js +2 -5
- 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.js +20 -34
- package/dist/elements/StayLoggedIn/types.js +2 -5
- package/dist/elements/StepNav/SetStepNav.js +6 -16
- 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.js +15 -38
- package/dist/elements/Table/types.js +2 -5
- package/dist/elements/TableColumns/buildColumns.d.ts.map +1 -1
- package/dist/elements/TableColumns/buildColumns.js +7 -16
- package/dist/elements/TableColumns/columnReducer.js +2 -12
- package/dist/elements/TableColumns/index.js +24 -86
- package/dist/elements/Thumbnail/index.js +12 -68
- package/dist/elements/Thumbnail/types.js +2 -5
- package/dist/elements/ThumbnailCard/index.js +13 -28
- package/dist/elements/ThumbnailCard/types.js +2 -5
- package/dist/elements/Tooltip/index.js +14 -65
- package/dist/elements/Tooltip/types.js +2 -5
- package/dist/elements/Translation/index.js +7 -58
- package/dist/elements/UnpublishMany/index.js +37 -93
- package/dist/elements/UnpublishMany/types.js +2 -5
- package/dist/elements/Upload/index.js +57 -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.js +12 -27
- package/dist/elements/ViewDescription/types.js +4 -19
- package/dist/elements/WhereBuilder/Condition/Date/index.js +6 -21
- package/dist/elements/WhereBuilder/Condition/Date/types.js +2 -5
- 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.js +28 -84
- 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.js +15 -30
- package/dist/elements/WhereBuilder/Condition/Select/types.js +2 -5
- 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.js +37 -93
- package/dist/elements/WhereBuilder/Condition/types.js +2 -5
- package/dist/elements/WhereBuilder/field-types.js +2 -12
- package/dist/elements/WhereBuilder/index.js +43 -98
- 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 +6 -0
- package/dist/exports/elements.d.ts.map +1 -1
- package/dist/exports/elements.js +48 -225
- package/dist/exports/forms.d.ts +4 -1
- package/dist/exports/forms.d.ts.map +1 -1
- package/dist/exports/forms.js +38 -157
- package/dist/exports/graphics.js +3 -26
- package/dist/exports/hooks.js +10 -54
- package/dist/exports/icons.js +18 -81
- package/dist/exports/index.js +10 -27
- package/dist/exports/providers.d.ts +1 -0
- package/dist/exports/providers.d.ts.map +1 -1
- package/dist/exports/providers.js +24 -115
- package/dist/exports/templates.js +3 -21
- package/dist/exports/types.d.ts +1 -0
- package/dist/exports/types.d.ts.map +1 -1
- package/dist/exports/types.js +2 -5
- package/dist/exports/utilities.js +11 -61
- package/dist/forms/Error/index.js +11 -26
- 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/buildInitialState.js +2 -12
- 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 +25 -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.map +1 -1
- package/dist/forms/Form/index.js +85 -141
- 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 +22 -23
- 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 +2 -0
- package/dist/forms/RenderFields/types.d.ts.map +1 -1
- package/dist/forms/RenderFields/types.js +2 -5
- 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.js +11 -62
- 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.js +11 -26
- package/dist/forms/fields/Array/ArrayRow.d.ts +1 -2
- 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.js +59 -115
- package/dist/forms/fields/Array/types.js +2 -5
- package/dist/forms/fields/Blocks/BlockRow.d.ts +1 -2
- 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.js +29 -85
- package/dist/forms/fields/Blocks/BlocksDrawer/types.js +2 -5
- package/dist/forms/fields/Blocks/RowActions.js +12 -27
- package/dist/forms/fields/Blocks/SectionTitle/index.js +10 -25
- package/dist/forms/fields/Blocks/SectionTitle/types.js +2 -5
- package/dist/forms/fields/Blocks/index.js +78 -133
- 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.js +19 -75
- package/dist/forms/fields/Checkbox/types.js +2 -5
- package/dist/forms/fields/Code/index.js +15 -71
- package/dist/forms/fields/Code/types.js +2 -5
- package/dist/forms/fields/Collapsible/index.js +31 -87
- package/dist/forms/fields/Collapsible/types.js +2 -5
- 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.js +18 -74
- package/dist/forms/fields/DateTime/types.js +2 -5
- package/dist/forms/fields/Email/index.js +19 -83
- package/dist/forms/fields/Email/types.js +2 -5
- package/dist/forms/fields/Group/index.js +32 -88
- package/dist/forms/fields/Group/provider.js +7 -69
- package/dist/forms/fields/Group/types.js +2 -5
- package/dist/forms/fields/HiddenInput/index.js +8 -64
- package/dist/forms/fields/HiddenInput/types.js +2 -5
- package/dist/forms/fields/JSON/index.js +20 -76
- package/dist/forms/fields/JSON/types.js +2 -5
- package/dist/forms/fields/Number/index.js +26 -82
- package/dist/forms/fields/Number/types.js +2 -5
- package/dist/forms/fields/Password/index.js +15 -79
- package/dist/forms/fields/Password/types.js +2 -5
- package/dist/forms/fields/Point/index.js +24 -80
- package/dist/forms/fields/Point/types.js +2 -5
- package/dist/forms/fields/RadioGroup/Radio/index.js +13 -28
- package/dist/forms/fields/RadioGroup/index.js +23 -79
- package/dist/forms/fields/RadioGroup/types.js +2 -5
- package/dist/forms/fields/Relationship/AddNew/index.js +43 -99
- 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.js +2 -12
- package/dist/forms/fields/Relationship/findOptionsByValue.js +2 -12
- package/dist/forms/fields/Relationship/index.js +64 -120
- package/dist/forms/fields/Relationship/optionsReducer.js +7 -17
- package/dist/forms/fields/Relationship/select-components/MultiValueLabel/index.js +21 -72
- package/dist/forms/fields/Relationship/select-components/SingleValue/index.js +22 -73
- package/dist/forms/fields/Relationship/types.js +2 -5
- package/dist/forms/fields/RichText/index.js +2 -12
- package/dist/forms/fields/RichText/types.js +2 -5
- package/dist/forms/fields/Row/index.js +11 -26
- package/dist/forms/fields/Row/provider.js +7 -69
- package/dist/forms/fields/Row/types.js +2 -5
- package/dist/forms/fields/Select/index.js +24 -88
- package/dist/forms/fields/Select/types.js +2 -5
- package/dist/forms/fields/Tabs/Tab/index.js +13 -64
- 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.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.map +1 -1
- package/dist/forms/fields/Text/index.js +44 -129
- package/dist/forms/fields/Text/types.d.ts +2 -2
- 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.map +1 -1
- package/dist/forms/fields/Textarea/index.js +39 -104
- 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.map +1 -1
- package/dist/forms/fields/Upload/index.js +32 -180
- 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 +3 -3
- 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.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 +21 -33
- package/dist/forms/utilities/buildStateFromSchema/buildStateFromSchema.spec.js +5 -14
- 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 +1 -2
- 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.js +5 -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.js +7 -17
- package/dist/hooks/usePayloadAPI.js +17 -32
- package/dist/hooks/useResize.js +5 -15
- 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.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.map +1 -1
- package/dist/providers/Auth/index.js +56 -132
- package/dist/providers/Auth/types.js +2 -5
- package/dist/providers/ClientFunction/index.js +14 -40
- package/dist/providers/ComponentMapProvider/index.d.ts +4 -0
- 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.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.js +9 -19
- package/dist/providers/DocumentInfo/index.js +42 -100
- package/dist/providers/DocumentInfo/types.d.ts +1 -2
- 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.js +7 -69
- 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.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 +2 -1
- 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.map +1 -1
- package/dist/providers/SearchParams/index.js +14 -77
- 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.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/scss/toastify.scss +0 -1
- package/dist/templates/Default/NavHamburger/index.js +7 -22
- package/dist/templates/Default/Wrapper/index.js +7 -22
- package/dist/templates/Default/index.js +17 -68
- package/dist/templates/Default/types.js +2 -5
- 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 +3 -7
- 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 +2 -5
- package/dist/utilities/buildComponentMap/mapFields.d.ts.map +1 -1
- package/dist/utilities/buildComponentMap/mapFields.js +48 -114
- package/dist/utilities/buildComponentMap/types.d.ts +10 -0
- package/dist/utilities/buildComponentMap/types.d.ts.map +1 -1
- package/dist/utilities/buildComponentMap/types.js +2 -5
- package/dist/utilities/buildFieldSchemaMap/index.js +5 -15
- 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 +1 -2
- 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.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/dist/views/Global/RenderCustomView.d.ts +0 -1
- package/dist/views/Global/RenderCustomView.js +0 -1
- package/package.json +7 -6
- 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/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
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "createRelationMap", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return createRelationMap;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const createRelationMap = ({ hasMany, relationTo, value })=>{
|
|
1
|
+
export const createRelationMap = ({ hasMany, relationTo, value })=>{
|
|
12
2
|
const hasMultipleRelations = Array.isArray(relationTo);
|
|
13
3
|
let relationMap;
|
|
14
4
|
if (Array.isArray(relationTo)) {
|
|
@@ -56,4 +46,4 @@ const createRelationMap = ({ hasMany, relationTo, value })=>{
|
|
|
56
46
|
return relationMap;
|
|
57
47
|
};
|
|
58
48
|
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb3Jtcy9maWVsZHMvUmVsYXRpb25zaGlwL2NyZWF0ZVJlbGF0aW9uTWFwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVmFsdWUgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIFJlbGF0aW9uTWFwID0ge1xuICBbcmVsYXRpb246IHN0cmluZ106IChudW1iZXIgfCBzdHJpbmcpW11cbn1cblxudHlwZSBDcmVhdGVSZWxhdGlvbk1hcCA9IChhcmdzOiB7XG4gIGhhc01hbnk6IGJvb2xlYW5cbiAgcmVsYXRpb25Ubzogc3RyaW5nIHwgc3RyaW5nW11cbiAgdmFsdWU6IFZhbHVlIHwgVmFsdWVbXSB8IG51bGwgLy8gcmVhbGx5IG5lZWRzIHRvIGJlIGBWYWx1ZVdpdGhSZWxhdGlvbmBcbn0pID0+IFJlbGF0aW9uTWFwXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVSZWxhdGlvbk1hcDogQ3JlYXRlUmVsYXRpb25NYXAgPSAoeyBoYXNNYW55LCByZWxhdGlvblRvLCB2YWx1ZSB9KSA9PiB7XG4gIGNvbnN0IGhhc011bHRpcGxlUmVsYXRpb25zID0gQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKVxuICBsZXQgcmVsYXRpb25NYXA6IFJlbGF0aW9uTWFwXG4gIGlmIChBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pKSB7XG4gICAgcmVsYXRpb25NYXAgPSByZWxhdGlvblRvLnJlZHVjZSgobWFwLCBjdXJyZW50KSA9PiB7XG4gICAgICByZXR1cm4geyAuLi5tYXAsIFtjdXJyZW50XTogW10gfVxuICAgIH0sIHt9KVxuICB9IGVsc2Uge1xuICAgIHJlbGF0aW9uTWFwID0geyBbcmVsYXRpb25Ub106IFtdIH1cbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiByZWxhdGlvbk1hcFxuICB9XG5cbiAgY29uc3QgYWRkID0gKHJlbGF0aW9uOiBzdHJpbmcsIGlkOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKCh0eXBlb2YgaWQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBpZCA9PT0gJ251bWJlcicpICYmIHR5cGVvZiByZWxhdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChyZWxhdGlvbk1hcFtyZWxhdGlvbl0pIHtcbiAgICAgICAgcmVsYXRpb25NYXBbcmVsYXRpb25dLnB1c2goaWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWxhdGlvbk1hcFtyZWxhdGlvbl0gPSBbaWRdXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGhhc01hbnkgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKCh2YWwpID0+
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb3Jtcy9maWVsZHMvUmVsYXRpb25zaGlwL2NyZWF0ZVJlbGF0aW9uTWFwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVmFsdWUgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIFJlbGF0aW9uTWFwID0ge1xuICBbcmVsYXRpb246IHN0cmluZ106IChudW1iZXIgfCBzdHJpbmcpW11cbn1cblxudHlwZSBDcmVhdGVSZWxhdGlvbk1hcCA9IChhcmdzOiB7XG4gIGhhc01hbnk6IGJvb2xlYW5cbiAgcmVsYXRpb25Ubzogc3RyaW5nIHwgc3RyaW5nW11cbiAgdmFsdWU6IFZhbHVlIHwgVmFsdWVbXSB8IG51bGwgLy8gcmVhbGx5IG5lZWRzIHRvIGJlIGBWYWx1ZVdpdGhSZWxhdGlvbmBcbn0pID0+IFJlbGF0aW9uTWFwXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVSZWxhdGlvbk1hcDogQ3JlYXRlUmVsYXRpb25NYXAgPSAoeyBoYXNNYW55LCByZWxhdGlvblRvLCB2YWx1ZSB9KSA9PiB7XG4gIGNvbnN0IGhhc011bHRpcGxlUmVsYXRpb25zID0gQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKVxuICBsZXQgcmVsYXRpb25NYXA6IFJlbGF0aW9uTWFwXG4gIGlmIChBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pKSB7XG4gICAgcmVsYXRpb25NYXAgPSByZWxhdGlvblRvLnJlZHVjZSgobWFwLCBjdXJyZW50KSA9PiB7XG4gICAgICByZXR1cm4geyAuLi5tYXAsIFtjdXJyZW50XTogW10gfVxuICAgIH0sIHt9KVxuICB9IGVsc2Uge1xuICAgIHJlbGF0aW9uTWFwID0geyBbcmVsYXRpb25Ub106IFtdIH1cbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiByZWxhdGlvbk1hcFxuICB9XG5cbiAgY29uc3QgYWRkID0gKHJlbGF0aW9uOiBzdHJpbmcsIGlkOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKCh0eXBlb2YgaWQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBpZCA9PT0gJ251bWJlcicpICYmIHR5cGVvZiByZWxhdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChyZWxhdGlvbk1hcFtyZWxhdGlvbl0pIHtcbiAgICAgICAgcmVsYXRpb25NYXBbcmVsYXRpb25dLnB1c2goaWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWxhdGlvbk1hcFtyZWxhdGlvbl0gPSBbaWRdXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGhhc01hbnkgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgaGFzTXVsdGlwbGVSZWxhdGlvbnMgJiZcbiAgICAgICAgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgJ3JlbGF0aW9uVG8nIGluIHZhbCAmJlxuICAgICAgICAndmFsdWUnIGluIHZhbFxuICAgICAgKSB7XG4gICAgICAgIGFkZCh2YWwucmVsYXRpb25UbywgdmFsLnZhbHVlKVxuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc011bHRpcGxlUmVsYXRpb25zICYmIHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJykge1xuICAgICAgICBhZGQocmVsYXRpb25UbywgdmFsKVxuICAgICAgfVxuICAgIH0pXG4gIH0gZWxzZSBpZiAoaGFzTXVsdGlwbGVSZWxhdGlvbnMgJiYgQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdyZWxhdGlvblRvJyBpbiB2YWx1ZSAmJiAndmFsdWUnIGluIHZhbHVlKSB7XG4gICAgICBhZGQodmFsdWUucmVsYXRpb25UbywgdmFsdWUudmFsdWUpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGFkZChyZWxhdGlvblRvLCB2YWx1ZSlcbiAgfVxuXG4gIHJldHVybiByZWxhdGlvbk1hcFxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJlbGF0aW9uTWFwIiwiaGFzTWFueSIsInJlbGF0aW9uVG8iLCJ2YWx1ZSIsImhhc011bHRpcGxlUmVsYXRpb25zIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25NYXAiLCJyZWR1Y2UiLCJtYXAiLCJjdXJyZW50IiwiYWRkIiwicmVsYXRpb24iLCJpZCIsInB1c2giLCJmb3JFYWNoIiwidmFsIl0sIm1hcHBpbmdzIjoiQUFZQSxPQUFPLE1BQU1BLG9CQUF1QyxDQUFDLEVBQUVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxLQUFLLEVBQUU7SUFDakYsTUFBTUMsdUJBQXVCQyxNQUFNQyxPQUFPLENBQUNKO0lBQzNDLElBQUlLO0lBQ0osSUFBSUYsTUFBTUMsT0FBTyxDQUFDSixhQUFhO1FBQzdCSyxjQUFjTCxXQUFXTSxNQUFNLENBQUMsQ0FBQ0MsS0FBS0M7WUFDcEMsT0FBTztnQkFBRSxHQUFHRCxHQUFHO2dCQUFFLENBQUNDLFFBQVEsRUFBRSxFQUFFO1lBQUM7UUFDakMsR0FBRyxDQUFDO0lBQ04sT0FBTztRQUNMSCxjQUFjO1lBQUUsQ0FBQ0wsV0FBVyxFQUFFLEVBQUU7UUFBQztJQUNuQztJQUVBLElBQUlDLFVBQVUsTUFBTTtRQUNsQixPQUFPSTtJQUNUO0lBRUEsTUFBTUksTUFBTSxDQUFDQyxVQUFrQkM7UUFDN0IsSUFBSSxBQUFDLENBQUEsT0FBT0EsT0FBTyxZQUFZLE9BQU9BLE9BQU8sUUFBTyxLQUFNLE9BQU9ELGFBQWEsVUFBVTtZQUN0RixJQUFJTCxXQUFXLENBQUNLLFNBQVMsRUFBRTtnQkFDekJMLFdBQVcsQ0FBQ0ssU0FBUyxDQUFDRSxJQUFJLENBQUNEO1lBQzdCLE9BQU87Z0JBQ0xOLFdBQVcsQ0FBQ0ssU0FBUyxHQUFHO29CQUFDQztpQkFBRztZQUM5QjtRQUNGO0lBQ0Y7SUFFQSxJQUFJWixXQUFXSSxNQUFNQyxPQUFPLENBQUNILFFBQVE7UUFDbkNBLE1BQU1ZLE9BQU8sQ0FBQyxDQUFDQztZQUNiLElBQ0VaLHdCQUNBLE9BQU9ZLFFBQVEsWUFDZixnQkFBZ0JBLE9BQ2hCLFdBQVdBLEtBQ1g7Z0JBQ0FMLElBQUlLLElBQUlkLFVBQVUsRUFBRWMsSUFBSWIsS0FBSztZQUMvQjtZQUVBLElBQUksQ0FBQ0Msd0JBQXdCLE9BQU9GLGVBQWUsVUFBVTtnQkFDM0RTLElBQUlULFlBQVljO1lBQ2xCO1FBQ0Y7SUFDRixPQUFPLElBQUlaLHdCQUF3QkMsTUFBTUMsT0FBTyxDQUFDSixhQUFhO1FBQzVELElBQUksT0FBT0MsVUFBVSxZQUFZLGdCQUFnQkEsU0FBUyxXQUFXQSxPQUFPO1lBQzFFUSxJQUFJUixNQUFNRCxVQUFVLEVBQUVDLE1BQU1BLEtBQUs7UUFDbkM7SUFDRixPQUFPO1FBQ0xRLElBQUlULFlBQVlDO0lBQ2xCO0lBRUEsT0FBT0k7QUFDVCxFQUFDIn0=
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "findOptionsByValue", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return findOptionsByValue;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const findOptionsByValue = ({ options, value })=>{
|
|
1
|
+
export const findOptionsByValue = ({ options, value })=>{
|
|
12
2
|
if (value) {
|
|
13
3
|
if (Array.isArray(value)) {
|
|
14
4
|
return value.map((val)=>{
|
|
@@ -42,4 +32,4 @@ const findOptionsByValue = ({ options, value })=>{
|
|
|
42
32
|
return undefined;
|
|
43
33
|
};
|
|
44
34
|
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb3Jtcy9maWVsZHMvUmVsYXRpb25zaGlwL2ZpbmRPcHRpb25zQnlWYWx1ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL2VsZW1lbnRzL1JlYWN0U2VsZWN0L3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25Hcm91cCwgVmFsdWUgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIG9wdGlvbnM6IE9wdGlvbkdyb3VwW11cbiAgdmFsdWU6IFZhbHVlIHwgVmFsdWVbXVxufVxuXG5leHBvcnQgY29uc3QgZmluZE9wdGlvbnNCeVZhbHVlID0gKHsgb3B0aW9ucywgdmFsdWUgfTogQXJncyk6IE9wdGlvbiB8IE9wdGlvbltdID0+IHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUubWFwKCh2YWwpID0+IHtcbiAgICAgICAgbGV0IG1hdGNoZWRPcHRpb246IE9wdGlvblxuXG4gICAgICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0R3JvdXApID0+IHtcbiAgICAgICAgICBpZiAoIW1hdGNoZWRPcHRpb24pIHtcbiAgICAgICAgICAgIG1hdGNoZWRPcHRpb24gPSBvcHRHcm91cC5vcHRpb25zLmZpbmQoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlID09PSB2YWwudmFsdWUgJiYgb3B0aW9uLnJlbGF0aW9uVG8gPT09IHZhbC5yZWxhdGlvblRvXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gdmFsID09PSBvcHRpb24udmFsdWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uXG4gICAgICB9KVxuICAgIH1cblxuICAgIGxldCBtYXRjaGVkT3B0aW9uOiBPcHRpb25cblxuICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0R3JvdXApID0+IHtcbiAgICAgIGlmICghbWF0Y2hlZE9wdGlvbikge1xuICAgICAgICBtYXRjaGVkT3B0aW9uID0gb3B0R3JvdXAub3B0aW9ucy5maW5kKChvcHRpb24pID0+
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb3Jtcy9maWVsZHMvUmVsYXRpb25zaGlwL2ZpbmRPcHRpb25zQnlWYWx1ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL2VsZW1lbnRzL1JlYWN0U2VsZWN0L3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25Hcm91cCwgVmFsdWUgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIG9wdGlvbnM6IE9wdGlvbkdyb3VwW11cbiAgdmFsdWU6IFZhbHVlIHwgVmFsdWVbXVxufVxuXG5leHBvcnQgY29uc3QgZmluZE9wdGlvbnNCeVZhbHVlID0gKHsgb3B0aW9ucywgdmFsdWUgfTogQXJncyk6IE9wdGlvbiB8IE9wdGlvbltdID0+IHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUubWFwKCh2YWwpID0+IHtcbiAgICAgICAgbGV0IG1hdGNoZWRPcHRpb246IE9wdGlvblxuXG4gICAgICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0R3JvdXApID0+IHtcbiAgICAgICAgICBpZiAoIW1hdGNoZWRPcHRpb24pIHtcbiAgICAgICAgICAgIG1hdGNoZWRPcHRpb24gPSBvcHRHcm91cC5vcHRpb25zLmZpbmQoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlID09PSB2YWwudmFsdWUgJiYgb3B0aW9uLnJlbGF0aW9uVG8gPT09IHZhbC5yZWxhdGlvblRvXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gdmFsID09PSBvcHRpb24udmFsdWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uXG4gICAgICB9KVxuICAgIH1cblxuICAgIGxldCBtYXRjaGVkT3B0aW9uOiBPcHRpb25cblxuICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0R3JvdXApID0+IHtcbiAgICAgIGlmICghbWF0Y2hlZE9wdGlvbikge1xuICAgICAgICBtYXRjaGVkT3B0aW9uID0gb3B0R3JvdXAub3B0aW9ucy5maW5kKChvcHRpb24pID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUudmFsdWUgJiYgb3B0aW9uLnJlbGF0aW9uVG8gPT09IHZhbHVlLnJlbGF0aW9uVG9cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHZhbHVlID09PSBvcHRpb24udmFsdWVcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIG1hdGNoZWRPcHRpb25cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWRcbn1cbiJdLCJuYW1lcyI6WyJmaW5kT3B0aW9uc0J5VmFsdWUiLCJvcHRpb25zIiwidmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJ2YWwiLCJtYXRjaGVkT3B0aW9uIiwiZm9yRWFjaCIsIm9wdEdyb3VwIiwiZmluZCIsIm9wdGlvbiIsInJlbGF0aW9uVG8iLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sTUFBTUEscUJBQXFCLENBQUMsRUFBRUMsT0FBTyxFQUFFQyxLQUFLLEVBQVE7SUFDekQsSUFBSUEsT0FBTztRQUNULElBQUlDLE1BQU1DLE9BQU8sQ0FBQ0YsUUFBUTtZQUN4QixPQUFPQSxNQUFNRyxHQUFHLENBQUMsQ0FBQ0M7Z0JBQ2hCLElBQUlDO2dCQUVKTixRQUFRTyxPQUFPLENBQUMsQ0FBQ0M7b0JBQ2YsSUFBSSxDQUFDRixlQUFlO3dCQUNsQkEsZ0JBQWdCRSxTQUFTUixPQUFPLENBQUNTLElBQUksQ0FBQyxDQUFDQzs0QkFDckMsSUFBSSxPQUFPTCxRQUFRLFVBQVU7Z0NBQzNCLE9BQU9LLE9BQU9ULEtBQUssS0FBS0ksSUFBSUosS0FBSyxJQUFJUyxPQUFPQyxVQUFVLEtBQUtOLElBQUlNLFVBQVU7NEJBQzNFOzRCQUVBLE9BQU9OLFFBQVFLLE9BQU9ULEtBQUs7d0JBQzdCO29CQUNGO2dCQUNGO2dCQUVBLE9BQU9LO1lBQ1Q7UUFDRjtRQUVBLElBQUlBO1FBRUpOLFFBQVFPLE9BQU8sQ0FBQyxDQUFDQztZQUNmLElBQUksQ0FBQ0YsZUFBZTtnQkFDbEJBLGdCQUFnQkUsU0FBU1IsT0FBTyxDQUFDUyxJQUFJLENBQUMsQ0FBQ0M7b0JBQ3JDLElBQUksT0FBT1QsVUFBVSxVQUFVO3dCQUM3QixPQUFPUyxPQUFPVCxLQUFLLEtBQUtBLE1BQU1BLEtBQUssSUFBSVMsT0FBT0MsVUFBVSxLQUFLVixNQUFNVSxVQUFVO29CQUMvRTtvQkFDQSxPQUFPVixVQUFVUyxPQUFPVCxLQUFLO2dCQUMvQjtZQUNGO1FBQ0Y7UUFFQSxPQUFPSztJQUNUO0lBRUEsT0FBT007QUFDVCxFQUFDIn0=
|
|
@@ -1,86 +1,30 @@
|
|
|
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
|
-
const _useField = /*#__PURE__*/ _interop_require_default(require("../../useField"));
|
|
24
|
-
const _withCondition = require("../../withCondition");
|
|
25
|
-
const _shared = require("../shared");
|
|
26
|
-
const _AddNew = require("./AddNew");
|
|
27
|
-
const _createRelationMap = require("./createRelationMap");
|
|
28
|
-
const _findOptionsByValue = require("./findOptionsByValue");
|
|
29
|
-
require("./index.scss");
|
|
30
|
-
const _optionsReducer = /*#__PURE__*/ _interop_require_default(require("./optionsReducer"));
|
|
31
|
-
const _MultiValueLabel = require("./select-components/MultiValueLabel");
|
|
32
|
-
const _SingleValue = require("./select-components/SingleValue");
|
|
33
|
-
function _interop_require_default(obj) {
|
|
34
|
-
return obj && obj.__esModule ? obj : {
|
|
35
|
-
default: obj
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
function _getRequireWildcardCache(nodeInterop) {
|
|
39
|
-
if (typeof WeakMap !== "function") return null;
|
|
40
|
-
var cacheBabelInterop = new WeakMap();
|
|
41
|
-
var cacheNodeInterop = new WeakMap();
|
|
42
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
43
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
44
|
-
})(nodeInterop);
|
|
45
|
-
}
|
|
46
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
|
47
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
|
48
|
-
return obj;
|
|
49
|
-
}
|
|
50
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
51
|
-
return {
|
|
52
|
-
default: obj
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
|
56
|
-
if (cache && cache.has(obj)) {
|
|
57
|
-
return cache.get(obj);
|
|
58
|
-
}
|
|
59
|
-
var newObj = {
|
|
60
|
-
__proto__: null
|
|
61
|
-
};
|
|
62
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
63
|
-
for(var key in obj){
|
|
64
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
65
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
66
|
-
if (desc && (desc.get || desc.set)) {
|
|
67
|
-
Object.defineProperty(newObj, key, desc);
|
|
68
|
-
} else {
|
|
69
|
-
newObj[key] = obj[key];
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
newObj.default = obj;
|
|
74
|
-
if (cache) {
|
|
75
|
-
cache.set(obj, newObj);
|
|
76
|
-
}
|
|
77
|
-
return newObj;
|
|
78
|
-
}
|
|
2
|
+
import { wordBoundariesRegex } from 'payload/utilities';
|
|
3
|
+
import qs from 'qs';
|
|
4
|
+
import React, { useCallback, useEffect, useReducer, useRef, useState } from 'react';
|
|
5
|
+
import { GetFilterOptions } from '../../../elements/GetFilterOptions';
|
|
6
|
+
import ReactSelect from '../../../elements/ReactSelect';
|
|
7
|
+
import { useDebouncedCallback } from '../../../hooks/useDebouncedCallback';
|
|
8
|
+
import { useAuth } from '../../../providers/Auth';
|
|
9
|
+
import { useConfig } from '../../../providers/Config';
|
|
10
|
+
import { useLocale } from '../../../providers/Locale';
|
|
11
|
+
import { useTranslation } from '../../../providers/Translation';
|
|
12
|
+
import { useFormProcessing } from '../../Form/context';
|
|
13
|
+
import useField from '../../useField';
|
|
14
|
+
import { withCondition } from '../../withCondition';
|
|
15
|
+
import { fieldBaseClass } from '../shared';
|
|
16
|
+
import { AddNewRelation } from './AddNew';
|
|
17
|
+
import { createRelationMap } from './createRelationMap';
|
|
18
|
+
import { findOptionsByValue } from './findOptionsByValue';
|
|
19
|
+
import './index.scss';
|
|
20
|
+
import optionsReducer from './optionsReducer';
|
|
21
|
+
import { MultiValueLabel } from './select-components/MultiValueLabel';
|
|
22
|
+
import { SingleValue } from './select-components/SingleValue';
|
|
79
23
|
const maxResultsPerRequest = 10;
|
|
80
24
|
const baseClass = 'relationship';
|
|
81
25
|
const Relationship = (props)=>{
|
|
82
26
|
const { name, Description, Error, Label, className, path: pathFromProps, readOnly, required, style, validate, width } = props;
|
|
83
|
-
const config =
|
|
27
|
+
const config = useConfig();
|
|
84
28
|
const { collections, routes: { api }, serverURL } = config;
|
|
85
29
|
const relationTo = 'relationTo' in props ? props?.relationTo : undefined;
|
|
86
30
|
const hasMany = 'hasMany' in props ? props?.hasMany : undefined;
|
|
@@ -88,22 +32,22 @@ const Relationship = (props)=>{
|
|
|
88
32
|
const sortOptions = 'sortOptions' in props ? props?.sortOptions : undefined;
|
|
89
33
|
const isSortable = 'isSortable' in props ? props?.isSortable : true;
|
|
90
34
|
const allowCreate = 'allowCreate' in props ? props?.allowCreate : true;
|
|
91
|
-
const { i18n, t } =
|
|
92
|
-
const { permissions } =
|
|
93
|
-
const { code: locale } =
|
|
94
|
-
const formProcessing =
|
|
35
|
+
const { i18n, t } = useTranslation();
|
|
36
|
+
const { permissions } = useAuth();
|
|
37
|
+
const { code: locale } = useLocale();
|
|
38
|
+
const formProcessing = useFormProcessing();
|
|
95
39
|
const hasMultipleRelations = Array.isArray(relationTo);
|
|
96
|
-
const [options, dispatchOptions] =
|
|
97
|
-
const [lastFullyLoadedRelation, setLastFullyLoadedRelation] =
|
|
98
|
-
const [lastLoadedPage, setLastLoadedPage] =
|
|
99
|
-
const [errorLoading, setErrorLoading] =
|
|
100
|
-
const [filterOptionsResult, setFilterOptionsResult] =
|
|
101
|
-
const [search, setSearch] =
|
|
102
|
-
const [isLoading, setIsLoading] =
|
|
103
|
-
const [hasLoadedFirstPage, setHasLoadedFirstPage] =
|
|
104
|
-
const [enableWordBoundarySearch, setEnableWordBoundarySearch] =
|
|
105
|
-
const firstRun =
|
|
106
|
-
const memoizedValidate =
|
|
40
|
+
const [options, dispatchOptions] = useReducer(optionsReducer, []);
|
|
41
|
+
const [lastFullyLoadedRelation, setLastFullyLoadedRelation] = useState(-1);
|
|
42
|
+
const [lastLoadedPage, setLastLoadedPage] = useState({});
|
|
43
|
+
const [errorLoading, setErrorLoading] = useState('');
|
|
44
|
+
const [filterOptionsResult, setFilterOptionsResult] = useState();
|
|
45
|
+
const [search, setSearch] = useState('');
|
|
46
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
47
|
+
const [hasLoadedFirstPage, setHasLoadedFirstPage] = useState(false);
|
|
48
|
+
const [enableWordBoundarySearch, setEnableWordBoundarySearch] = useState(false);
|
|
49
|
+
const firstRun = useRef(true);
|
|
50
|
+
const memoizedValidate = useCallback((value, validationOptions)=>{
|
|
107
51
|
if (typeof validate === 'function') {
|
|
108
52
|
return validate(value, {
|
|
109
53
|
...validationOptions,
|
|
@@ -114,12 +58,12 @@ const Relationship = (props)=>{
|
|
|
114
58
|
validate,
|
|
115
59
|
required
|
|
116
60
|
]);
|
|
117
|
-
const { initialValue, path, setValue, showError, value } = (
|
|
61
|
+
const { initialValue, path, setValue, showError, value } = useField({
|
|
118
62
|
path: pathFromProps || name,
|
|
119
63
|
validate: memoizedValidate
|
|
120
64
|
});
|
|
121
|
-
const [drawerIsOpen, setDrawerIsOpen] =
|
|
122
|
-
const getResults =
|
|
65
|
+
const [drawerIsOpen, setDrawerIsOpen] = useState(false);
|
|
66
|
+
const getResults = useCallback(async ({ lastFullyLoadedRelation: lastFullyLoadedRelationArg, onSuccess, search: searchArg, sort, value: valueArg })=>{
|
|
123
67
|
if (!permissions) {
|
|
124
68
|
return;
|
|
125
69
|
}
|
|
@@ -129,7 +73,7 @@ const Relationship = (props)=>{
|
|
|
129
73
|
];
|
|
130
74
|
const relationsToFetch = lastFullyLoadedRelationToUse === -1 ? relations : relations.slice(lastFullyLoadedRelationToUse + 1);
|
|
131
75
|
let resultsFetched = 0;
|
|
132
|
-
const relationMap =
|
|
76
|
+
const relationMap = createRelationMap({
|
|
133
77
|
hasMany,
|
|
134
78
|
relationTo,
|
|
135
79
|
value: valueArg
|
|
@@ -185,7 +129,7 @@ const Relationship = (props)=>{
|
|
|
185
129
|
if (relationFilterOption && typeof relationFilterOption !== 'boolean') {
|
|
186
130
|
query.where.and.push(relationFilterOption);
|
|
187
131
|
}
|
|
188
|
-
const response = await fetch(`${serverURL}${api}/${relation}?${
|
|
132
|
+
const response = await fetch(`${serverURL}${api}/${relation}?${qs.stringify(query)}`, {
|
|
189
133
|
credentials: 'include',
|
|
190
134
|
headers: {
|
|
191
135
|
'Accept-Language': i18n.language
|
|
@@ -252,7 +196,7 @@ const Relationship = (props)=>{
|
|
|
252
196
|
config,
|
|
253
197
|
t
|
|
254
198
|
]);
|
|
255
|
-
const updateSearch =
|
|
199
|
+
const updateSearch = useDebouncedCallback((searchArg, valueArg)=>{
|
|
256
200
|
getResults({
|
|
257
201
|
search: searchArg,
|
|
258
202
|
sort: true,
|
|
@@ -260,7 +204,7 @@ const Relationship = (props)=>{
|
|
|
260
204
|
});
|
|
261
205
|
setSearch(searchArg);
|
|
262
206
|
}, 300);
|
|
263
|
-
const handleInputChange =
|
|
207
|
+
const handleInputChange = useCallback((searchArg, valueArg)=>{
|
|
264
208
|
if (search !== searchArg) {
|
|
265
209
|
setLastLoadedPage({});
|
|
266
210
|
updateSearch(searchArg, valueArg, searchArg !== '');
|
|
@@ -272,8 +216,8 @@ const Relationship = (props)=>{
|
|
|
272
216
|
// ///////////////////////////////////
|
|
273
217
|
// Ensure we have an option for each value
|
|
274
218
|
// ///////////////////////////////////
|
|
275
|
-
|
|
276
|
-
const relationMap =
|
|
219
|
+
useEffect(()=>{
|
|
220
|
+
const relationMap = createRelationMap({
|
|
277
221
|
hasMany,
|
|
278
222
|
relationTo,
|
|
279
223
|
value
|
|
@@ -296,7 +240,7 @@ const Relationship = (props)=>{
|
|
|
296
240
|
}
|
|
297
241
|
};
|
|
298
242
|
if (!errorLoading) {
|
|
299
|
-
const response = await fetch(`${serverURL}${api}/${relation}?${
|
|
243
|
+
const response = await fetch(`${serverURL}${api}/${relation}?${qs.stringify(query)}`, {
|
|
300
244
|
credentials: 'include',
|
|
301
245
|
headers: {
|
|
302
246
|
'Accept-Language': i18n.language
|
|
@@ -337,7 +281,7 @@ const Relationship = (props)=>{
|
|
|
337
281
|
config
|
|
338
282
|
]);
|
|
339
283
|
// Determine if we should switch to word boundary search
|
|
340
|
-
|
|
284
|
+
useEffect(()=>{
|
|
341
285
|
const relations = Array.isArray(relationTo) ? relationTo : [
|
|
342
286
|
relationTo
|
|
343
287
|
];
|
|
@@ -353,7 +297,7 @@ const Relationship = (props)=>{
|
|
|
353
297
|
]);
|
|
354
298
|
// When (`relationTo` || `filterOptionsResult` || `locale`) changes, reset component
|
|
355
299
|
// Note - effect should not run on first run
|
|
356
|
-
|
|
300
|
+
useEffect(()=>{
|
|
357
301
|
if (firstRun.current) {
|
|
358
302
|
firstRun.current = false;
|
|
359
303
|
return;
|
|
@@ -369,7 +313,7 @@ const Relationship = (props)=>{
|
|
|
369
313
|
filterOptionsResult,
|
|
370
314
|
locale
|
|
371
315
|
]);
|
|
372
|
-
const onSave =
|
|
316
|
+
const onSave = useCallback((args)=>{
|
|
373
317
|
dispatchOptions({
|
|
374
318
|
type: 'UPDATE',
|
|
375
319
|
collection: args.collectionConfig,
|
|
@@ -383,11 +327,11 @@ const Relationship = (props)=>{
|
|
|
383
327
|
i18n,
|
|
384
328
|
config
|
|
385
329
|
]);
|
|
386
|
-
const filterOption =
|
|
330
|
+
const filterOption = useCallback((item, searchFilter)=>{
|
|
387
331
|
if (!searchFilter) {
|
|
388
332
|
return true;
|
|
389
333
|
}
|
|
390
|
-
const r =
|
|
334
|
+
const r = wordBoundariesRegex(searchFilter || '');
|
|
391
335
|
// breaking the labels to search into smaller parts increases performance
|
|
392
336
|
const breakApartThreshold = 250;
|
|
393
337
|
let string = item.label;
|
|
@@ -402,14 +346,14 @@ const Relationship = (props)=>{
|
|
|
402
346
|
}
|
|
403
347
|
return r.test(string.slice(-breakApartThreshold));
|
|
404
348
|
}, []);
|
|
405
|
-
const valueToRender =
|
|
349
|
+
const valueToRender = findOptionsByValue({
|
|
406
350
|
options,
|
|
407
351
|
value
|
|
408
352
|
});
|
|
409
353
|
if (!Array.isArray(valueToRender) && valueToRender?.value === 'null') valueToRender.value = null;
|
|
410
|
-
return /*#__PURE__*/
|
|
354
|
+
return /*#__PURE__*/ React.createElement("div", {
|
|
411
355
|
className: [
|
|
412
|
-
|
|
356
|
+
fieldBaseClass,
|
|
413
357
|
baseClass,
|
|
414
358
|
className,
|
|
415
359
|
showError && 'error',
|
|
@@ -421,19 +365,19 @@ const Relationship = (props)=>{
|
|
|
421
365
|
...style,
|
|
422
366
|
width
|
|
423
367
|
}
|
|
424
|
-
}, Error, Label, /*#__PURE__*/
|
|
368
|
+
}, Error, Label, /*#__PURE__*/ React.createElement(GetFilterOptions, {
|
|
425
369
|
filterOptions,
|
|
426
370
|
filterOptionsResult,
|
|
427
371
|
path,
|
|
428
372
|
relationTo,
|
|
429
373
|
setFilterOptionsResult
|
|
430
|
-
}), !errorLoading && /*#__PURE__*/
|
|
374
|
+
}), !errorLoading && /*#__PURE__*/ React.createElement("div", {
|
|
431
375
|
className: `${baseClass}__wrap`
|
|
432
|
-
}, /*#__PURE__*/
|
|
376
|
+
}, /*#__PURE__*/ React.createElement(ReactSelect, {
|
|
433
377
|
backspaceRemovesValue: !drawerIsOpen,
|
|
434
378
|
components: {
|
|
435
|
-
MultiValueLabel
|
|
436
|
-
SingleValue
|
|
379
|
+
MultiValueLabel,
|
|
380
|
+
SingleValue
|
|
437
381
|
},
|
|
438
382
|
customProps: {
|
|
439
383
|
disableKeyDown: drawerIsOpen,
|
|
@@ -492,7 +436,7 @@ const Relationship = (props)=>{
|
|
|
492
436
|
options: options,
|
|
493
437
|
showError: showError,
|
|
494
438
|
value: valueToRender ?? null
|
|
495
|
-
}), !readOnly && allowCreate && /*#__PURE__*/
|
|
439
|
+
}), !readOnly && allowCreate && /*#__PURE__*/ React.createElement(AddNewRelation, {
|
|
496
440
|
dispatchOptions,
|
|
497
441
|
hasMany,
|
|
498
442
|
options,
|
|
@@ -500,10 +444,10 @@ const Relationship = (props)=>{
|
|
|
500
444
|
relationTo,
|
|
501
445
|
setValue,
|
|
502
446
|
value
|
|
503
|
-
})), errorLoading && /*#__PURE__*/
|
|
447
|
+
})), errorLoading && /*#__PURE__*/ React.createElement("div", {
|
|
504
448
|
className: `${baseClass}__error-loading`
|
|
505
449
|
}, errorLoading), Description);
|
|
506
450
|
};
|
|
507
|
-
|
|
451
|
+
export default withCondition(Relationship);
|
|
508
452
|
|
|
509
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb3Jtcy9maWVsZHMvUmVsYXRpb25zaGlwL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgUGFnaW5hdGVkRG9jcyB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5pbXBvcnQgdHlwZSB7IFdoZXJlIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgd29yZEJvdW5kYXJpZXNSZWdleCB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IHFzIGZyb20gJ3FzJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZHVjZXIsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHR5cGUgeyBEb2N1bWVudERyYXdlclByb3BzIH0gZnJvbSAnLi4vLi4vLi4vZWxlbWVudHMvRG9jdW1lbnREcmF3ZXIvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpbHRlck9wdGlvbnNSZXN1bHQsIEdldFJlc3VsdHMsIE9wdGlvbiwgUHJvcHMsIFZhbHVlIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgR2V0RmlsdGVyT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2VsZW1lbnRzL0dldEZpbHRlck9wdGlvbnMnXG5pbXBvcnQgUmVhY3RTZWxlY3QgZnJvbSAnLi4vLi4vLi4vZWxlbWVudHMvUmVhY3RTZWxlY3QnXG5pbXBvcnQgeyB1c2VEZWJvdW5jZWRDYWxsYmFjayB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZURlYm91bmNlZENhbGxiYWNrJ1xuaW1wb3J0IHsgdXNlQXV0aCB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9BdXRoJ1xuaW1wb3J0IHsgdXNlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL0NvbmZpZydcbmltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9Mb2NhbGUnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9UcmFuc2xhdGlvbidcbmltcG9ydCB7IHVzZUZvcm1Qcm9jZXNzaW5nIH0gZnJvbSAnLi4vLi4vRm9ybS9jb250ZXh0J1xuaW1wb3J0IHVzZUZpZWxkIGZyb20gJy4uLy4uL3VzZUZpZWxkJ1xuaW1wb3J0IHsgd2l0aENvbmRpdGlvbiB9IGZyb20gJy4uLy4uL3dpdGhDb25kaXRpb24nXG5pbXBvcnQgeyBmaWVsZEJhc2VDbGFzcyB9IGZyb20gJy4uL3NoYXJlZCdcbmltcG9ydCB7IEFkZE5ld1JlbGF0aW9uIH0gZnJvbSAnLi9BZGROZXcnXG5pbXBvcnQgeyBjcmVhdGVSZWxhdGlvbk1hcCB9IGZyb20gJy4vY3JlYXRlUmVsYXRpb25NYXAnXG5pbXBvcnQgeyBmaW5kT3B0aW9uc0J5VmFsdWUgfSBmcm9tICcuL2ZpbmRPcHRpb25zQnlWYWx1ZSdcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuaW1wb3J0IG9wdGlvbnNSZWR1Y2VyIGZyb20gJy4vb3B0aW9uc1JlZHVjZXInXG5pbXBvcnQgeyBNdWx0aVZhbHVlTGFiZWwgfSBmcm9tICcuL3NlbGVjdC1jb21wb25lbnRzL011bHRpVmFsdWVMYWJlbCdcbmltcG9ydCB7IFNpbmdsZVZhbHVlIH0gZnJvbSAnLi9zZWxlY3QtY29tcG9uZW50cy9TaW5nbGVWYWx1ZSdcblxuY29uc3QgbWF4UmVzdWx0c1BlclJlcXVlc3QgPSAxMFxuXG5jb25zdCBiYXNlQ2xhc3MgPSAncmVsYXRpb25zaGlwJ1xuXG5jb25zdCBSZWxhdGlvbnNoaXA6IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbmFtZSxcbiAgICBEZXNjcmlwdGlvbixcbiAgICBFcnJvcixcbiAgICBMYWJlbCxcbiAgICBjbGFzc05hbWUsXG4gICAgcGF0aDogcGF0aEZyb21Qcm9wcyxcbiAgICByZWFkT25seSxcbiAgICByZXF1aXJlZCxcbiAgICBzdHlsZSxcbiAgICB2YWxpZGF0ZSxcbiAgICB3aWR0aCxcbiAgfSA9IHByb3BzXG5cbiAgY29uc3QgY29uZmlnID0gdXNlQ29uZmlnKClcblxuICBjb25zdCB7XG4gICAgY29sbGVjdGlvbnMsXG4gICAgcm91dGVzOiB7IGFwaSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IGNvbmZpZ1xuXG4gIGNvbnN0IHJlbGF0aW9uVG8gPSAncmVsYXRpb25UbycgaW4gcHJvcHMgPyBwcm9wcz8ucmVsYXRpb25UbyA6IHVuZGVmaW5lZFxuICBjb25zdCBoYXNNYW55ID0gJ2hhc01hbnknIGluIHByb3BzID8gcHJvcHM/Lmhhc01hbnkgOiB1bmRlZmluZWRcbiAgY29uc3QgZmlsdGVyT3B0aW9ucyA9ICdmaWx0ZXJPcHRpb25zJyBpbiBwcm9wcyA/IHByb3BzPy5maWx0ZXJPcHRpb25zIDogdW5kZWZpbmVkXG4gIGNvbnN0IHNvcnRPcHRpb25zID0gJ3NvcnRPcHRpb25zJyBpbiBwcm9wcyA/IHByb3BzPy5zb3J0T3B0aW9ucyA6IHVuZGVmaW5lZFxuICBjb25zdCBpc1NvcnRhYmxlID0gJ2lzU29ydGFibGUnIGluIHByb3BzID8gcHJvcHM/LmlzU29ydGFibGUgOiB0cnVlXG4gIGNvbnN0IGFsbG93Q3JlYXRlID0gJ2FsbG93Q3JlYXRlJyBpbiBwcm9wcyA/IHByb3BzPy5hbGxvd0NyZWF0ZSA6IHRydWVcblxuICBjb25zdCB7IGkxOG4sIHQgfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgeyBwZXJtaXNzaW9ucyB9ID0gdXNlQXV0aCgpXG4gIGNvbnN0IHsgY29kZTogbG9jYWxlIH0gPSB1c2VMb2NhbGUoKVxuICBjb25zdCBmb3JtUHJvY2Vzc2luZyA9IHVzZUZvcm1Qcm9jZXNzaW5nKClcbiAgY29uc3QgaGFzTXVsdGlwbGVSZWxhdGlvbnMgPSBBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pXG4gIGNvbnN0IFtvcHRpb25zLCBkaXNwYXRjaE9wdGlvbnNdID0gdXNlUmVkdWNlcihvcHRpb25zUmVkdWNlciwgW10pXG4gIGNvbnN0IFtsYXN0RnVsbHlMb2FkZWRSZWxhdGlvbiwgc2V0TGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25dID0gdXNlU3RhdGUoLTEpXG4gIGNvbnN0IFtsYXN0TG9hZGVkUGFnZSwgc2V0TGFzdExvYWRlZFBhZ2VdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgbnVtYmVyPj4oe30pXG4gIGNvbnN0IFtlcnJvckxvYWRpbmcsIHNldEVycm9yTG9hZGluZ10gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgW2ZpbHRlck9wdGlvbnNSZXN1bHQsIHNldEZpbHRlck9wdGlvbnNSZXN1bHRdID0gdXNlU3RhdGU8RmlsdGVyT3B0aW9uc1Jlc3VsdD4oKVxuICBjb25zdCBbc2VhcmNoLCBzZXRTZWFyY2hdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2hhc0xvYWRlZEZpcnN0UGFnZSwgc2V0SGFzTG9hZGVkRmlyc3RQYWdlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZW5hYmxlV29yZEJvdW5kYXJ5U2VhcmNoLCBzZXRFbmFibGVXb3JkQm91bmRhcnlTZWFyY2hdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGZpcnN0UnVuID0gdXNlUmVmKHRydWUpXG5cbiAgY29uc3QgbWVtb2l6ZWRWYWxpZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICh2YWx1ZSwgdmFsaWRhdGlvbk9wdGlvbnMpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsaWRhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlKHZhbHVlLCB7IC4uLnZhbGlkYXRpb25PcHRpb25zLCByZXF1aXJlZCB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3ZhbGlkYXRlLCByZXF1aXJlZF0sXG4gIClcblxuICBjb25zdCB7IGluaXRpYWxWYWx1ZSwgcGF0aCwgc2V0VmFsdWUsIHNob3dFcnJvciwgdmFsdWUgfSA9IHVzZUZpZWxkPFZhbHVlIHwgVmFsdWVbXT4oe1xuICAgIHBhdGg6IHBhdGhGcm9tUHJvcHMgfHwgbmFtZSxcbiAgICB2YWxpZGF0ZTogbWVtb2l6ZWRWYWxpZGF0ZSxcbiAgfSlcblxuICBjb25zdCBbZHJhd2VySXNPcGVuLCBzZXREcmF3ZXJJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgZ2V0UmVzdWx0czogR2V0UmVzdWx0cyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7XG4gICAgICBsYXN0RnVsbHlMb2FkZWRSZWxhdGlvbjogbGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25BcmcsXG4gICAgICBvblN1Y2Nlc3MsXG4gICAgICBzZWFyY2g6IHNlYXJjaEFyZyxcbiAgICAgIHNvcnQsXG4gICAgICB2YWx1ZTogdmFsdWVBcmcsXG4gICAgfSkgPT4ge1xuICAgICAgaWYgKCFwZXJtaXNzaW9ucykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IGxhc3RGdWxseUxvYWRlZFJlbGF0aW9uVG9Vc2UgPVxuICAgICAgICB0eXBlb2YgbGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25BcmcgIT09ICd1bmRlZmluZWQnID8gbGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25BcmcgOiAtMVxuXG4gICAgICBjb25zdCByZWxhdGlvbnMgPSBBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pID8gcmVsYXRpb25UbyA6IFtyZWxhdGlvblRvXVxuICAgICAgY29uc3QgcmVsYXRpb25zVG9GZXRjaCA9XG4gICAgICAgIGxhc3RGdWxseUxvYWRlZFJlbGF0aW9uVG9Vc2UgPT09IC0xXG4gICAgICAgICAgPyByZWxhdGlvbnNcbiAgICAgICAgICA6IHJlbGF0aW9ucy5zbGljZShsYXN0RnVsbHlMb2FkZWRSZWxhdGlvblRvVXNlICsgMSlcblxuICAgICAgbGV0IHJlc3VsdHNGZXRjaGVkID0gMFxuICAgICAgY29uc3QgcmVsYXRpb25NYXAgPSBjcmVhdGVSZWxhdGlvbk1hcCh7XG4gICAgICAgIGhhc01hbnksXG4gICAgICAgIHJlbGF0aW9uVG8sXG4gICAgICAgIHZhbHVlOiB2YWx1ZUFyZyxcbiAgICAgIH0pXG5cbiAgICAgIGlmICghZXJyb3JMb2FkaW5nKSB7XG4gICAgICAgIHJlbGF0aW9uc1RvRmV0Y2gucmVkdWNlKGFzeW5jIChwcmlvclJlbGF0aW9uLCByZWxhdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aW9uRmlsdGVyT3B0aW9uID0gZmlsdGVyT3B0aW9uc1Jlc3VsdD8uW3JlbGF0aW9uXVxuICAgICAgICAgIGxldCBsYXN0TG9hZGVkUGFnZVRvVXNlXG4gICAgICAgICAgaWYgKHNlYXJjaCAhPT0gc2VhcmNoQXJnKSB7XG4gICAgICAgICAgICBsYXN0TG9hZGVkUGFnZVRvVXNlID0gMVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsYXN0TG9hZGVkUGFnZVRvVXNlID0gbGFzdExvYWRlZFBhZ2VbcmVsYXRpb25dICsgMVxuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBwcmlvclJlbGF0aW9uXG5cbiAgICAgICAgICBpZiAocmVsYXRpb25GaWx0ZXJPcHRpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBzZXRMYXN0RnVsbHlMb2FkZWRSZWxhdGlvbihyZWxhdGlvbnMuaW5kZXhPZihyZWxhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVzdWx0c0ZldGNoZWQgPCAxMCkge1xuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGNvbGxlY3Rpb25zLmZpbmQoKGNvbGwpID0+IGNvbGwuc2x1ZyA9PT0gcmVsYXRpb24pXG4gICAgICAgICAgICBsZXQgZmllbGRUb1NlYXJjaCA9IGNvbGxlY3Rpb24/LmRlZmF1bHRTb3J0IHx8IGNvbGxlY3Rpb24/LmFkbWluPy51c2VBc1RpdGxlIHx8ICdpZCdcbiAgICAgICAgICAgIGlmICghc2VhcmNoQXJnKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2Ygc29ydE9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZmllbGRUb1NlYXJjaCA9IHNvcnRPcHRpb25zXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoc29ydE9wdGlvbnM/LltyZWxhdGlvbl0pIHtcbiAgICAgICAgICAgICAgICBmaWVsZFRvU2VhcmNoID0gc29ydE9wdGlvbnNbcmVsYXRpb25dXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcXVlcnk6IHtcbiAgICAgICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93blxuICAgICAgICAgICAgICB3aGVyZTogV2hlcmVcbiAgICAgICAgICAgIH0gPSB7XG4gICAgICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgICAgICBkcmFmdDogdHJ1ZSxcbiAgICAgICAgICAgICAgbGltaXQ6IG1heFJlc3VsdHNQZXJSZXF1ZXN0LFxuICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgIHBhZ2U6IGxhc3RMb2FkZWRQYWdlVG9Vc2UsXG4gICAgICAgICAgICAgIHNvcnQ6IGZpZWxkVG9TZWFyY2gsXG4gICAgICAgICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgICAgICAgYW5kOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgbm90X2luOiByZWxhdGlvbk1hcFtyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZWFyY2hBcmcpIHtcbiAgICAgICAgICAgICAgcXVlcnkud2hlcmUuYW5kLnB1c2goe1xuICAgICAgICAgICAgICAgIFtmaWVsZFRvU2VhcmNoXToge1xuICAgICAgICAgICAgICAgICAgbGlrZTogc2VhcmNoQXJnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZWxhdGlvbkZpbHRlck9wdGlvbiAmJiB0eXBlb2YgcmVsYXRpb25GaWx0ZXJPcHRpb24gIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICBxdWVyeS53aGVyZS5hbmQucHVzaChyZWxhdGlvbkZpbHRlck9wdGlvbilcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7cmVsYXRpb259PyR7cXMuc3RyaW5naWZ5KHF1ZXJ5KX1gLCB7XG4gICAgICAgICAgICAgIGNyZWRlbnRpYWxzOiAnaW5jbHVkZScsXG4gICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgICBjb25zdCBkYXRhOiBQYWdpbmF0ZWREb2NzPHVua25vd24+ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICAgIHNldExhc3RMb2FkZWRQYWdlKChwcmV2U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgW3JlbGF0aW9uXTogbGFzdExvYWRlZFBhZ2VUb1VzZSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgaWYgKCFkYXRhLm5leHRQYWdlKSB7XG4gICAgICAgICAgICAgICAgc2V0TGFzdEZ1bGx5TG9hZGVkUmVsYXRpb24ocmVsYXRpb25zLmluZGV4T2YocmVsYXRpb24pKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGRhdGEuZG9jcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0c0ZldGNoZWQgKz0gZGF0YS5kb2NzLmxlbmd0aFxuXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2hPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdBREQnLFxuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGZpeCB0aGlzXG4gICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlLW5leHQtbGluZVxuICAgICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgICAgZG9jczogZGF0YS5kb2NzLFxuICAgICAgICAgICAgICAgICAgaTE4bixcbiAgICAgICAgICAgICAgICAgIHNvcnQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgICBzZXRMYXN0RnVsbHlMb2FkZWRSZWxhdGlvbihyZWxhdGlvbnMuaW5kZXhPZihyZWxhdGlvbikpXG4gICAgICAgICAgICAgIGRpc3BhdGNoT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ0FERCcsXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBmaXggdGhpc1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUtbmV4dC1saW5lXG4gICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgIGRvY3M6IFtdLFxuICAgICAgICAgICAgICAgIGkxOG4sXG4gICAgICAgICAgICAgICAgaWRzOiByZWxhdGlvbk1hcFtyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgc29ydCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldEVycm9yTG9hZGluZyh0KCdlcnJvcjp1bnNwZWNpZmljJykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgICAgICBpZiAodHlwZW9mIG9uU3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykgb25TdWNjZXNzKClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgcmVsYXRpb25UbyxcbiAgICAgIGhhc01hbnksXG4gICAgICBlcnJvckxvYWRpbmcsXG4gICAgICBzZWFyY2gsXG4gICAgICBsYXN0TG9hZGVkUGFnZSxcbiAgICAgIGNvbGxlY3Rpb25zLFxuICAgICAgbG9jYWxlLFxuICAgICAgZmlsdGVyT3B0aW9uc1Jlc3VsdCxcbiAgICAgIHNlcnZlclVSTCxcbiAgICAgIHNvcnRPcHRpb25zLFxuICAgICAgYXBpLFxuICAgICAgaTE4bixcbiAgICAgIGNvbmZpZyxcbiAgICAgIHQsXG4gICAgXSxcbiAgKVxuXG4gIGNvbnN0IHVwZGF0ZVNlYXJjaCA9IHVzZURlYm91bmNlZENhbGxiYWNrKChzZWFyY2hBcmc6IHN0cmluZywgdmFsdWVBcmc6IFZhbHVlIHwgVmFsdWVbXSkgPT4ge1xuICAgIGdldFJlc3VsdHMoeyBzZWFyY2g6IHNlYXJjaEFyZywgc29ydDogdHJ1ZSwgdmFsdWU6IHZhbHVlQXJnIH0pXG4gICAgc2V0U2VhcmNoKHNlYXJjaEFyZylcbiAgfSwgMzAwKVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0Q2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKHNlYXJjaEFyZzogc3RyaW5nLCB2YWx1ZUFyZzogVmFsdWUgfCBWYWx1ZVtdKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoICE9PSBzZWFyY2hBcmcpIHtcbiAgICAgICAgc2V0TGFzdExvYWRlZFBhZ2Uoe30pXG4gICAgICAgIHVwZGF0ZVNlYXJjaChzZWFyY2hBcmcsIHZhbHVlQXJnLCBzZWFyY2hBcmcgIT09ICcnKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlYXJjaCwgdXBkYXRlU2VhcmNoXSxcbiAgKVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEVuc3VyZSB3ZSBoYXZlIGFuIG9wdGlvbiBmb3IgZWFjaCB2YWx1ZVxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcmVsYXRpb25NYXAgPSBjcmVhdGVSZWxhdGlvbk1hcCh7XG4gICAgICBoYXNNYW55LFxuICAgICAgcmVsYXRpb25UbyxcbiAgICAgIHZhbHVlLFxuICAgIH0pXG5cbiAgICBPYmplY3QuZW50cmllcyhyZWxhdGlvbk1hcCkucmVkdWNlKGFzeW5jIChwcmlvclJlbGF0aW9uLCBbcmVsYXRpb24sIGlkc10pID0+IHtcbiAgICAgIGF3YWl0IHByaW9yUmVsYXRpb25cblxuICAgICAgY29uc3QgaWRzVG9Mb2FkID0gaWRzLmZpbHRlcigoaWQpID0+IHtcbiAgICAgICAgcmV0dXJuICFvcHRpb25zLmZpbmQoKG9wdGlvbkdyb3VwKSA9PlxuICAgICAgICAgIG9wdGlvbkdyb3VwPy5vcHRpb25zPy5maW5kKFxuICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSBpZCAmJiBvcHRpb24ucmVsYXRpb25UbyA9PT0gcmVsYXRpb24sXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSlcblxuICAgICAgaWYgKGlkc1RvTG9hZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0ge1xuICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgIGRyYWZ0OiB0cnVlLFxuICAgICAgICAgIGxpbWl0OiBpZHNUb0xvYWQubGVuZ3RoLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICB3aGVyZToge1xuICAgICAgICAgICAgaWQ6IHtcbiAgICAgICAgICAgICAgaW46IGlkc1RvTG9hZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZXJyb3JMb2FkaW5nKSB7XG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7cmVsYXRpb259PyR7cXMuc3RyaW5naWZ5KHF1ZXJ5KX1gLCB7XG4gICAgICAgICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBjb2xsZWN0aW9ucy5maW5kKChjb2xsKSA9PiBjb2xsLnNsdWcgPT09IHJlbGF0aW9uKVxuICAgICAgICAgIGxldCBkb2NzID0gW11cblxuICAgICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICAgICAgZG9jcyA9IGRhdGEuZG9jc1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRpc3BhdGNoT3B0aW9ucyh7XG4gICAgICAgICAgICB0eXBlOiAnQUREJyxcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAvLyBUT0RPOiBmaXggdGhpc1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZS1uZXh0LWxpbmVcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGRvY3MsXG4gICAgICAgICAgICBpMThuLFxuICAgICAgICAgICAgaWRzOiBpZHNUb0xvYWQsXG4gICAgICAgICAgICBzb3J0OiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcbiAgfSwgW1xuICAgIG9wdGlvbnMsXG4gICAgdmFsdWUsXG4gICAgaGFzTWFueSxcbiAgICBlcnJvckxvYWRpbmcsXG4gICAgY29sbGVjdGlvbnMsXG4gICAgaGFzTXVsdGlwbGVSZWxhdGlvbnMsXG4gICAgc2VydmVyVVJMLFxuICAgIGFwaSxcbiAgICBpMThuLFxuICAgIHJlbGF0aW9uVG8sXG4gICAgbG9jYWxlLFxuICAgIGNvbmZpZyxcbiAgXSlcblxuICAvLyBEZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIHN3aXRjaCB0byB3b3JkIGJvdW5kYXJ5IHNlYXJjaFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHJlbGF0aW9ucyA9IEFycmF5LmlzQXJyYXkocmVsYXRpb25UbykgPyByZWxhdGlvblRvIDogW3JlbGF0aW9uVG9dXG4gICAgY29uc3QgaXNJZE9ubHkgPSByZWxhdGlvbnMucmVkdWNlKChpZE9ubHksIHJlbGF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBjb2xsZWN0aW9uID0gY29sbGVjdGlvbnMuZmluZCgoY29sbCkgPT4gY29sbC5zbHVnID09PSByZWxhdGlvbilcbiAgICAgIGNvbnN0IGZpZWxkVG9TZWFyY2ggPSBjb2xsZWN0aW9uPy5hZG1pbj8udXNlQXNUaXRsZSB8fCAnaWQnXG4gICAgICByZXR1cm4gZmllbGRUb1NlYXJjaCA9PT0gJ2lkJyAmJiBpZE9ubHlcbiAgICB9LCB0cnVlKVxuICAgIHNldEVuYWJsZVdvcmRCb3VuZGFyeVNlYXJjaCghaXNJZE9ubHkpXG4gIH0sIFtyZWxhdGlvblRvLCBjb2xsZWN0aW9uc10pXG5cbiAgLy8gV2hlbiAoYHJlbGF0aW9uVG9gIHx8IGBmaWx0ZXJPcHRpb25zUmVzdWx0YCB8fCBgbG9jYWxlYCkgY2hhbmdlcywgcmVzZXQgY29tcG9uZW50XG4gIC8vIE5vdGUgLSBlZmZlY3Qgc2hvdWxkIG5vdCBydW4gb24gZmlyc3QgcnVuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZpcnN0UnVuLmN1cnJlbnQpIHtcbiAgICAgIGZpcnN0UnVuLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZGlzcGF0Y2hPcHRpb25zKHsgdHlwZTogJ0NMRUFSJyB9KVxuICAgIHNldExhc3RGdWxseUxvYWRlZFJlbGF0aW9uKC0xKVxuICAgIHNldExhc3RMb2FkZWRQYWdlKHt9KVxuICAgIHNldEhhc0xvYWRlZEZpcnN0UGFnZShmYWxzZSlcbiAgfSwgW3JlbGF0aW9uVG8sIGZpbHRlck9wdGlvbnNSZXN1bHQsIGxvY2FsZV0pXG5cbiAgY29uc3Qgb25TYXZlID0gdXNlQ2FsbGJhY2s8RG9jdW1lbnREcmF3ZXJQcm9wc1snb25TYXZlJ10+KFxuICAgIChhcmdzKSA9PiB7XG4gICAgICBkaXNwYXRjaE9wdGlvbnMoe1xuICAgICAgICB0eXBlOiAnVVBEQVRFJyxcbiAgICAgICAgY29sbGVjdGlvbjogYXJncy5jb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgICAvLyBUT0RPOiBmaXggdGhpc1xuICAgICAgICAvLyBAdHMtaWdub3JlLW5leHQtbGluZVxuICAgICAgICBjb25maWcsXG4gICAgICAgIGRvYzogYXJncy5kb2MsXG4gICAgICAgIGkxOG4sXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2kxOG4sIGNvbmZpZ10sXG4gIClcblxuICBjb25zdCBmaWx0ZXJPcHRpb24gPSB1c2VDYWxsYmFjaygoaXRlbTogT3B0aW9uLCBzZWFyY2hGaWx0ZXI6IHN0cmluZykgPT4ge1xuICAgIGlmICghc2VhcmNoRmlsdGVyKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICBjb25zdCByID0gd29yZEJvdW5kYXJpZXNSZWdleChzZWFyY2hGaWx0ZXIgfHwgJycpXG4gICAgLy8gYnJlYWtpbmcgdGhlIGxhYmVscyB0byBzZWFyY2ggaW50byBzbWFsbGVyIHBhcnRzIGluY3JlYXNlcyBwZXJmb3JtYW5jZVxuICAgIGNvbnN0IGJyZWFrQXBhcnRUaHJlc2hvbGQgPSAyNTBcbiAgICBsZXQgc3RyaW5nID0gaXRlbS5sYWJlbFxuICAgIC8vIHN0cmluZ3MgbGVzcyB0aGFuIGJyZWFrQXBhcnRUaHJlc2hvbGQgbGVuZ3RoIHdvbid0IGJlIGNodW5rZWRcbiAgICB3aGlsZSAoc3RyaW5nLmxlbmd0aCA+IGJyZWFrQXBhcnRUaHJlc2hvbGQpIHtcbiAgICAgIC8vIHNsaWNpbmcgYnkgdGhlIG5leHQgc3BhY2UgYWZ0ZXIgdGhlIGxlbmd0aCBvZiB0aGUgc2VhcmNoIGlucHV0IHByZXZlbnRzIHNsaWNpbmcgdGhlIHN0cmluZyB1cCBieSBwYXJ0aWFsIHdvcmRzXG4gICAgICBjb25zdCBpbmRleE9mU3BhY2UgPSBzdHJpbmcuaW5kZXhPZignICcsIHNlYXJjaEZpbHRlci5sZW5ndGgpXG4gICAgICBpZiAoci50ZXN0KHN0cmluZy5zbGljZSgwLCBpbmRleE9mU3BhY2UgPT09IC0xID8gc2VhcmNoRmlsdGVyLmxlbmd0aCA6IGluZGV4T2ZTcGFjZSArIDEpKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgc3RyaW5nID0gc3RyaW5nLnNsaWNlKGluZGV4T2ZTcGFjZSA9PT0gLTEgPyBzZWFyY2hGaWx0ZXIubGVuZ3RoIDogaW5kZXhPZlNwYWNlICsgMSlcbiAgICB9XG4gICAgcmV0dXJuIHIudGVzdChzdHJpbmcuc2xpY2UoLWJyZWFrQXBhcnRUaHJlc2hvbGQpKVxuICB9LCBbXSlcblxuICBjb25zdCB2YWx1ZVRvUmVuZGVyID0gZmluZE9wdGlvbnNCeVZhbHVlKHsgb3B0aW9ucywgdmFsdWUgfSlcblxuICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWVUb1JlbmRlcikgJiYgdmFsdWVUb1JlbmRlcj8udmFsdWUgPT09ICdudWxsJykgdmFsdWVUb1JlbmRlci52YWx1ZSA9IG51bGxcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17W1xuICAgICAgICBmaWVsZEJhc2VDbGFzcyxcbiAgICAgICAgYmFzZUNsYXNzLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIHNob3dFcnJvciAmJiAnZXJyb3InLFxuICAgICAgICBlcnJvckxvYWRpbmcgJiYgJ2Vycm9yLWxvYWRpbmcnLFxuICAgICAgICByZWFkT25seSAmJiBgJHtiYXNlQ2xhc3N9LS1yZWFkLW9ubHlgLFxuICAgICAgXVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIC5qb2luKCcgJyl9XG4gICAgICBpZD17YGZpZWxkLSR7cGF0aC5yZXBsYWNlKC9cXC4vZywgJ19fJyl9YH1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIC4uLnN0eWxlLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH19XG4gICAgPlxuICAgICAge0Vycm9yfVxuICAgICAge0xhYmVsfVxuICAgICAgPEdldEZpbHRlck9wdGlvbnNcbiAgICAgICAgey4uLntcbiAgICAgICAgICBmaWx0ZXJPcHRpb25zLFxuICAgICAgICAgIGZpbHRlck9wdGlvbnNSZXN1bHQsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByZWxhdGlvblRvLFxuICAgICAgICAgIHNldEZpbHRlck9wdGlvbnNSZXN1bHQsXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAgeyFlcnJvckxvYWRpbmcgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fd3JhcGB9PlxuICAgICAgICAgIDxSZWFjdFNlbGVjdFxuICAgICAgICAgICAgYmFja3NwYWNlUmVtb3Zlc1ZhbHVlPXshZHJhd2VySXNPcGVufVxuICAgICAgICAgICAgY29tcG9uZW50cz17e1xuICAgICAgICAgICAgICBNdWx0aVZhbHVlTGFiZWwsXG4gICAgICAgICAgICAgIFNpbmdsZVZhbHVlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGN1c3RvbVByb3BzPXt7XG4gICAgICAgICAgICAgIGRpc2FibGVLZXlEb3duOiBkcmF3ZXJJc09wZW4sXG4gICAgICAgICAgICAgIGRpc2FibGVNb3VzZURvd246IGRyYXdlcklzT3BlbixcbiAgICAgICAgICAgICAgb25TYXZlLFxuICAgICAgICAgICAgICBzZXREcmF3ZXJJc09wZW4sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRPbmx5IHx8IGZvcm1Qcm9jZXNzaW5nfVxuICAgICAgICAgICAgZmlsdGVyT3B0aW9uPXtlbmFibGVXb3JkQm91bmRhcnlTZWFyY2ggPyBmaWx0ZXJPcHRpb24gOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgIGlzTXVsdGk9e2hhc01hbnl9XG4gICAgICAgICAgICBpc1NvcnRhYmxlPXtpc1NvcnRhYmxlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e1xuICAgICAgICAgICAgICAhcmVhZE9ubHlcbiAgICAgICAgICAgICAgICA/IChzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShoYXNNYW55ID8gW10gOiBudWxsKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhhc01hbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZWN0ZWQubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNNdWx0aXBsZVJlbGF0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IG9wdGlvbi5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzTXVsdGlwbGVSZWxhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvblRvOiBzZWxlY3RlZC5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlbGVjdGVkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0ZWQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25JbnB1dENoYW5nZT17KG5ld1NlYXJjaCkgPT4gaGFuZGxlSW5wdXRDaGFuZ2UobmV3U2VhcmNoLCB2YWx1ZSl9XG4gICAgICAgICAgICBvbk1lbnVPcGVuPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaGFzTG9hZGVkRmlyc3RQYWdlKSB7XG4gICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgZ2V0UmVzdWx0cyh7XG4gICAgICAgICAgICAgICAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SGFzTG9hZGVkRmlyc3RQYWdlKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogaW5pdGlhbFZhbHVlLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbk1lbnVTY3JvbGxUb0JvdHRvbT17KCkgPT4ge1xuICAgICAgICAgICAgICBnZXRSZXN1bHRzKHtcbiAgICAgICAgICAgICAgICBsYXN0RnVsbHlMb2FkZWRSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGluaXRpYWxWYWx1ZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgICAgc2hvd0Vycm9yPXtzaG93RXJyb3J9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVUb1JlbmRlciA/PyBudWxsfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgeyFyZWFkT25seSAmJiBhbGxvd0NyZWF0ZSAmJiAoXG4gICAgICAgICAgICA8QWRkTmV3UmVsYXRpb25cbiAgICAgICAgICAgICAgey4uLntcbiAgICAgICAgICAgICAgICBkaXNwYXRjaE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgaGFzTWFueSxcbiAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25UbyxcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAge2Vycm9yTG9hZGluZyAmJiA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZXJyb3ItbG9hZGluZ2B9PntlcnJvckxvYWRpbmd9PC9kaXY+fVxuICAgICAge0Rlc2NyaXB0aW9ufVxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhDb25kaXRpb24oUmVsYXRpb25zaGlwKVxuIl0sIm5hbWVzIjpbIm1heFJlc3VsdHNQZXJSZXF1ZXN0IiwiYmFzZUNsYXNzIiwiUmVsYXRpb25zaGlwIiwicHJvcHMiLCJuYW1lIiwiRGVzY3JpcHRpb24iLCJFcnJvciIsIkxhYmVsIiwiY2xhc3NOYW1lIiwicGF0aCIsInBhdGhGcm9tUHJvcHMiLCJyZWFkT25seSIsInJlcXVpcmVkIiwic3R5bGUiLCJ2YWxpZGF0ZSIsIndpZHRoIiwiY29uZmlnIiwidXNlQ29uZmlnIiwiY29sbGVjdGlvbnMiLCJyb3V0ZXMiLCJhcGkiLCJzZXJ2ZXJVUkwiLCJyZWxhdGlvblRvIiwidW5kZWZpbmVkIiwiaGFzTWFueSIsImZpbHRlck9wdGlvbnMiLCJzb3J0T3B0aW9ucyIsImlzU29ydGFibGUiLCJhbGxvd0NyZWF0ZSIsImkxOG4iLCJ0IiwidXNlVHJhbnNsYXRpb24iLCJwZXJtaXNzaW9ucyIsInVzZUF1dGgiLCJjb2RlIiwibG9jYWxlIiwidXNlTG9jYWxlIiwiZm9ybVByb2Nlc3NpbmciLCJ1c2VGb3JtUHJvY2Vzc2luZyIsImhhc011bHRpcGxlUmVsYXRpb25zIiwiQXJyYXkiLCJpc0FycmF5Iiwib3B0aW9ucyIsImRpc3BhdGNoT3B0aW9ucyIsInVzZVJlZHVjZXIiLCJvcHRpb25zUmVkdWNlciIsImxhc3RGdWxseUxvYWRlZFJlbGF0aW9uIiwic2V0TGFzdEZ1bGx5TG9hZGVkUmVsYXRpb24iLCJ1c2VTdGF0ZSIsImxhc3RMb2FkZWRQYWdlIiwic2V0TGFzdExvYWRlZFBhZ2UiLCJlcnJvckxvYWRpbmciLCJzZXRFcnJvckxvYWRpbmciLCJmaWx0ZXJPcHRpb25zUmVzdWx0Iiwic2V0RmlsdGVyT3B0aW9uc1Jlc3VsdCIsInNlYXJjaCIsInNldFNlYXJjaCIsImlzTG9hZGluZyIsInNldElzTG9hZGluZyIsImhhc0xvYWRlZEZpcnN0UGFnZSIsInNldEhhc0xvYWRlZEZpcnN0UGFnZSIsImVuYWJsZVdvcmRCb3VuZGFyeVNlYXJjaCIsInNldEVuYWJsZVdvcmRCb3VuZGFyeVNlYXJjaCIsImZpcnN0UnVuIiwidXNlUmVmIiwibWVtb2l6ZWRWYWxpZGF0ZSIsInVzZUNhbGxiYWNrIiwidmFsdWUiLCJ2YWxpZGF0aW9uT3B0aW9ucyIsImluaXRpYWxWYWx1ZSIsInNldFZhbHVlIiwic2hvd0Vycm9yIiwidXNlRmllbGQiLCJkcmF3ZXJJc09wZW4iLCJzZXREcmF3ZXJJc09wZW4iLCJnZXRSZXN1bHRzIiwibGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25BcmciLCJvblN1Y2Nlc3MiLCJzZWFyY2hBcmciLCJzb3J0IiwidmFsdWVBcmciLCJsYXN0RnVsbHlMb2FkZWRSZWxhdGlvblRvVXNlIiwicmVsYXRpb25zIiwicmVsYXRpb25zVG9GZXRjaCIsInNsaWNlIiwicmVzdWx0c0ZldGNoZWQiLCJyZWxhdGlvbk1hcCIsImNyZWF0ZVJlbGF0aW9uTWFwIiwicmVkdWNlIiwicHJpb3JSZWxhdGlvbiIsInJlbGF0aW9uIiwicmVsYXRpb25GaWx0ZXJPcHRpb24iLCJsYXN0TG9hZGVkUGFnZVRvVXNlIiwiaW5kZXhPZiIsIlByb21pc2UiLCJyZXNvbHZlIiwiY29sbGVjdGlvbiIsImZpbmQiLCJjb2xsIiwic2x1ZyIsImZpZWxkVG9TZWFyY2giLCJkZWZhdWx0U29ydCIsImFkbWluIiwidXNlQXNUaXRsZSIsInF1ZXJ5IiwiZGVwdGgiLCJkcmFmdCIsImxpbWl0IiwicGFnZSIsIndoZXJlIiwiYW5kIiwiaWQiLCJub3RfaW4iLCJwdXNoIiwibGlrZSIsInJlc3BvbnNlIiwiZmV0Y2giLCJxcyIsInN0cmluZ2lmeSIsImNyZWRlbnRpYWxzIiwiaGVhZGVycyIsImxhbmd1YWdlIiwib2siLCJkYXRhIiwianNvbiIsInByZXZTdGF0ZSIsIm5leHRQYWdlIiwiZG9jcyIsImxlbmd0aCIsInR5cGUiLCJzdGF0dXMiLCJpZHMiLCJ1cGRhdGVTZWFyY2giLCJ1c2VEZWJvdW5jZWRDYWxsYmFjayIsImhhbmRsZUlucHV0Q2hhbmdlIiwidXNlRWZmZWN0IiwiT2JqZWN0IiwiZW50cmllcyIsImlkc1RvTG9hZCIsImZpbHRlciIsIm9wdGlvbkdyb3VwIiwib3B0aW9uIiwiaW4iLCJpc0lkT25seSIsImlkT25seSIsImN1cnJlbnQiLCJvblNhdmUiLCJhcmdzIiwiY29sbGVjdGlvbkNvbmZpZyIsImRvYyIsImZpbHRlck9wdGlvbiIsIml0ZW0iLCJzZWFyY2hGaWx0ZXIiLCJyIiwid29yZEJvdW5kYXJpZXNSZWdleCIsImJyZWFrQXBhcnRUaHJlc2hvbGQiLCJzdHJpbmciLCJsYWJlbCIsImluZGV4T2ZTcGFjZSIsInRlc3QiLCJ2YWx1ZVRvUmVuZGVyIiwiZmluZE9wdGlvbnNCeVZhbHVlIiwiZGl2IiwiZmllbGRCYXNlQ2xhc3MiLCJCb29sZWFuIiwiam9pbiIsInJlcGxhY2UiLCJHZXRGaWx0ZXJPcHRpb25zIiwiUmVhY3RTZWxlY3QiLCJiYWNrc3BhY2VSZW1vdmVzVmFsdWUiLCJjb21wb25lbnRzIiwiTXVsdGlWYWx1ZUxhYmVsIiwiU2luZ2xlVmFsdWUiLCJjdXN0b21Qcm9wcyIsImRpc2FibGVLZXlEb3duIiwiZGlzYWJsZU1vdXNlRG93biIsImRpc2FibGVkIiwiaXNNdWx0aSIsIm9uQ2hhbmdlIiwic2VsZWN0ZWQiLCJtYXAiLCJvbklucHV0Q2hhbmdlIiwibmV3U2VhcmNoIiwib25NZW51T3BlbiIsIm9uTWVudVNjcm9sbFRvQm90dG9tIiwiQWRkTmV3UmVsYXRpb24iLCJ3aXRoQ29uZGl0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7K0JBOGhCQTs7O2VBQUE7OzsyQkExaEJvQzsyREFDckI7K0RBQzZEO2tDQUszQztvRUFDVDtzQ0FDYTtzQkFDYjt3QkFDRTt3QkFDQTs2QkFDSzt5QkFDRztpRUFDYjsrQkFDUzt3QkFDQzt3QkFDQTttQ0FDRztvQ0FDQztRQUM1Qjt1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
|
|
453
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb3Jtcy9maWVsZHMvUmVsYXRpb25zaGlwL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgUGFnaW5hdGVkRG9jcyB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5pbXBvcnQgdHlwZSB7IFdoZXJlIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgd29yZEJvdW5kYXJpZXNSZWdleCB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IHFzIGZyb20gJ3FzJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZHVjZXIsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHR5cGUgeyBEb2N1bWVudERyYXdlclByb3BzIH0gZnJvbSAnLi4vLi4vLi4vZWxlbWVudHMvRG9jdW1lbnREcmF3ZXIvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpbHRlck9wdGlvbnNSZXN1bHQsIEdldFJlc3VsdHMsIE9wdGlvbiwgUHJvcHMsIFZhbHVlIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgR2V0RmlsdGVyT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2VsZW1lbnRzL0dldEZpbHRlck9wdGlvbnMnXG5pbXBvcnQgUmVhY3RTZWxlY3QgZnJvbSAnLi4vLi4vLi4vZWxlbWVudHMvUmVhY3RTZWxlY3QnXG5pbXBvcnQgeyB1c2VEZWJvdW5jZWRDYWxsYmFjayB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZURlYm91bmNlZENhbGxiYWNrJ1xuaW1wb3J0IHsgdXNlQXV0aCB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9BdXRoJ1xuaW1wb3J0IHsgdXNlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL0NvbmZpZydcbmltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9Mb2NhbGUnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9UcmFuc2xhdGlvbidcbmltcG9ydCB7IHVzZUZvcm1Qcm9jZXNzaW5nIH0gZnJvbSAnLi4vLi4vRm9ybS9jb250ZXh0J1xuaW1wb3J0IHVzZUZpZWxkIGZyb20gJy4uLy4uL3VzZUZpZWxkJ1xuaW1wb3J0IHsgd2l0aENvbmRpdGlvbiB9IGZyb20gJy4uLy4uL3dpdGhDb25kaXRpb24nXG5pbXBvcnQgeyBmaWVsZEJhc2VDbGFzcyB9IGZyb20gJy4uL3NoYXJlZCdcbmltcG9ydCB7IEFkZE5ld1JlbGF0aW9uIH0gZnJvbSAnLi9BZGROZXcnXG5pbXBvcnQgeyBjcmVhdGVSZWxhdGlvbk1hcCB9IGZyb20gJy4vY3JlYXRlUmVsYXRpb25NYXAnXG5pbXBvcnQgeyBmaW5kT3B0aW9uc0J5VmFsdWUgfSBmcm9tICcuL2ZpbmRPcHRpb25zQnlWYWx1ZSdcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuaW1wb3J0IG9wdGlvbnNSZWR1Y2VyIGZyb20gJy4vb3B0aW9uc1JlZHVjZXInXG5pbXBvcnQgeyBNdWx0aVZhbHVlTGFiZWwgfSBmcm9tICcuL3NlbGVjdC1jb21wb25lbnRzL011bHRpVmFsdWVMYWJlbCdcbmltcG9ydCB7IFNpbmdsZVZhbHVlIH0gZnJvbSAnLi9zZWxlY3QtY29tcG9uZW50cy9TaW5nbGVWYWx1ZSdcblxuY29uc3QgbWF4UmVzdWx0c1BlclJlcXVlc3QgPSAxMFxuXG5jb25zdCBiYXNlQ2xhc3MgPSAncmVsYXRpb25zaGlwJ1xuXG5jb25zdCBSZWxhdGlvbnNoaXA6IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbmFtZSxcbiAgICBEZXNjcmlwdGlvbixcbiAgICBFcnJvcixcbiAgICBMYWJlbCxcbiAgICBjbGFzc05hbWUsXG4gICAgcGF0aDogcGF0aEZyb21Qcm9wcyxcbiAgICByZWFkT25seSxcbiAgICByZXF1aXJlZCxcbiAgICBzdHlsZSxcbiAgICB2YWxpZGF0ZSxcbiAgICB3aWR0aCxcbiAgfSA9IHByb3BzXG5cbiAgY29uc3QgY29uZmlnID0gdXNlQ29uZmlnKClcblxuICBjb25zdCB7XG4gICAgY29sbGVjdGlvbnMsXG4gICAgcm91dGVzOiB7IGFwaSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IGNvbmZpZ1xuXG4gIGNvbnN0IHJlbGF0aW9uVG8gPSAncmVsYXRpb25UbycgaW4gcHJvcHMgPyBwcm9wcz8ucmVsYXRpb25UbyA6IHVuZGVmaW5lZFxuICBjb25zdCBoYXNNYW55ID0gJ2hhc01hbnknIGluIHByb3BzID8gcHJvcHM/Lmhhc01hbnkgOiB1bmRlZmluZWRcbiAgY29uc3QgZmlsdGVyT3B0aW9ucyA9ICdmaWx0ZXJPcHRpb25zJyBpbiBwcm9wcyA/IHByb3BzPy5maWx0ZXJPcHRpb25zIDogdW5kZWZpbmVkXG4gIGNvbnN0IHNvcnRPcHRpb25zID0gJ3NvcnRPcHRpb25zJyBpbiBwcm9wcyA/IHByb3BzPy5zb3J0T3B0aW9ucyA6IHVuZGVmaW5lZFxuICBjb25zdCBpc1NvcnRhYmxlID0gJ2lzU29ydGFibGUnIGluIHByb3BzID8gcHJvcHM/LmlzU29ydGFibGUgOiB0cnVlXG4gIGNvbnN0IGFsbG93Q3JlYXRlID0gJ2FsbG93Q3JlYXRlJyBpbiBwcm9wcyA/IHByb3BzPy5hbGxvd0NyZWF0ZSA6IHRydWVcblxuICBjb25zdCB7IGkxOG4sIHQgfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgeyBwZXJtaXNzaW9ucyB9ID0gdXNlQXV0aCgpXG4gIGNvbnN0IHsgY29kZTogbG9jYWxlIH0gPSB1c2VMb2NhbGUoKVxuICBjb25zdCBmb3JtUHJvY2Vzc2luZyA9IHVzZUZvcm1Qcm9jZXNzaW5nKClcbiAgY29uc3QgaGFzTXVsdGlwbGVSZWxhdGlvbnMgPSBBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pXG4gIGNvbnN0IFtvcHRpb25zLCBkaXNwYXRjaE9wdGlvbnNdID0gdXNlUmVkdWNlcihvcHRpb25zUmVkdWNlciwgW10pXG4gIGNvbnN0IFtsYXN0RnVsbHlMb2FkZWRSZWxhdGlvbiwgc2V0TGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25dID0gdXNlU3RhdGUoLTEpXG4gIGNvbnN0IFtsYXN0TG9hZGVkUGFnZSwgc2V0TGFzdExvYWRlZFBhZ2VdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgbnVtYmVyPj4oe30pXG4gIGNvbnN0IFtlcnJvckxvYWRpbmcsIHNldEVycm9yTG9hZGluZ10gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgW2ZpbHRlck9wdGlvbnNSZXN1bHQsIHNldEZpbHRlck9wdGlvbnNSZXN1bHRdID0gdXNlU3RhdGU8RmlsdGVyT3B0aW9uc1Jlc3VsdD4oKVxuICBjb25zdCBbc2VhcmNoLCBzZXRTZWFyY2hdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2hhc0xvYWRlZEZpcnN0UGFnZSwgc2V0SGFzTG9hZGVkRmlyc3RQYWdlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZW5hYmxlV29yZEJvdW5kYXJ5U2VhcmNoLCBzZXRFbmFibGVXb3JkQm91bmRhcnlTZWFyY2hdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGZpcnN0UnVuID0gdXNlUmVmKHRydWUpXG5cbiAgY29uc3QgbWVtb2l6ZWRWYWxpZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICh2YWx1ZSwgdmFsaWRhdGlvbk9wdGlvbnMpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsaWRhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlKHZhbHVlLCB7IC4uLnZhbGlkYXRpb25PcHRpb25zLCByZXF1aXJlZCB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3ZhbGlkYXRlLCByZXF1aXJlZF0sXG4gIClcblxuICBjb25zdCB7IGluaXRpYWxWYWx1ZSwgcGF0aCwgc2V0VmFsdWUsIHNob3dFcnJvciwgdmFsdWUgfSA9IHVzZUZpZWxkPFZhbHVlIHwgVmFsdWVbXT4oe1xuICAgIHBhdGg6IHBhdGhGcm9tUHJvcHMgfHwgbmFtZSxcbiAgICB2YWxpZGF0ZTogbWVtb2l6ZWRWYWxpZGF0ZSxcbiAgfSlcblxuICBjb25zdCBbZHJhd2VySXNPcGVuLCBzZXREcmF3ZXJJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgZ2V0UmVzdWx0czogR2V0UmVzdWx0cyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7XG4gICAgICBsYXN0RnVsbHlMb2FkZWRSZWxhdGlvbjogbGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25BcmcsXG4gICAgICBvblN1Y2Nlc3MsXG4gICAgICBzZWFyY2g6IHNlYXJjaEFyZyxcbiAgICAgIHNvcnQsXG4gICAgICB2YWx1ZTogdmFsdWVBcmcsXG4gICAgfSkgPT4ge1xuICAgICAgaWYgKCFwZXJtaXNzaW9ucykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IGxhc3RGdWxseUxvYWRlZFJlbGF0aW9uVG9Vc2UgPVxuICAgICAgICB0eXBlb2YgbGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25BcmcgIT09ICd1bmRlZmluZWQnID8gbGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25BcmcgOiAtMVxuXG4gICAgICBjb25zdCByZWxhdGlvbnMgPSBBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pID8gcmVsYXRpb25UbyA6IFtyZWxhdGlvblRvXVxuICAgICAgY29uc3QgcmVsYXRpb25zVG9GZXRjaCA9XG4gICAgICAgIGxhc3RGdWxseUxvYWRlZFJlbGF0aW9uVG9Vc2UgPT09IC0xXG4gICAgICAgICAgPyByZWxhdGlvbnNcbiAgICAgICAgICA6IHJlbGF0aW9ucy5zbGljZShsYXN0RnVsbHlMb2FkZWRSZWxhdGlvblRvVXNlICsgMSlcblxuICAgICAgbGV0IHJlc3VsdHNGZXRjaGVkID0gMFxuICAgICAgY29uc3QgcmVsYXRpb25NYXAgPSBjcmVhdGVSZWxhdGlvbk1hcCh7XG4gICAgICAgIGhhc01hbnksXG4gICAgICAgIHJlbGF0aW9uVG8sXG4gICAgICAgIHZhbHVlOiB2YWx1ZUFyZyxcbiAgICAgIH0pXG5cbiAgICAgIGlmICghZXJyb3JMb2FkaW5nKSB7XG4gICAgICAgIHJlbGF0aW9uc1RvRmV0Y2gucmVkdWNlKGFzeW5jIChwcmlvclJlbGF0aW9uLCByZWxhdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aW9uRmlsdGVyT3B0aW9uID0gZmlsdGVyT3B0aW9uc1Jlc3VsdD8uW3JlbGF0aW9uXVxuICAgICAgICAgIGxldCBsYXN0TG9hZGVkUGFnZVRvVXNlXG4gICAgICAgICAgaWYgKHNlYXJjaCAhPT0gc2VhcmNoQXJnKSB7XG4gICAgICAgICAgICBsYXN0TG9hZGVkUGFnZVRvVXNlID0gMVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsYXN0TG9hZGVkUGFnZVRvVXNlID0gbGFzdExvYWRlZFBhZ2VbcmVsYXRpb25dICsgMVxuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBwcmlvclJlbGF0aW9uXG5cbiAgICAgICAgICBpZiAocmVsYXRpb25GaWx0ZXJPcHRpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBzZXRMYXN0RnVsbHlMb2FkZWRSZWxhdGlvbihyZWxhdGlvbnMuaW5kZXhPZihyZWxhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVzdWx0c0ZldGNoZWQgPCAxMCkge1xuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGNvbGxlY3Rpb25zLmZpbmQoKGNvbGwpID0+IGNvbGwuc2x1ZyA9PT0gcmVsYXRpb24pXG4gICAgICAgICAgICBsZXQgZmllbGRUb1NlYXJjaCA9IGNvbGxlY3Rpb24/LmRlZmF1bHRTb3J0IHx8IGNvbGxlY3Rpb24/LmFkbWluPy51c2VBc1RpdGxlIHx8ICdpZCdcbiAgICAgICAgICAgIGlmICghc2VhcmNoQXJnKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2Ygc29ydE9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZmllbGRUb1NlYXJjaCA9IHNvcnRPcHRpb25zXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoc29ydE9wdGlvbnM/LltyZWxhdGlvbl0pIHtcbiAgICAgICAgICAgICAgICBmaWVsZFRvU2VhcmNoID0gc29ydE9wdGlvbnNbcmVsYXRpb25dXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcXVlcnk6IHtcbiAgICAgICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93blxuICAgICAgICAgICAgICB3aGVyZTogV2hlcmVcbiAgICAgICAgICAgIH0gPSB7XG4gICAgICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgICAgICBkcmFmdDogdHJ1ZSxcbiAgICAgICAgICAgICAgbGltaXQ6IG1heFJlc3VsdHNQZXJSZXF1ZXN0LFxuICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgIHBhZ2U6IGxhc3RMb2FkZWRQYWdlVG9Vc2UsXG4gICAgICAgICAgICAgIHNvcnQ6IGZpZWxkVG9TZWFyY2gsXG4gICAgICAgICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgICAgICAgYW5kOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgbm90X2luOiByZWxhdGlvbk1hcFtyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZWFyY2hBcmcpIHtcbiAgICAgICAgICAgICAgcXVlcnkud2hlcmUuYW5kLnB1c2goe1xuICAgICAgICAgICAgICAgIFtmaWVsZFRvU2VhcmNoXToge1xuICAgICAgICAgICAgICAgICAgbGlrZTogc2VhcmNoQXJnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZWxhdGlvbkZpbHRlck9wdGlvbiAmJiB0eXBlb2YgcmVsYXRpb25GaWx0ZXJPcHRpb24gIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICBxdWVyeS53aGVyZS5hbmQucHVzaChyZWxhdGlvbkZpbHRlck9wdGlvbilcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7cmVsYXRpb259PyR7cXMuc3RyaW5naWZ5KHF1ZXJ5KX1gLCB7XG4gICAgICAgICAgICAgIGNyZWRlbnRpYWxzOiAnaW5jbHVkZScsXG4gICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgICBjb25zdCBkYXRhOiBQYWdpbmF0ZWREb2NzPHVua25vd24+ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICAgIHNldExhc3RMb2FkZWRQYWdlKChwcmV2U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgW3JlbGF0aW9uXTogbGFzdExvYWRlZFBhZ2VUb1VzZSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgaWYgKCFkYXRhLm5leHRQYWdlKSB7XG4gICAgICAgICAgICAgICAgc2V0TGFzdEZ1bGx5TG9hZGVkUmVsYXRpb24ocmVsYXRpb25zLmluZGV4T2YocmVsYXRpb24pKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGRhdGEuZG9jcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0c0ZldGNoZWQgKz0gZGF0YS5kb2NzLmxlbmd0aFxuXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2hPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdBREQnLFxuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGZpeCB0aGlzXG4gICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlLW5leHQtbGluZVxuICAgICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgICAgZG9jczogZGF0YS5kb2NzLFxuICAgICAgICAgICAgICAgICAgaTE4bixcbiAgICAgICAgICAgICAgICAgIHNvcnQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgICBzZXRMYXN0RnVsbHlMb2FkZWRSZWxhdGlvbihyZWxhdGlvbnMuaW5kZXhPZihyZWxhdGlvbikpXG4gICAgICAgICAgICAgIGRpc3BhdGNoT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ0FERCcsXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBmaXggdGhpc1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUtbmV4dC1saW5lXG4gICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgIGRvY3M6IFtdLFxuICAgICAgICAgICAgICAgIGkxOG4sXG4gICAgICAgICAgICAgICAgaWRzOiByZWxhdGlvbk1hcFtyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgc29ydCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldEVycm9yTG9hZGluZyh0KCdlcnJvcjp1bnNwZWNpZmljJykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgICAgICBpZiAodHlwZW9mIG9uU3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykgb25TdWNjZXNzKClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgcmVsYXRpb25UbyxcbiAgICAgIGhhc01hbnksXG4gICAgICBlcnJvckxvYWRpbmcsXG4gICAgICBzZWFyY2gsXG4gICAgICBsYXN0TG9hZGVkUGFnZSxcbiAgICAgIGNvbGxlY3Rpb25zLFxuICAgICAgbG9jYWxlLFxuICAgICAgZmlsdGVyT3B0aW9uc1Jlc3VsdCxcbiAgICAgIHNlcnZlclVSTCxcbiAgICAgIHNvcnRPcHRpb25zLFxuICAgICAgYXBpLFxuICAgICAgaTE4bixcbiAgICAgIGNvbmZpZyxcbiAgICAgIHQsXG4gICAgXSxcbiAgKVxuXG4gIGNvbnN0IHVwZGF0ZVNlYXJjaCA9IHVzZURlYm91bmNlZENhbGxiYWNrKChzZWFyY2hBcmc6IHN0cmluZywgdmFsdWVBcmc6IFZhbHVlIHwgVmFsdWVbXSkgPT4ge1xuICAgIGdldFJlc3VsdHMoeyBzZWFyY2g6IHNlYXJjaEFyZywgc29ydDogdHJ1ZSwgdmFsdWU6IHZhbHVlQXJnIH0pXG4gICAgc2V0U2VhcmNoKHNlYXJjaEFyZylcbiAgfSwgMzAwKVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0Q2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKHNlYXJjaEFyZzogc3RyaW5nLCB2YWx1ZUFyZzogVmFsdWUgfCBWYWx1ZVtdKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoICE9PSBzZWFyY2hBcmcpIHtcbiAgICAgICAgc2V0TGFzdExvYWRlZFBhZ2Uoe30pXG4gICAgICAgIHVwZGF0ZVNlYXJjaChzZWFyY2hBcmcsIHZhbHVlQXJnLCBzZWFyY2hBcmcgIT09ICcnKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlYXJjaCwgdXBkYXRlU2VhcmNoXSxcbiAgKVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEVuc3VyZSB3ZSBoYXZlIGFuIG9wdGlvbiBmb3IgZWFjaCB2YWx1ZVxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcmVsYXRpb25NYXAgPSBjcmVhdGVSZWxhdGlvbk1hcCh7XG4gICAgICBoYXNNYW55LFxuICAgICAgcmVsYXRpb25UbyxcbiAgICAgIHZhbHVlLFxuICAgIH0pXG5cbiAgICBPYmplY3QuZW50cmllcyhyZWxhdGlvbk1hcCkucmVkdWNlKGFzeW5jIChwcmlvclJlbGF0aW9uLCBbcmVsYXRpb24sIGlkc10pID0+IHtcbiAgICAgIGF3YWl0IHByaW9yUmVsYXRpb25cblxuICAgICAgY29uc3QgaWRzVG9Mb2FkID0gaWRzLmZpbHRlcigoaWQpID0+IHtcbiAgICAgICAgcmV0dXJuICFvcHRpb25zLmZpbmQoKG9wdGlvbkdyb3VwKSA9PlxuICAgICAgICAgIG9wdGlvbkdyb3VwPy5vcHRpb25zPy5maW5kKFxuICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSBpZCAmJiBvcHRpb24ucmVsYXRpb25UbyA9PT0gcmVsYXRpb24sXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSlcblxuICAgICAgaWYgKGlkc1RvTG9hZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0ge1xuICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgIGRyYWZ0OiB0cnVlLFxuICAgICAgICAgIGxpbWl0OiBpZHNUb0xvYWQubGVuZ3RoLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICB3aGVyZToge1xuICAgICAgICAgICAgaWQ6IHtcbiAgICAgICAgICAgICAgaW46IGlkc1RvTG9hZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZXJyb3JMb2FkaW5nKSB7XG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7cmVsYXRpb259PyR7cXMuc3RyaW5naWZ5KHF1ZXJ5KX1gLCB7XG4gICAgICAgICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBjb2xsZWN0aW9ucy5maW5kKChjb2xsKSA9PiBjb2xsLnNsdWcgPT09IHJlbGF0aW9uKVxuICAgICAgICAgIGxldCBkb2NzID0gW11cblxuICAgICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICAgICAgZG9jcyA9IGRhdGEuZG9jc1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRpc3BhdGNoT3B0aW9ucyh7XG4gICAgICAgICAgICB0eXBlOiAnQUREJyxcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAvLyBUT0RPOiBmaXggdGhpc1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZS1uZXh0LWxpbmVcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGRvY3MsXG4gICAgICAgICAgICBpMThuLFxuICAgICAgICAgICAgaWRzOiBpZHNUb0xvYWQsXG4gICAgICAgICAgICBzb3J0OiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcbiAgfSwgW1xuICAgIG9wdGlvbnMsXG4gICAgdmFsdWUsXG4gICAgaGFzTWFueSxcbiAgICBlcnJvckxvYWRpbmcsXG4gICAgY29sbGVjdGlvbnMsXG4gICAgaGFzTXVsdGlwbGVSZWxhdGlvbnMsXG4gICAgc2VydmVyVVJMLFxuICAgIGFwaSxcbiAgICBpMThuLFxuICAgIHJlbGF0aW9uVG8sXG4gICAgbG9jYWxlLFxuICAgIGNvbmZpZyxcbiAgXSlcblxuICAvLyBEZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIHN3aXRjaCB0byB3b3JkIGJvdW5kYXJ5IHNlYXJjaFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHJlbGF0aW9ucyA9IEFycmF5LmlzQXJyYXkocmVsYXRpb25UbykgPyByZWxhdGlvblRvIDogW3JlbGF0aW9uVG9dXG4gICAgY29uc3QgaXNJZE9ubHkgPSByZWxhdGlvbnMucmVkdWNlKChpZE9ubHksIHJlbGF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBjb2xsZWN0aW9uID0gY29sbGVjdGlvbnMuZmluZCgoY29sbCkgPT4gY29sbC5zbHVnID09PSByZWxhdGlvbilcbiAgICAgIGNvbnN0IGZpZWxkVG9TZWFyY2ggPSBjb2xsZWN0aW9uPy5hZG1pbj8udXNlQXNUaXRsZSB8fCAnaWQnXG4gICAgICByZXR1cm4gZmllbGRUb1NlYXJjaCA9PT0gJ2lkJyAmJiBpZE9ubHlcbiAgICB9LCB0cnVlKVxuICAgIHNldEVuYWJsZVdvcmRCb3VuZGFyeVNlYXJjaCghaXNJZE9ubHkpXG4gIH0sIFtyZWxhdGlvblRvLCBjb2xsZWN0aW9uc10pXG5cbiAgLy8gV2hlbiAoYHJlbGF0aW9uVG9gIHx8IGBmaWx0ZXJPcHRpb25zUmVzdWx0YCB8fCBgbG9jYWxlYCkgY2hhbmdlcywgcmVzZXQgY29tcG9uZW50XG4gIC8vIE5vdGUgLSBlZmZlY3Qgc2hvdWxkIG5vdCBydW4gb24gZmlyc3QgcnVuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZpcnN0UnVuLmN1cnJlbnQpIHtcbiAgICAgIGZpcnN0UnVuLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZGlzcGF0Y2hPcHRpb25zKHsgdHlwZTogJ0NMRUFSJyB9KVxuICAgIHNldExhc3RGdWxseUxvYWRlZFJlbGF0aW9uKC0xKVxuICAgIHNldExhc3RMb2FkZWRQYWdlKHt9KVxuICAgIHNldEhhc0xvYWRlZEZpcnN0UGFnZShmYWxzZSlcbiAgfSwgW3JlbGF0aW9uVG8sIGZpbHRlck9wdGlvbnNSZXN1bHQsIGxvY2FsZV0pXG5cbiAgY29uc3Qgb25TYXZlID0gdXNlQ2FsbGJhY2s8RG9jdW1lbnREcmF3ZXJQcm9wc1snb25TYXZlJ10+KFxuICAgIChhcmdzKSA9PiB7XG4gICAgICBkaXNwYXRjaE9wdGlvbnMoe1xuICAgICAgICB0eXBlOiAnVVBEQVRFJyxcbiAgICAgICAgY29sbGVjdGlvbjogYXJncy5jb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgICAvLyBUT0RPOiBmaXggdGhpc1xuICAgICAgICAvLyBAdHMtaWdub3JlLW5leHQtbGluZVxuICAgICAgICBjb25maWcsXG4gICAgICAgIGRvYzogYXJncy5kb2MsXG4gICAgICAgIGkxOG4sXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2kxOG4sIGNvbmZpZ10sXG4gIClcblxuICBjb25zdCBmaWx0ZXJPcHRpb24gPSB1c2VDYWxsYmFjaygoaXRlbTogT3B0aW9uLCBzZWFyY2hGaWx0ZXI6IHN0cmluZykgPT4ge1xuICAgIGlmICghc2VhcmNoRmlsdGVyKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICBjb25zdCByID0gd29yZEJvdW5kYXJpZXNSZWdleChzZWFyY2hGaWx0ZXIgfHwgJycpXG4gICAgLy8gYnJlYWtpbmcgdGhlIGxhYmVscyB0byBzZWFyY2ggaW50byBzbWFsbGVyIHBhcnRzIGluY3JlYXNlcyBwZXJmb3JtYW5jZVxuICAgIGNvbnN0IGJyZWFrQXBhcnRUaHJlc2hvbGQgPSAyNTBcbiAgICBsZXQgc3RyaW5nID0gaXRlbS5sYWJlbFxuICAgIC8vIHN0cmluZ3MgbGVzcyB0aGFuIGJyZWFrQXBhcnRUaHJlc2hvbGQgbGVuZ3RoIHdvbid0IGJlIGNodW5rZWRcbiAgICB3aGlsZSAoc3RyaW5nLmxlbmd0aCA+IGJyZWFrQXBhcnRUaHJlc2hvbGQpIHtcbiAgICAgIC8vIHNsaWNpbmcgYnkgdGhlIG5leHQgc3BhY2UgYWZ0ZXIgdGhlIGxlbmd0aCBvZiB0aGUgc2VhcmNoIGlucHV0IHByZXZlbnRzIHNsaWNpbmcgdGhlIHN0cmluZyB1cCBieSBwYXJ0aWFsIHdvcmRzXG4gICAgICBjb25zdCBpbmRleE9mU3BhY2UgPSBzdHJpbmcuaW5kZXhPZignICcsIHNlYXJjaEZpbHRlci5sZW5ndGgpXG4gICAgICBpZiAoci50ZXN0KHN0cmluZy5zbGljZSgwLCBpbmRleE9mU3BhY2UgPT09IC0xID8gc2VhcmNoRmlsdGVyLmxlbmd0aCA6IGluZGV4T2ZTcGFjZSArIDEpKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgc3RyaW5nID0gc3RyaW5nLnNsaWNlKGluZGV4T2ZTcGFjZSA9PT0gLTEgPyBzZWFyY2hGaWx0ZXIubGVuZ3RoIDogaW5kZXhPZlNwYWNlICsgMSlcbiAgICB9XG4gICAgcmV0dXJuIHIudGVzdChzdHJpbmcuc2xpY2UoLWJyZWFrQXBhcnRUaHJlc2hvbGQpKVxuICB9LCBbXSlcblxuICBjb25zdCB2YWx1ZVRvUmVuZGVyID0gZmluZE9wdGlvbnNCeVZhbHVlKHsgb3B0aW9ucywgdmFsdWUgfSlcblxuICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWVUb1JlbmRlcikgJiYgdmFsdWVUb1JlbmRlcj8udmFsdWUgPT09ICdudWxsJykgdmFsdWVUb1JlbmRlci52YWx1ZSA9IG51bGxcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17W1xuICAgICAgICBmaWVsZEJhc2VDbGFzcyxcbiAgICAgICAgYmFzZUNsYXNzLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIHNob3dFcnJvciAmJiAnZXJyb3InLFxuICAgICAgICBlcnJvckxvYWRpbmcgJiYgJ2Vycm9yLWxvYWRpbmcnLFxuICAgICAgICByZWFkT25seSAmJiBgJHtiYXNlQ2xhc3N9LS1yZWFkLW9ubHlgLFxuICAgICAgXVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIC5qb2luKCcgJyl9XG4gICAgICBpZD17YGZpZWxkLSR7cGF0aC5yZXBsYWNlKC9cXC4vZywgJ19fJyl9YH1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIC4uLnN0eWxlLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH19XG4gICAgPlxuICAgICAge0Vycm9yfVxuICAgICAge0xhYmVsfVxuICAgICAgPEdldEZpbHRlck9wdGlvbnNcbiAgICAgICAgey4uLntcbiAgICAgICAgICBmaWx0ZXJPcHRpb25zLFxuICAgICAgICAgIGZpbHRlck9wdGlvbnNSZXN1bHQsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByZWxhdGlvblRvLFxuICAgICAgICAgIHNldEZpbHRlck9wdGlvbnNSZXN1bHQsXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAgeyFlcnJvckxvYWRpbmcgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fd3JhcGB9PlxuICAgICAgICAgIDxSZWFjdFNlbGVjdFxuICAgICAgICAgICAgYmFja3NwYWNlUmVtb3Zlc1ZhbHVlPXshZHJhd2VySXNPcGVufVxuICAgICAgICAgICAgY29tcG9uZW50cz17e1xuICAgICAgICAgICAgICBNdWx0aVZhbHVlTGFiZWwsXG4gICAgICAgICAgICAgIFNpbmdsZVZhbHVlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGN1c3RvbVByb3BzPXt7XG4gICAgICAgICAgICAgIGRpc2FibGVLZXlEb3duOiBkcmF3ZXJJc09wZW4sXG4gICAgICAgICAgICAgIGRpc2FibGVNb3VzZURvd246IGRyYXdlcklzT3BlbixcbiAgICAgICAgICAgICAgb25TYXZlLFxuICAgICAgICAgICAgICBzZXREcmF3ZXJJc09wZW4sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRPbmx5IHx8IGZvcm1Qcm9jZXNzaW5nfVxuICAgICAgICAgICAgZmlsdGVyT3B0aW9uPXtlbmFibGVXb3JkQm91bmRhcnlTZWFyY2ggPyBmaWx0ZXJPcHRpb24gOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgIGlzTXVsdGk9e2hhc01hbnl9XG4gICAgICAgICAgICBpc1NvcnRhYmxlPXtpc1NvcnRhYmxlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e1xuICAgICAgICAgICAgICAhcmVhZE9ubHlcbiAgICAgICAgICAgICAgICA/IChzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShoYXNNYW55ID8gW10gOiBudWxsKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhhc01hbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZWN0ZWQubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNNdWx0aXBsZVJlbGF0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IG9wdGlvbi5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzTXVsdGlwbGVSZWxhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvblRvOiBzZWxlY3RlZC5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlbGVjdGVkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0ZWQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25JbnB1dENoYW5nZT17KG5ld1NlYXJjaCkgPT4gaGFuZGxlSW5wdXRDaGFuZ2UobmV3U2VhcmNoLCB2YWx1ZSl9XG4gICAgICAgICAgICBvbk1lbnVPcGVuPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaGFzTG9hZGVkRmlyc3RQYWdlKSB7XG4gICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgZ2V0UmVzdWx0cyh7XG4gICAgICAgICAgICAgICAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SGFzTG9hZGVkRmlyc3RQYWdlKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogaW5pdGlhbFZhbHVlLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbk1lbnVTY3JvbGxUb0JvdHRvbT17KCkgPT4ge1xuICAgICAgICAgICAgICBnZXRSZXN1bHRzKHtcbiAgICAgICAgICAgICAgICBsYXN0RnVsbHlMb2FkZWRSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGluaXRpYWxWYWx1ZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgICAgc2hvd0Vycm9yPXtzaG93RXJyb3J9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVUb1JlbmRlciA/PyBudWxsfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgeyFyZWFkT25seSAmJiBhbGxvd0NyZWF0ZSAmJiAoXG4gICAgICAgICAgICA8QWRkTmV3UmVsYXRpb25cbiAgICAgICAgICAgICAgey4uLntcbiAgICAgICAgICAgICAgICBkaXNwYXRjaE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgaGFzTWFueSxcbiAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25UbyxcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAge2Vycm9yTG9hZGluZyAmJiA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZXJyb3ItbG9hZGluZ2B9PntlcnJvckxvYWRpbmd9PC9kaXY+fVxuICAgICAge0Rlc2NyaXB0aW9ufVxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhDb25kaXRpb24oUmVsYXRpb25zaGlwKVxuIl0sIm5hbWVzIjpbIndvcmRCb3VuZGFyaWVzUmVnZXgiLCJxcyIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VSZWR1Y2VyIiwidXNlUmVmIiwidXNlU3RhdGUiLCJHZXRGaWx0ZXJPcHRpb25zIiwiUmVhY3RTZWxlY3QiLCJ1c2VEZWJvdW5jZWRDYWxsYmFjayIsInVzZUF1dGgiLCJ1c2VDb25maWciLCJ1c2VMb2NhbGUiLCJ1c2VUcmFuc2xhdGlvbiIsInVzZUZvcm1Qcm9jZXNzaW5nIiwidXNlRmllbGQiLCJ3aXRoQ29uZGl0aW9uIiwiZmllbGRCYXNlQ2xhc3MiLCJBZGROZXdSZWxhdGlvbiIsImNyZWF0ZVJlbGF0aW9uTWFwIiwiZmluZE9wdGlvbnNCeVZhbHVlIiwib3B0aW9uc1JlZHVjZXIiLCJNdWx0aVZhbHVlTGFiZWwiLCJTaW5nbGVWYWx1ZSIsIm1heFJlc3VsdHNQZXJSZXF1ZXN0IiwiYmFzZUNsYXNzIiwiUmVsYXRpb25zaGlwIiwicHJvcHMiLCJuYW1lIiwiRGVzY3JpcHRpb24iLCJFcnJvciIsIkxhYmVsIiwiY2xhc3NOYW1lIiwicGF0aCIsInBhdGhGcm9tUHJvcHMiLCJyZWFkT25seSIsInJlcXVpcmVkIiwic3R5bGUiLCJ2YWxpZGF0ZSIsIndpZHRoIiwiY29uZmlnIiwiY29sbGVjdGlvbnMiLCJyb3V0ZXMiLCJhcGkiLCJzZXJ2ZXJVUkwiLCJyZWxhdGlvblRvIiwidW5kZWZpbmVkIiwiaGFzTWFueSIsImZpbHRlck9wdGlvbnMiLCJzb3J0T3B0aW9ucyIsImlzU29ydGFibGUiLCJhbGxvd0NyZWF0ZSIsImkxOG4iLCJ0IiwicGVybWlzc2lvbnMiLCJjb2RlIiwibG9jYWxlIiwiZm9ybVByb2Nlc3NpbmciLCJoYXNNdWx0aXBsZVJlbGF0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsIm9wdGlvbnMiLCJkaXNwYXRjaE9wdGlvbnMiLCJsYXN0RnVsbHlMb2FkZWRSZWxhdGlvbiIsInNldExhc3RGdWxseUxvYWRlZFJlbGF0aW9uIiwibGFzdExvYWRlZFBhZ2UiLCJzZXRMYXN0TG9hZGVkUGFnZSIsImVycm9yTG9hZGluZyIsInNldEVycm9yTG9hZGluZyIsImZpbHRlck9wdGlvbnNSZXN1bHQiLCJzZXRGaWx0ZXJPcHRpb25zUmVzdWx0Iiwic2VhcmNoIiwic2V0U2VhcmNoIiwiaXNMb2FkaW5nIiwic2V0SXNMb2FkaW5nIiwiaGFzTG9hZGVkRmlyc3RQYWdlIiwic2V0SGFzTG9hZGVkRmlyc3RQYWdlIiwiZW5hYmxlV29yZEJvdW5kYXJ5U2VhcmNoIiwic2V0RW5hYmxlV29yZEJvdW5kYXJ5U2VhcmNoIiwiZmlyc3RSdW4iLCJtZW1vaXplZFZhbGlkYXRlIiwidmFsdWUiLCJ2YWxpZGF0aW9uT3B0aW9ucyIsImluaXRpYWxWYWx1ZSIsInNldFZhbHVlIiwic2hvd0Vycm9yIiwiZHJhd2VySXNPcGVuIiwic2V0RHJhd2VySXNPcGVuIiwiZ2V0UmVzdWx0cyIsImxhc3RGdWxseUxvYWRlZFJlbGF0aW9uQXJnIiwib25TdWNjZXNzIiwic2VhcmNoQXJnIiwic29ydCIsInZhbHVlQXJnIiwibGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25Ub1VzZSIsInJlbGF0aW9ucyIsInJlbGF0aW9uc1RvRmV0Y2giLCJzbGljZSIsInJlc3VsdHNGZXRjaGVkIiwicmVsYXRpb25NYXAiLCJyZWR1Y2UiLCJwcmlvclJlbGF0aW9uIiwicmVsYXRpb24iLCJyZWxhdGlvbkZpbHRlck9wdGlvbiIsImxhc3RMb2FkZWRQYWdlVG9Vc2UiLCJpbmRleE9mIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjb2xsZWN0aW9uIiwiZmluZCIsImNvbGwiLCJzbHVnIiwiZmllbGRUb1NlYXJjaCIsImRlZmF1bHRTb3J0IiwiYWRtaW4iLCJ1c2VBc1RpdGxlIiwicXVlcnkiLCJkZXB0aCIsImRyYWZ0IiwibGltaXQiLCJwYWdlIiwid2hlcmUiLCJhbmQiLCJpZCIsIm5vdF9pbiIsInB1c2giLCJsaWtlIiwicmVzcG9uc2UiLCJmZXRjaCIsInN0cmluZ2lmeSIsImNyZWRlbnRpYWxzIiwiaGVhZGVycyIsImxhbmd1YWdlIiwib2siLCJkYXRhIiwianNvbiIsInByZXZTdGF0ZSIsIm5leHRQYWdlIiwiZG9jcyIsImxlbmd0aCIsInR5cGUiLCJzdGF0dXMiLCJpZHMiLCJ1cGRhdGVTZWFyY2giLCJoYW5kbGVJbnB1dENoYW5nZSIsIk9iamVjdCIsImVudHJpZXMiLCJpZHNUb0xvYWQiLCJmaWx0ZXIiLCJvcHRpb25Hcm91cCIsIm9wdGlvbiIsImluIiwiaXNJZE9ubHkiLCJpZE9ubHkiLCJjdXJyZW50Iiwib25TYXZlIiwiYXJncyIsImNvbGxlY3Rpb25Db25maWciLCJkb2MiLCJmaWx0ZXJPcHRpb24iLCJpdGVtIiwic2VhcmNoRmlsdGVyIiwiciIsImJyZWFrQXBhcnRUaHJlc2hvbGQiLCJzdHJpbmciLCJsYWJlbCIsImluZGV4T2ZTcGFjZSIsInRlc3QiLCJ2YWx1ZVRvUmVuZGVyIiwiZGl2IiwiQm9vbGVhbiIsImpvaW4iLCJyZXBsYWNlIiwiYmFja3NwYWNlUmVtb3Zlc1ZhbHVlIiwiY29tcG9uZW50cyIsImN1c3RvbVByb3BzIiwiZGlzYWJsZUtleURvd24iLCJkaXNhYmxlTW91c2VEb3duIiwiZGlzYWJsZWQiLCJpc011bHRpIiwib25DaGFuZ2UiLCJzZWxlY3RlZCIsIm1hcCIsIm9uSW5wdXRDaGFuZ2UiLCJuZXdTZWFyY2giLCJvbk1lbnVPcGVuIiwib25NZW51U2Nyb2xsVG9Cb3R0b20iXSwibWFwcGluZ3MiOiJBQUFBO0FBSUEsU0FBU0EsbUJBQW1CLFFBQVEsb0JBQW1CO0FBQ3ZELE9BQU9DLFFBQVEsS0FBSTtBQUNuQixPQUFPQyxTQUFTQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsVUFBVSxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxRQUFP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
|