{"version":3,"file":"static/js/main.1961405d.js","mappings":"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UACL,IAAK,UACL,IAAK,UACLn8C,KAAM,UACN88C,KAAM,UACNC,KAAM,UACNC,KAAM,0DCVR,QAJa,CACXlV,MAAO,OACP7+B,MAAO,uDCcT,QAhBY,CACV,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLjJ,KAAM,UACN88C,KAAM,UACNC,KAAM,UACNC,KAAM,0DCER,QAhBW,CACT,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLh9C,KAAM,UACN88C,KAAM,UACNC,KAAM,UACNC,KAAM,0DCER,QAhBa,CACX,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLh9C,KAAM,UACN88C,KAAM,UACNC,KAAM,UACNC,KAAM,0DCER,QAhBa,CACX,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLh9C,KAAM,UACN88C,KAAM,UACNC,KAAM,UACNC,KAAM,0DCER,QAhBW,CACT,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLh9C,KAAM,UACN88C,KAAM,UACNC,KAAM,UACNC,KAAM,0DCER,QAhBU,CACR,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLh9C,KAAM,UACN88C,KAAM,UACNC,KAAM,UACNC,KAAM,qtICER,QAhBa,CACX,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLh9C,KAAM,UACN88C,KAAM,UACNC,KAAM,UACNC,KAAM,WCER,QAhBiB,CACf,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLh9C,KAAM,UACN88C,KAAM,UACNC,KAAM,UACNC,KAAM,qCCER,QAhBgB,CACd,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLh9C,KAAM,UACN88C,KAAM,UACNC,KAAM,UACNC,KAAM,WCER,QAhBW,CACT,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLh9C,KAAM,UACN88C,KAAM,UACNC,KAAM,UACNC,KAAM,WCER,QAhBW,CACT,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLh9C,KAAM,UACN88C,KAAM,UACNC,KAAM,UACNC,KAAM,0BCER,QAhBiB,CACf,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLh9C,KAAM,UACN88C,KAAM,UACNC,KAAM,UACNC,KAAM,WCER,QAhBW,CACT,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLh9C,KAAM,UACN88C,KAAM,UACNC,KAAM,UACNC,KAAM,WCER,QAhBa,CACX,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLh9C,KAAM,UACN88C,KAAM,UACNC,KAAM,UACNC,KAAM,WCER,QAhBY,CACV,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IA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","sources":["../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/every.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/find-index.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/some.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/sort.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/splice.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/trim.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/entries.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js","../node_modules/@babel/runtime-corejs3/core-js-stable/object/values.js","../node_modules/@babel/runtime-corejs3/core-js-stable/parse-int.js","../node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js","../node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js","../node_modules/@babel/runtime-corejs3/core-js/array/from.js","../node_modules/@babel/runtime-corejs3/core-js/array/is-array.js","../node_modules/@babel/runtime-corejs3/core-js/get-iterator.js","../node_modules/@babel/runtime-corejs3/core-js/instance/index-of.js","../node_modules/@babel/runtime-corejs3/core-js/instance/slice.js","../node_modules/@babel/runtime-corejs3/core-js/is-iterable.js","../node_modules/@babel/runtime-corejs3/core-js/object/assign.js","../node_modules/@babel/runtime-corejs3/core-js/object/create.js","../node_modules/@babel/runtime-corejs3/core-js/object/define-property.js","../node_modules/@babel/runtime-corejs3/core-js/object/get-own-property-symbols.js","../node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js","../node_modules/@babel/runtime-corejs3/core-js/object/keys.js","../node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js","../node_modules/@babel/runtime-corejs3/core-js/symbol.js","../node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js","../node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js","../node_modules/@babel/runtime-corejs3/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js","../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js","../node_modules/@babel/runtime-corejs3/helpers/createClass.js","../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js","../node_modules/@babel/runtime-corejs3/helpers/extends.js","../node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js","../node_modules/@babel/runtime-corejs3/helpers/inherits.js","../node_modules/@babel/runtime-corejs3/helpers/iterableToArray.js","../node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js","../node_modules/@babel/runtime-corejs3/helpers/nonIterableSpread.js","../node_modules/@babel/runtime-corejs3/helpers/objectWithoutProperties.js","../node_modules/@babel/runtime-corejs3/helpers/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js","../node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js","../node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js","../node_modules/@babel/runtime-corejs3/helpers/typeof.js","../node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js","../node_modules/@material-ui/core/esm/AppBar/AppBar.js","../node_modules/@material-ui/core/esm/Backdrop/Backdrop.js","../node_modules/@material-ui/system/esm/css.js","../node_modules/@material-ui/system/esm/compose.js","../node_modules/@material-ui/system/esm/style.js","../node_modules/@material-ui/system/esm/borders.js","../node_modules/@material-ui/system/esm/display.js","../node_modules/@material-ui/system/esm/flexbox.js","../node_modules/@material-ui/system/esm/grid.js","../node_modules/@material-ui/system/esm/positions.js","../node_modules/@material-ui/system/esm/palette.js","../node_modules/@material-ui/system/esm/shadows.js","../node_modules/@material-ui/system/esm/sizing.js","../node_modules/@material-ui/system/esm/typography.js","../node_modules/@material-ui/core/esm/Box/Box.js","../node_modules/@material-ui/core/node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/@material-ui/core/node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@material-ui/core/esm/ButtonBase/Ripple.js","../node_modules/@material-ui/core/esm/ButtonBase/TouchRipple.js","../node_modules/@material-ui/core/esm/ButtonBase/ButtonBase.js","../node_modules/@material-ui/core/esm/Button/Button.js","../node_modules/@material-ui/core/esm/internal/svg-icons/CheckBoxOutlineBlank.js","../node_modules/@material-ui/core/esm/internal/svg-icons/CheckBox.js","../node_modules/@material-ui/core/esm/internal/svg-icons/IndeterminateCheckBox.js","../node_modules/@material-ui/core/esm/Checkbox/Checkbox.js","../node_modules/@material-ui/core/esm/internal/svg-icons/Cancel.js","../node_modules/@material-ui/core/esm/Chip/Chip.js","../node_modules/@material-ui/core/esm/ClickAwayListener/ClickAwayListener.js","../node_modules/@material-ui/core/esm/Container/Container.js","../node_modules/@material-ui/core/esm/CssBaseline/CssBaseline.js","../node_modules/@material-ui/core/esm/DialogActions/DialogActions.js","../node_modules/@material-ui/core/esm/DialogContentText/DialogContentText.js","../node_modules/@material-ui/core/esm/DialogContent/DialogContent.js","../node_modules/@material-ui/core/esm/DialogTitle/DialogTitle.js","../node_modules/@material-ui/core/esm/Dialog/Dialog.js","../node_modules/@material-ui/core/esm/Fade/Fade.js","../node_modules/@material-ui/core/esm/FilledInput/FilledInput.js","../node_modules/@material-ui/core/esm/FormControlLabel/FormControlLabel.js","../node_modules/@material-ui/core/esm/FormControl/FormControl.js","../node_modules/@material-ui/core/esm/FormControl/FormControlContext.js","../node_modules/@material-ui/core/esm/FormControl/formControlState.js","../node_modules/@material-ui/core/esm/FormControl/useFormControl.js","../node_modules/@material-ui/core/esm/FormGroup/FormGroup.js","../node_modules/@material-ui/core/esm/FormHelperText/FormHelperText.js","../node_modules/@material-ui/core/esm/FormLabel/FormLabel.js","../node_modules/@material-ui/core/esm/Grid/Grid.js","../node_modules/@material-ui/core/esm/Grow/Grow.js","../node_modules/@material-ui/core/esm/IconButton/IconButton.js","../node_modules/@material-ui/core/esm/InputAdornment/InputAdornment.js","../node_modules/@material-ui/core/esm/InputBase/InputBase.js","../node_modules/@material-ui/core/esm/InputBase/utils.js","../node_modules/@material-ui/core/esm/InputLabel/InputLabel.js","../node_modules/@material-ui/core/esm/Input/Input.js","../node_modules/@material-ui/core/esm/LinearProgress/LinearProgress.js","../node_modules/@material-ui/core/esm/Link/Link.js","../node_modules/@material-ui/core/esm/ListItemText/ListItemText.js","../node_modules/@material-ui/core/esm/ListItem/ListItem.js","../node_modules/@material-ui/core/esm/ListSubheader/ListSubheader.js","../node_modules/@material-ui/core/esm/List/List.js","../node_modules/@material-ui/core/esm/List/ListContext.js","../node_modules/@material-ui/core/esm/MenuItem/MenuItem.js","../node_modules/@material-ui/core/esm/MenuList/MenuList.js","../node_modules/@material-ui/core/esm/Menu/Menu.js","../node_modules/@material-ui/core/esm/Modal/SimpleBackdrop.js","../node_modules/@material-ui/core/esm/Modal/Modal.js","../node_modules/@material-ui/core/esm/Modal/ModalManager.js","../node_modules/@material-ui/core/esm/NativeSelect/NativeSelect.js","../node_modules/@material-ui/core/esm/NativeSelect/NativeSelectInput.js","../node_modules/@material-ui/core/esm/OutlinedInput/NotchedOutline.js","../node_modules/@material-ui/core/esm/OutlinedInput/OutlinedInput.js","../node_modules/@material-ui/core/esm/Paper/Paper.js","../node_modules/@material-ui/core/esm/Popover/Popover.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/isBrowser.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/debounce.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/isFunction.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getStyleComputedProperty.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getParentNode.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getScrollParent.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getReferenceNode.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/isIE.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getOffsetParent.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getRoot.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/findCommonOffsetParent.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/isOffsetContainer.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getScroll.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getBordersSize.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getWindowSizes.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getClientRect.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getBoundingClientRect.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getOffsetRectRelativeToArbitraryNode.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/includeScroll.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/isFixed.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getFixedPositionOffsetParent.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getBoundaries.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/computeAutoPlacement.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getReferenceOffsets.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getOuterSizes.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getOppositePlacement.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getPopperOffsets.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/find.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/runModifiers.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/findIndex.js","../node_modules/@material-ui/core/node_modules/popper.js/src/methods/update.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/isModifierEnabled.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getSupportedPropertyName.js","../node_modules/@material-ui/core/node_modules/popper.js/src/methods/destroy.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getWindow.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/setupEventListeners.js","../node_modules/@material-ui/core/node_modules/popper.js/src/methods/enableEventListeners.js","../node_modules/@material-ui/core/node_modules/popper.js/src/methods/disableEventListeners.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/removeEventListeners.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/isNumeric.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/setStyles.js","../node_modules/@material-ui/core/node_modules/popper.js/src/modifiers/computeStyle.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/isModifierRequired.js","../node_modules/@material-ui/core/node_modules/popper.js/src/methods/placements.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/clockwise.js","../node_modules/@material-ui/core/node_modules/popper.js/src/modifiers/flip.js","../node_modules/@material-ui/core/node_modules/popper.js/src/modifiers/offset.js","../node_modules/@material-ui/core/node_modules/popper.js/src/modifiers/index.js","../node_modules/@material-ui/core/node_modules/popper.js/src/modifiers/shift.js","../node_modules/@material-ui/core/node_modules/popper.js/src/modifiers/preventOverflow.js","../node_modules/@material-ui/core/node_modules/popper.js/src/modifiers/keepTogether.js","../node_modules/@material-ui/core/node_modules/popper.js/src/modifiers/arrow.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getOppositeVariation.js","../node_modules/@material-ui/core/node_modules/popper.js/src/modifiers/inner.js","../node_modules/@material-ui/core/node_modules/popper.js/src/modifiers/hide.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/getRoundedOffsets.js","../node_modules/@material-ui/core/node_modules/popper.js/src/modifiers/applyStyle.js","../node_modules/@material-ui/core/node_modules/popper.js/src/utils/setAttributes.js","../node_modules/@material-ui/core/node_modules/popper.js/src/methods/defaults.js","../node_modules/@material-ui/core/node_modules/popper.js/src/index.js","../node_modules/@material-ui/core/esm/Popper/Popper.js","../node_modules/@material-ui/core/esm/Portal/Portal.js","../node_modules/@material-ui/core/esm/RadioGroup/RadioGroup.js","../node_modules/@material-ui/core/esm/RadioGroup/RadioGroupContext.js","../node_modules/@material-ui/core/esm/Select/SelectInput.js","../node_modules/@material-ui/core/esm/Select/Select.js","../node_modules/@material-ui/core/esm/SnackbarContent/SnackbarContent.js","../node_modules/@material-ui/core/esm/Snackbar/Snackbar.js","../node_modules/@material-ui/core/esm/SvgIcon/SvgIcon.js","../node_modules/@material-ui/core/esm/Switch/Switch.js","../node_modules/@material-ui/core/esm/TabScrollButton/TabScrollButton.js","../node_modules/@material-ui/core/esm/Tab/Tab.js","../node_modules/@material-ui/core/esm/TableBody/TableBody.js","../node_modules/@material-ui/core/esm/TableCell/TableCell.js","../node_modules/@material-ui/core/esm/TableContainer/TableContainer.js","../node_modules/@material-ui/core/esm/TableFooter/TableFooter.js","../node_modules/@material-ui/core/esm/TableHead/TableHead.js","../node_modules/@material-ui/core/esm/TablePagination/TablePaginationActions.js","../node_modules/@material-ui/core/esm/TablePagination/TablePagination.js","../node_modules/@material-ui/core/esm/TableRow/TableRow.js","../node_modules/@material-ui/core/esm/internal/svg-icons/ArrowDownward.js","../node_modules/@material-ui/core/esm/TableSortLabel/TableSortLabel.js","../node_modules/@material-ui/core/esm/Table/Table.js","../node_modules/@material-ui/core/esm/Table/TableContext.js","../node_modules/@material-ui/core/esm/Table/Tablelvl2Context.js","../node_modules/@material-ui/core/esm/utils/scrollLeft.js","../node_modules/@material-ui/core/esm/internal/animate.js","../node_modules/@material-ui/core/esm/Tabs/ScrollbarSize.js","../node_modules/@material-ui/core/esm/Tabs/TabIndicator.js","../node_modules/@material-ui/core/esm/Tabs/Tabs.js","../node_modules/@material-ui/core/esm/TextField/TextField.js","../node_modules/@material-ui/core/esm/TextareaAutosize/TextareaAutosize.js","../node_modules/@material-ui/core/esm/Toolbar/Toolbar.js","../node_modules/@material-ui/core/esm/Tooltip/Tooltip.js","../node_modules/@material-ui/core/esm/Typography/Typography.js","../node_modules/@material-ui/core/esm/Unstable_TrapFocus/Unstable_TrapFocus.js","../node_modules/@material-ui/core/esm/colors/blue.js","../node_modules/@material-ui/core/esm/colors/common.js","../node_modules/@material-ui/core/esm/colors/green.js","../node_modules/@material-ui/core/esm/colors/grey.js","../node_modules/@material-ui/core/esm/colors/indigo.js","../node_modules/@material-ui/core/esm/colors/orange.js","../node_modules/@material-ui/core/esm/colors/pink.js","../node_modules/@material-ui/core/esm/colors/red.js","../node_modules/@material-ui/core/esm/colors/purple.js","../node_modules/@material-ui/core/esm/colors/deepPurple.js","../node_modules/@material-ui/core/esm/colors/lightBlue.js","../node_modules/@material-ui/core/esm/colors/cyan.js","../node_modules/@material-ui/core/esm/colors/teal.js","../node_modules/@material-ui/core/esm/colors/lightGreen.js","../node_modules/@material-ui/core/esm/colors/lime.js","../node_modules/@material-ui/core/esm/colors/yellow.js","../node_modules/@material-ui/core/esm/colors/amber.js","../node_modules/@material-ui/core/esm/colors/deepOrange.js","../node_modules/@material-ui/core/esm/colors/brown.js","../node_modules/@material-ui/core/esm/colors/blueGrey.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@material-ui/core/esm/Collapse/Collapse.js","../node_modules/@material-ui/core/esm/Accordion/AccordionContext.js","../node_modules/@material-ui/core/esm/Accordion/Accordion.js","../node_modules/@material-ui/core/esm/AccordionActions/AccordionActions.js","../node_modules/@material-ui/core/esm/AccordionDetails/AccordionDetails.js","../node_modules/@material-ui/core/esm/AccordionSummary/AccordionSummary.js","../node_modules/@material-ui/core/esm/internal/svg-icons/Person.js","../node_modules/@material-ui/core/esm/Avatar/Avatar.js","../node_modules/@material-ui/core/esm/Badge/Badge.js","../node_modules/@material-ui/core/esm/BottomNavigation/BottomNavigation.js","../node_modules/@material-ui/core/esm/BottomNavigationAction/BottomNavigationAction.js","../node_modules/@material-ui/core/esm/internal/svg-icons/MoreHoriz.js","../node_modules/@material-ui/core/esm/Breadcrumbs/BreadcrumbCollapsed.js","../node_modules/@material-ui/core/esm/Breadcrumbs/Breadcrumbs.js","../node_modules/@material-ui/core/esm/ButtonGroup/ButtonGroup.js","../node_modules/@material-ui/core/esm/Card/Card.js","../node_modules/@material-ui/core/esm/CardActionArea/CardActionArea.js","../node_modules/@material-ui/core/esm/CardActions/CardActions.js","../node_modules/@material-ui/core/esm/CardContent/CardContent.js","../node_modules/@material-ui/core/esm/CardHeader/CardHeader.js","../node_modules/@material-ui/core/esm/CardMedia/CardMedia.js","../node_modules/@material-ui/core/esm/CircularProgress/CircularProgress.js","../node_modules/@material-ui/core/esm/Divider/Divider.js","../node_modules/@material-ui/core/esm/Slide/Slide.js","../node_modules/@material-ui/core/esm/Drawer/Drawer.js","../node_modules/@material-ui/core/esm/ExpansionPanel/ExpansionPanelContext.js","../node_modules/@material-ui/core/esm/ExpansionPanel/ExpansionPanel.js","../node_modules/@material-ui/core/esm/ExpansionPanelActions/ExpansionPanelActions.js","../node_modules/@material-ui/core/esm/ExpansionPanelDetails/ExpansionPanelDetails.js","../node_modules/@material-ui/core/esm/ExpansionPanelSummary/ExpansionPanelSummary.js","../node_modules/@material-ui/core/esm/Fab/Fab.js","../node_modules/@material-ui/core/esm/GridList/GridList.js","../node_modules/@material-ui/core/esm/GridListTile/GridListTile.js","../node_modules/@material-ui/core/esm/GridListTileBar/GridListTileBar.js","../node_modules/@material-ui/core/esm/useMediaQuery/useMediaQuery.js","../node_modules/@material-ui/core/esm/withWidth/withWidth.js","../node_modules/@material-ui/core/esm/Hidden/HiddenJs.js","../node_modules/@material-ui/core/esm/Hidden/HiddenCss.js","../node_modules/@material-ui/core/esm/Hidden/Hidden.js","../node_modules/@material-ui/core/esm/Icon/Icon.js","../node_modules/@material-ui/core/esm/ListItemAvatar/ListItemAvatar.js","../node_modules/@material-ui/core/esm/ListItemIcon/ListItemIcon.js","../node_modules/@material-ui/core/esm/ListItemSecondaryAction/ListItemSecondaryAction.js","../node_modules/@material-ui/core/esm/MobileStepper/MobileStepper.js","../node_modules/@material-ui/core/esm/NoSsr/NoSsr.js","../node_modules/@material-ui/core/esm/internal/svg-icons/RadioButtonUnchecked.js","../node_modules/@material-ui/core/esm/internal/svg-icons/RadioButtonChecked.js","../node_modules/@material-ui/core/esm/Radio/RadioButtonIcon.js","../node_modules/@material-ui/core/esm/RadioGroup/useRadioGroup.js","../node_modules/@material-ui/core/esm/Radio/Radio.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@material-ui/core/esm/RootRef/RootRef.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@material-ui/core/esm/Slider/ValueLabel.js","../node_modules/@material-ui/core/esm/Slider/Slider.js","../node_modules/@material-ui/core/esm/Step/Step.js","../node_modules/@material-ui/core/esm/internal/svg-icons/CheckCircle.js","../node_modules/@material-ui/core/esm/internal/svg-icons/Warning.js","../node_modules/@material-ui/core/esm/StepIcon/StepIcon.js","../node_modules/@material-ui/core/esm/StepLabel/StepLabel.js","../node_modules/@material-ui/core/esm/StepButton/StepButton.js","../node_modules/@material-ui/core/esm/StepConnector/StepConnector.js","../node_modules/@material-ui/core/esm/StepContent/StepContent.js","../node_modules/@material-ui/core/esm/Stepper/Stepper.js","../node_modules/@material-ui/core/esm/SwipeableDrawer/SwipeArea.js","../node_modules/@material-ui/core/esm/SwipeableDrawer/SwipeableDrawer.js","../node_modules/@material-ui/core/esm/useScrollTrigger/useScrollTrigger.js","../node_modules/@material-ui/core/esm/withMobileDialog/withMobileDialog.js","../node_modules/@material-ui/core/esm/Zoom/Zoom.js","../node_modules/@material-ui/core/esm/internal/SwitchBase.js","../node_modules/@material-ui/core/esm/internal/svg-icons/ArrowDropDown.js","../node_modules/@material-ui/core/esm/internal/svg-icons/KeyboardArrowLeft.js","../node_modules/@material-ui/core/esm/internal/svg-icons/KeyboardArrowRight.js","../node_modules/@material-ui/core/esm/styles/colorManipulator.js","../node_modules/@material-ui/core/esm/styles/createBreakpoints.js","../node_modules/@material-ui/core/esm/styles/createMixins.js","../node_modules/@material-ui/core/esm/styles/createPalette.js","../node_modules/@material-ui/core/esm/styles/createTypography.js","../node_modules/@material-ui/core/esm/styles/shadows.js","../node_modules/@material-ui/core/esm/styles/shape.js","../node_modules/@material-ui/core/esm/styles/createMuiTheme.js","../node_modules/@material-ui/core/esm/styles/createSpacing.js","../node_modules/@material-ui/core/esm/styles/defaultTheme.js","../node_modules/@material-ui/core/esm/styles/createMuiStrictModeTheme.js","../node_modules/@material-ui/core/esm/styles/createStyles.js","../node_modules/@material-ui/core/esm/styles/cssUtils.js","../node_modules/@material-ui/core/esm/styles/responsiveFontSizes.js","../node_modules/@material-ui/styles/esm/withTheme/withTheme.js","../node_modules/@material-ui/core/esm/styles/withTheme.js","../node_modules/@material-ui/styles/esm/ServerStyleSheets/ServerStyleSheets.js","../node_modules/@material-ui/styles/esm/ThemeProvider/ThemeProvider.js","../node_modules/@material-ui/core/esm/styles/makeStyles.js","../node_modules/@material-ui/styles/esm/styled/styled.js","../node_modules/@material-ui/core/esm/styles/styled.js","../node_modules/@material-ui/core/esm/styles/transitions.js","../node_modules/@material-ui/core/esm/styles/useTheme.js","../node_modules/@material-ui/styles/esm/withStyles/withStyles.js","../node_modules/@material-ui/core/esm/styles/withStyles.js","../node_modules/@material-ui/core/esm/styles/zIndex.js","../node_modules/@material-ui/core/esm/transitions/utils.js","../node_modules/@material-ui/core/esm/utils/capitalize.js","../node_modules/@material-ui/core/esm/utils/createChainedFunction.js","../node_modules/@material-ui/core/esm/utils/createSvgIcon.js","../node_modules/@material-ui/core/esm/utils/debounce.js","../node_modules/@material-ui/core/esm/utils/getScrollbarSize.js","../node_modules/@material-ui/core/esm/utils/deprecatedPropType.js","../node_modules/@material-ui/core/esm/utils/requirePropFactory.js","../node_modules/@material-ui/core/esm/utils/unsupportedProp.js","../node_modules/@material-ui/core/esm/utils/isMuiElement.js","../node_modules/@material-ui/core/esm/utils/ownerDocument.js","../node_modules/@material-ui/core/esm/utils/ownerWindow.js","../node_modules/@material-ui/core/esm/utils/setRef.js","../node_modules/@material-ui/core/esm/utils/unstable_useId.js","../node_modules/@material-ui/core/esm/utils/useControlled.js","../node_modules/@material-ui/core/esm/utils/useEventCallback.js","../node_modules/@material-ui/core/esm/utils/useForkRef.js","../node_modules/@material-ui/core/esm/utils/useIsFocusVisible.js","../node_modules/@material-ui/core/node_modules/react-transition-group/esm/config.js","../node_modules/@material-ui/core/node_modules/react-transition-group/esm/Transition.js","../node_modules/@material-ui/core/node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/@material-ui/icons/Clear.js","../node_modules/@material-ui/icons/Close.js","../node_modules/@material-ui/icons/CloudDownload.js","../node_modules/@material-ui/icons/Delete.js","../node_modules/@material-ui/icons/FileCopy.js","../node_modules/@material-ui/icons/FilterList.js","../node_modules/@material-ui/icons/Help.js","../node_modules/@material-ui/icons/KeyboardArrowRight.js","../node_modules/@material-ui/icons/Print.js","../node_modules/@material-ui/icons/Remove.js","../node_modules/@material-ui/icons/Search.js","../node_modules/@material-ui/icons/ViewColumn.js","../node_modules/@material-ui/icons/utils/createSvgIcon.js","../node_modules/@material-ui/styles/esm/StylesProvider/StylesProvider.js","../node_modules/@material-ui/styles/esm/ThemeProvider/nested.js","../node_modules/@material-ui/styles/esm/createGenerateClassName/createGenerateClassName.js","../node_modules/@material-ui/styles/esm/getThemeProps/getThemeProps.js","../node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js","../node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js","../node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js","../node_modules/hyphenate-style-name/index.js","../node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js","../node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js","../node_modules/css-vendor/dist/css-vendor.esm.js","../node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js","../node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js","../node_modules/@material-ui/styles/esm/jssPreset/jssPreset.js","../node_modules/@material-ui/styles/esm/makeStyles/multiKeyStore.js","../node_modules/@material-ui/styles/esm/makeStyles/indexCounter.js","../node_modules/@material-ui/styles/esm/getStylesCreator/noopTheme.js","../node_modules/@material-ui/styles/esm/makeStyles/makeStyles.js","../node_modules/@material-ui/styles/esm/getStylesCreator/getStylesCreator.js","../node_modules/@material-ui/styles/esm/mergeClasses/mergeClasses.js","../node_modules/@material-ui/styles/esm/useTheme/ThemeContext.js","../node_modules/@material-ui/styles/esm/useTheme/useTheme.js","../node_modules/@material-ui/system/esm/breakpoints.js","../node_modules/@material-ui/system/esm/merge.js","../node_modules/@material-ui/system/esm/spacing.js","../node_modules/@material-ui/system/esm/memoize.js","../node_modules/@material-ui/utils/esm/deepmerge.js","../node_modules/@material-ui/utils/esm/formatMuiErrorMessage.js","../node_modules/@react-dnd/invariant/src/index.ts","../node_modules/@react-dnd/shallowequal/src/index.ts","../node_modules/clsx/dist/clsx.m.js","../node_modules/compare-versions/index.js","../node_modules/core-js-pure/es/array/from.js","../node_modules/core-js-pure/es/array/is-array.js","../node_modules/core-js-pure/es/array/virtual/concat.js","../node_modules/core-js-pure/es/array/virtual/every.js","../node_modules/core-js-pure/es/array/virtual/filter.js","../node_modules/core-js-pure/es/array/virtual/find-index.js","../node_modules/core-js-pure/es/array/virtual/for-each.js","../node_modules/core-js-pure/es/array/virtual/index-of.js","../node_modules/core-js-pure/es/array/virtual/map.js","../node_modules/core-js-pure/es/array/virtual/reduce.js","../node_modules/core-js-pure/es/array/virtual/slice.js","../node_modules/core-js-pure/es/array/virtual/some.js","../node_modules/core-js-pure/es/array/virtual/sort.js","../node_modules/core-js-pure/es/array/virtual/splice.js","../node_modules/core-js-pure/es/function/virtual/bind.js","../node_modules/core-js-pure/es/instance/bind.js","../node_modules/core-js-pure/es/instance/concat.js","../node_modules/core-js-pure/es/instance/every.js","../node_modules/core-js-pure/es/instance/filter.js","../node_modules/core-js-pure/es/instance/find-index.js","../node_modules/core-js-pure/es/instance/index-of.js","../node_modules/core-js-pure/es/instance/map.js","../node_modules/core-js-pure/es/instance/reduce.js","../node_modules/core-js-pure/es/instance/slice.js","../node_modules/core-js-pure/es/instance/some.js","../node_modules/core-js-pure/es/instance/sort.js","../node_modules/core-js-pure/es/instance/splice.js","../node_modules/core-js-pure/es/instance/starts-with.js","../node_modules/core-js-pure/es/instance/trim.js","../node_modules/core-js-pure/es/object/assign.js","../node_modules/core-js-pure/es/object/create.js","../node_modules/core-js-pure/es/object/define-properties.js","../node_modules/core-js-pure/es/object/define-property.js","../node_modules/core-js-pure/es/object/entries.js","../node_modules/core-js-pure/es/object/get-own-property-descriptor.js","../node_modules/core-js-pure/es/object/get-own-property-descriptors.js","../node_modules/core-js-pure/es/object/get-own-property-symbols.js","../node_modules/core-js-pure/es/object/get-prototype-of.js","../node_modules/core-js-pure/es/object/keys.js","../node_modules/core-js-pure/es/object/set-prototype-of.js","../node_modules/core-js-pure/es/object/values.js","../node_modules/core-js-pure/es/parse-int.js","../node_modules/core-js-pure/es/reflect/construct.js","../node_modules/core-js-pure/es/string/virtual/starts-with.js","../node_modules/core-js-pure/es/string/virtual/trim.js","../node_modules/core-js-pure/es/symbol/index.js","../node_modules/core-js-pure/es/symbol/iterator.js","../node_modules/core-js-pure/features/array/from.js","../node_modules/core-js-pure/features/array/is-array.js","../node_modules/core-js-pure/features/get-iterator.js","../node_modules/core-js-pure/features/instance/index-of.js","../node_modules/core-js-pure/features/instance/slice.js","../node_modules/core-js-pure/features/is-iterable.js","../node_modules/core-js-pure/features/object/assign.js","../node_modules/core-js-pure/features/object/create.js","../node_modules/core-js-pure/features/object/define-property.js","../node_modules/core-js-pure/features/object/get-own-property-symbols.js","../node_modules/core-js-pure/features/object/get-prototype-of.js","../node_modules/core-js-pure/features/object/keys.js","../node_modules/core-js-pure/features/object/set-prototype-of.js","../node_modules/core-js-pure/features/symbol/index.js","../node_modules/core-js-pure/features/symbol/iterator.js","../node_modules/core-js-pure/internals/a-function.js","../node_modules/core-js-pure/internals/a-possible-prototype.js","../node_modules/core-js-pure/internals/add-to-unscopables.js","../node_modules/core-js-pure/internals/an-object.js","../node_modules/core-js-pure/internals/array-for-each.js","../node_modules/core-js-pure/internals/array-from.js","../node_modules/core-js-pure/internals/array-includes.js","../node_modules/core-js-pure/internals/array-iteration.js","../node_modules/core-js-pure/internals/array-method-has-species-support.js","../node_modules/core-js-pure/internals/array-method-is-strict.js","../node_modules/core-js-pure/internals/array-method-uses-to-length.js","../node_modules/core-js-pure/internals/array-reduce.js","../node_modules/core-js-pure/internals/array-species-create.js","../node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js","../node_modules/core-js-pure/internals/check-correctness-of-iteration.js","../node_modules/core-js-pure/internals/classof-raw.js","../node_modules/core-js-pure/internals/classof.js","../node_modules/core-js-pure/internals/correct-is-regexp-logic.js","../node_modules/core-js-pure/internals/correct-prototype-getter.js","../node_modules/core-js-pure/internals/create-iterator-constructor.js","../node_modules/core-js-pure/internals/create-non-enumerable-property.js","../node_modules/core-js-pure/internals/create-property-descriptor.js","../node_modules/core-js-pure/internals/create-property.js","../node_modules/core-js-pure/internals/define-iterator.js","../node_modules/core-js-pure/internals/define-well-known-symbol.js","../node_modules/core-js-pure/internals/descriptors.js","../node_modules/core-js-pure/internals/document-create-element.js","../node_modules/core-js-pure/internals/dom-iterables.js","../node_modules/core-js-pure/internals/engine-is-node.js","../node_modules/core-js-pure/internals/engine-user-agent.js","../node_modules/core-js-pure/internals/engine-v8-version.js","../node_modules/core-js-pure/internals/entry-virtual.js","../node_modules/core-js-pure/internals/enum-bug-keys.js","../node_modules/core-js-pure/internals/export.js","../node_modules/core-js-pure/internals/fails.js","../node_modules/core-js-pure/internals/function-bind-context.js","../node_modules/core-js-pure/internals/function-bind.js","../node_modules/core-js-pure/internals/get-built-in.js","../node_modules/core-js-pure/internals/get-iterator-method.js","../node_modules/core-js-pure/internals/get-iterator.js","../node_modules/core-js-pure/internals/global.js","../node_modules/core-js-pure/internals/has.js","../node_modules/core-js-pure/internals/hidden-keys.js","../node_modules/core-js-pure/internals/html.js","../node_modules/core-js-pure/internals/ie8-dom-define.js","../node_modules/core-js-pure/internals/indexed-object.js","../node_modules/core-js-pure/internals/inspect-source.js","../node_modules/core-js-pure/internals/internal-state.js","../node_modules/core-js-pure/internals/is-array-iterator-method.js","../node_modules/core-js-pure/internals/is-array.js","../node_modules/core-js-pure/internals/is-forced.js","../node_modules/core-js-pure/internals/is-iterable.js","../node_modules/core-js-pure/internals/is-object.js","../node_modules/core-js-pure/internals/is-pure.js","../node_modules/core-js-pure/internals/is-regexp.js","../node_modules/core-js-pure/internals/iterator-close.js","../node_modules/core-js-pure/internals/iterators-core.js","../node_modules/core-js-pure/internals/iterators.js","../node_modules/core-js-pure/internals/native-symbol.js","../node_modules/core-js-pure/internals/native-weak-map.js","../node_modules/core-js-pure/internals/not-a-regexp.js","../node_modules/core-js-pure/internals/number-parse-int.js","../node_modules/core-js-pure/internals/object-assign.js","../node_modules/core-js-pure/internals/object-create.js","../node_modules/core-js-pure/internals/object-define-properties.js","../node_modules/core-js-pure/internals/object-define-property.js","../node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","../node_modules/core-js-pure/internals/object-get-own-property-names-external.js","../node_modules/core-js-pure/internals/object-get-own-property-names.js","../node_modules/core-js-pure/internals/object-get-own-property-symbols.js","../node_modules/core-js-pure/internals/object-get-prototype-of.js","../node_modules/core-js-pure/internals/object-keys-internal.js","../node_modules/core-js-pure/internals/object-keys.js","../node_modules/core-js-pure/internals/object-property-is-enumerable.js","../node_modules/core-js-pure/internals/object-set-prototype-of.js","../node_modules/core-js-pure/internals/object-to-array.js","../node_modules/core-js-pure/internals/object-to-string.js","../node_modules/core-js-pure/internals/own-keys.js","../node_modules/core-js-pure/internals/path.js","../node_modules/core-js-pure/internals/redefine.js","../node_modules/core-js-pure/internals/require-object-coercible.js","../node_modules/core-js-pure/internals/set-global.js","../node_modules/core-js-pure/internals/set-to-string-tag.js","../node_modules/core-js-pure/internals/shared-key.js","../node_modules/core-js-pure/internals/shared-store.js","../node_modules/core-js-pure/internals/shared.js","../node_modules/core-js-pure/internals/string-multibyte.js","../node_modules/core-js-pure/internals/string-trim-forced.js","../node_modules/core-js-pure/internals/string-trim.js","../node_modules/core-js-pure/internals/to-absolute-index.js","../node_modules/core-js-pure/internals/to-indexed-object.js","../node_modules/core-js-pure/internals/to-integer.js","../node_modules/core-js-pure/internals/to-length.js","../node_modules/core-js-pure/internals/to-object.js","../node_modules/core-js-pure/internals/to-primitive.js","../node_modules/core-js-pure/internals/to-string-tag-support.js","../node_modules/core-js-pure/internals/uid.js","../node_modules/core-js-pure/internals/use-symbol-as-uid.js","../node_modules/core-js-pure/internals/well-known-symbol-wrapped.js","../node_modules/core-js-pure/internals/well-known-symbol.js","../node_modules/core-js-pure/internals/whitespaces.js","../node_modules/core-js-pure/modules/es.array.concat.js","../node_modules/core-js-pure/modules/es.array.every.js","../node_modules/core-js-pure/modules/es.array.filter.js","../node_modules/core-js-pure/modules/es.array.find-index.js","../node_modules/core-js-pure/modules/es.array.for-each.js","../node_modules/core-js-pure/modules/es.array.from.js","../node_modules/core-js-pure/modules/es.array.index-of.js","../node_modules/core-js-pure/modules/es.array.is-array.js","../node_modules/core-js-pure/modules/es.array.iterator.js","../node_modules/core-js-pure/modules/es.array.map.js","../node_modules/core-js-pure/modules/es.array.reduce.js","../node_modules/core-js-pure/modules/es.array.slice.js","../node_modules/core-js-pure/modules/es.array.some.js","../node_modules/core-js-pure/modules/es.array.sort.js","../node_modules/core-js-pure/modules/es.array.splice.js","../node_modules/core-js-pure/modules/es.function.bind.js","../node_modules/core-js-pure/modules/es.json.to-string-tag.js","../node_modules/core-js-pure/modules/es.object.assign.js","../node_modules/core-js-pure/modules/es.object.create.js","../node_modules/core-js-pure/modules/es.object.define-properties.js","../node_modules/core-js-pure/modules/es.object.define-property.js","../node_modules/core-js-pure/modules/es.object.entries.js","../node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js","../node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js","../node_modules/core-js-pure/modules/es.object.get-prototype-of.js","../node_modules/core-js-pure/modules/es.object.keys.js","../node_modules/core-js-pure/modules/es.object.set-prototype-of.js","../node_modules/core-js-pure/modules/es.object.values.js","../node_modules/core-js-pure/modules/es.parse-int.js","../node_modules/core-js-pure/modules/es.reflect.construct.js","../node_modules/core-js-pure/modules/es.string.iterator.js","../node_modules/core-js-pure/modules/es.string.starts-with.js","../node_modules/core-js-pure/modules/es.string.trim.js","../node_modules/core-js-pure/modules/es.symbol.async-iterator.js","../node_modules/core-js-pure/modules/es.symbol.has-instance.js","../node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js","../node_modules/core-js-pure/modules/es.symbol.iterator.js","../node_modules/core-js-pure/modules/es.symbol.js","../node_modules/core-js-pure/modules/es.symbol.match-all.js","../node_modules/core-js-pure/modules/es.symbol.match.js","../node_modules/core-js-pure/modules/es.symbol.replace.js","../node_modules/core-js-pure/modules/es.symbol.search.js","../node_modules/core-js-pure/modules/es.symbol.species.js","../node_modules/core-js-pure/modules/es.symbol.split.js","../node_modules/core-js-pure/modules/es.symbol.to-primitive.js","../node_modules/core-js-pure/modules/es.symbol.to-string-tag.js","../node_modules/core-js-pure/modules/es.symbol.unscopables.js","../node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js","../node_modules/core-js-pure/modules/esnext.symbol.dispose.js","../node_modules/core-js-pure/modules/esnext.symbol.observable.js","../node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js","../node_modules/core-js-pure/modules/esnext.symbol.replace-all.js","../node_modules/core-js-pure/modules/web.dom-collections.iterator.js","../node_modules/core-js-pure/modules/web.timers.js","../node_modules/core-js-pure/stable/array/is-array.js","../node_modules/core-js-pure/stable/array/virtual/for-each.js","../node_modules/core-js-pure/stable/instance/bind.js","../node_modules/core-js-pure/stable/instance/concat.js","../node_modules/core-js-pure/stable/instance/every.js","../node_modules/core-js-pure/stable/instance/filter.js","../node_modules/core-js-pure/stable/instance/find-index.js","../node_modules/core-js-pure/stable/instance/for-each.js","../node_modules/core-js-pure/stable/instance/index-of.js","../node_modules/core-js-pure/stable/instance/map.js","../node_modules/core-js-pure/stable/instance/reduce.js","../node_modules/core-js-pure/stable/instance/slice.js","../node_modules/core-js-pure/stable/instance/some.js","../node_modules/core-js-pure/stable/instance/sort.js","../node_modules/core-js-pure/stable/instance/splice.js","../node_modules/core-js-pure/stable/instance/starts-with.js","../node_modules/core-js-pure/stable/instance/trim.js","../node_modules/core-js-pure/stable/object/assign.js","../node_modules/core-js-pure/stable/object/define-properties.js","../node_modules/core-js-pure/stable/object/define-property.js","../node_modules/core-js-pure/stable/object/entries.js","../node_modules/core-js-pure/stable/object/get-own-property-descriptor.js","../node_modules/core-js-pure/stable/object/get-own-property-descriptors.js","../node_modules/core-js-pure/stable/object/get-own-property-symbols.js","../node_modules/core-js-pure/stable/object/keys.js","../node_modules/core-js-pure/stable/object/values.js","../node_modules/core-js-pure/stable/parse-int.js","../node_modules/core-js-pure/stable/reflect/construct.js","../node_modules/core-js-pure/stable/set-timeout.js","../node_modules/gud/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/invariant/browser.js","../node_modules/is-in-browser/dist/module.js","../node_modules/isarray/index.js","../node_modules/jss/dist/jss.esm.js","../node_modules/lodash.assignwith/index.js","../node_modules/lodash.clonedeep/index.js","../node_modules/lodash.find/index.js","../node_modules/lodash.isequal/index.js","../node_modules/lodash.isundefined/index.js","../node_modules/lodash.merge/index.js","../node_modules/luxon/src/errors.js","../node_modules/luxon/src/impl/formats.js","../node_modules/luxon/src/impl/util.js","../node_modules/luxon/src/impl/english.js","../node_modules/luxon/src/impl/formatter.js","../node_modules/luxon/src/impl/invalid.js","../node_modules/luxon/src/zone.js","../node_modules/luxon/src/zones/localZone.js","../node_modules/luxon/src/zones/IANAZone.js","../node_modules/luxon/src/zones/fixedOffsetZone.js","../node_modules/luxon/src/zones/invalidZone.js","../node_modules/luxon/src/impl/zoneUtil.js","../node_modules/luxon/src/settings.js","../node_modules/luxon/src/impl/locale.js","../node_modules/luxon/src/impl/regexParser.js","../node_modules/luxon/src/duration.js","../node_modules/luxon/src/interval.js","../node_modules/luxon/src/info.js","../node_modules/luxon/src/impl/diff.js","../node_modules/luxon/src/impl/digits.js","../node_modules/luxon/src/impl/tokenParser.js","../node_modules/luxon/src/impl/conversions.js","../node_modules/luxon/src/datetime.js","../node_modules/mui-datatables/src/components/TableBodyCell.js","../node_modules/mui-datatables/src/components/TableBodyRow.js","../node_modules/mui-datatables/src/components/ExpandButton.js","../node_modules/mui-datatables/src/components/TableSelectCell.js","../node_modules/mui-datatables/src/utils.js","../node_modules/mui-datatables/src/components/TableBody.js","../node_modules/mui-datatables/src/components/TableFilter.js","../node_modules/mui-datatables/src/components/TableFilterListItem.js","../node_modules/mui-datatables/src/components/TableFilterList.js","../node_modules/mui-datatables/src/components/JumpToPage.js","../node_modules/mui-datatables/src/components/TablePagination.js","../node_modules/mui-datatables/src/components/TableFooter.js","../node_modules/mui-datatables/src/hooks/useColumnDrop.js","../node_modules/mui-datatables/src/components/TableHeadCell.js","../node_modules/mui-datatables/src/components/TableHeadRow.js","../node_modules/mui-datatables/src/components/TableHead.js","../node_modules/mui-datatables/src/components/TableResize.js","../node_modules/mui-datatables/src/components/Popover.js","../node_modules/mui-datatables/src/components/TableViewCol.js","../node_modules/mui-datatables/src/components/TableSearch.js","../node_modules/mui-datatables/src/components/TableToolbar.js","../node_modules/mui-datatables/src/components/TableToolbarSelect.js","../node_modules/mui-datatables/src/textLabels.js","../node_modules/mui-datatables/src/MUIDataTable.js","../node_modules/mui-datatables/src/plug-ins/DebounceSearchRender.js","../node_modules/object-assign/index.js","../node_modules/path-to-regexp/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/property-expr/index.js","../node_modules/react-dnd-html5-backend/dist/esm/utils/js_utils.js","../node_modules/react-dnd-html5-backend/dist/esm/EnterLeaveCounter.js","../node_modules/react-dnd-html5-backend/dist/esm/BrowserDetector.js","../node_modules/react-dnd-html5-backend/dist/esm/MonotonicInterpolant.js","../node_modules/react-dnd-html5-backend/dist/esm/OffsetUtils.js","../node_modules/react-dnd-html5-backend/dist/esm/NativeTypes.js","../node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/nativeTypesConfig.js","../node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/getDataFromDataTransfer.js","../node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/NativeDragSource.js","../node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/index.js","../node_modules/react-dnd-html5-backend/dist/esm/OptionsReader.js","../node_modules/react-dnd-html5-backend/dist/esm/HTML5BackendImpl.js","../node_modules/react-dnd-html5-backend/dist/esm/getEmptyImage.js","../node_modules/react-dnd-html5-backend/dist/esm/index.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/types.js","../node_modules/dnd-core/dist/esm/utils/equality.js","../node_modules/dnd-core/dist/esm/reducers/dragOffset.js","../node_modules/dnd-core/dist/esm/actions/registry.js","../node_modules/dnd-core/dist/esm/utils/js_utils.js","../node_modules/dnd-core/dist/esm/reducers/dragOperation.js","../node_modules/dnd-core/dist/esm/reducers/refCount.js","../node_modules/dnd-core/dist/esm/utils/dirtiness.js","../node_modules/dnd-core/dist/esm/reducers/dirtyHandlerIds.js","../node_modules/dnd-core/dist/esm/reducers/stateId.js","../node_modules/dnd-core/dist/esm/reducers/index.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/local/setClientOffset.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/beginDrag.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/publishDragSource.js","../node_modules/dnd-core/dist/esm/utils/matchesType.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/hover.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/drop.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/endDrag.js","../node_modules/dnd-core/dist/esm/utils/coords.js","../node_modules/dnd-core/dist/esm/DragDropMonitorImpl.js","../node_modules/dnd-core/dist/esm/interfaces.js","../node_modules/dnd-core/dist/esm/utils/getNextUniqueId.js","../node_modules/dnd-core/dist/esm/contracts.js","../node_modules/@react-dnd/asap/dist/esm/browser/raw.js","../node_modules/@react-dnd/asap/dist/esm/browser/asap.js","../node_modules/dnd-core/dist/esm/HandlerRegistryImpl.js","../node_modules/dnd-core/dist/esm/DragDropManagerImpl.js","../node_modules/dnd-core/dist/esm/actions/dragDrop/index.js","../node_modules/dnd-core/dist/esm/factories.js","../node_modules/react-dnd/dist/esm/common/DndContext.js","../node_modules/react-dnd/dist/esm/common/DragSourceMonitorImpl.js","../node_modules/react-dnd/dist/esm/common/DropTargetMonitorImpl.js","../node_modules/react-dnd/dist/esm/common/SourceConnector.js","../node_modules/react-dnd/dist/esm/common/TargetConnector.js","../node_modules/react-dnd/dist/esm/common/DndProvider.js","../node_modules/react-dnd/dist/esm/common/DragPreviewImage.js","../node_modules/react-dnd/dist/esm/common/registration.js","../node_modules/react-dnd/dist/esm/utils/cloneWithRef.js","../node_modules/react-dnd/dist/esm/common/wrapConnectorHooks.js","../node_modules/react-dnd/dist/esm/decorators/DragLayer.js","../node_modules/react-dnd/dist/esm/decorators/createSourceFactory.js","../node_modules/react-dnd/dist/esm/decorators/DragSource.js","../node_modules/react-dnd/dist/esm/decorators/createTargetFactory.js","../node_modules/react-dnd/dist/esm/decorators/DropTarget.js","../node_modules/react-dnd/dist/esm/decorators/disposables.js","../node_modules/react-dnd/dist/esm/decorators/decorateHandler.js","../node_modules/react-dnd/dist/esm/decorators/utils.js","../node_modules/react-dnd/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js","../node_modules/react-dnd/dist/esm/hooks/internal/useCollector.js","../node_modules/react-dnd/dist/esm/hooks/internal/useMonitorOutput.js","../node_modules/react-dnd/dist/esm/hooks/useDragDropManager.js","../node_modules/react-dnd/dist/esm/hooks/internal/drag.js","../node_modules/react-dnd/dist/esm/hooks/useDrag.js","../node_modules/react-dnd/dist/esm/hooks/internal/drop.js","../node_modules/react-dnd/dist/esm/hooks/useDrop.js","../node_modules/react-dnd/dist/esm/hooks/useDragLayer.js","../node_modules/react-dnd/dist/esm/utils/isRef.js","../node_modules/react-dnd/dist/esm/utils/isValidType.js","../node_modules/react-dnd/dist/esm/utils/js_utils.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-error-boundary/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-error-boundary/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-error-boundary/src/index.tsx","../node_modules/react-fast-compare/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-to-print/lib/index.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/redux/es/redux.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/symbol-observable/es/index.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/toposort/index.js","../node_modules/yup/node_modules/lodash/_DataView.js","../node_modules/yup/node_modules/lodash/_Hash.js","../node_modules/yup/node_modules/lodash/_ListCache.js","../node_modules/yup/node_modules/lodash/_Map.js","../node_modules/yup/node_modules/lodash/_MapCache.js","../node_modules/yup/node_modules/lodash/_Promise.js","../node_modules/yup/node_modules/lodash/_Set.js","../node_modules/yup/node_modules/lodash/_SetCache.js","../node_modules/yup/node_modules/lodash/_Stack.js","../node_modules/yup/node_modules/lodash/_Symbol.js","../node_modules/yup/node_modules/lodash/_Uint8Array.js","../node_modules/yup/node_modules/lodash/_WeakMap.js","../node_modules/yup/node_modules/lodash/_arrayFilter.js","../node_modules/yup/node_modules/lodash/_arrayLikeKeys.js","../node_modules/yup/node_modules/lodash/_arrayMap.js","../node_modules/yup/node_modules/lodash/_arrayPush.js","../node_modules/yup/node_modules/lodash/_arrayReduce.js","../node_modules/yup/node_modules/lodash/_arraySome.js","../node_modules/yup/node_modules/lodash/_asciiToArray.js","../node_modules/yup/node_modules/lodash/_asciiWords.js","../node_modules/yup/node_modules/lodash/_assocIndexOf.js","../node_modules/yup/node_modules/lodash/_baseAssignValue.js","../node_modules/yup/node_modules/lodash/_baseFor.js","../node_modules/yup/node_modules/lodash/_baseForOwn.js","../node_modules/yup/node_modules/lodash/_baseGet.js","../node_modules/yup/node_modules/lodash/_baseGetAllKeys.js","../node_modules/yup/node_modules/lodash/_baseGetTag.js","../node_modules/yup/node_modules/lodash/_baseHas.js","../node_modules/yup/node_modules/lodash/_baseHasIn.js","../node_modules/yup/node_modules/lodash/_baseIsArguments.js","../node_modules/yup/node_modules/lodash/_baseIsEqual.js","../node_modules/yup/node_modules/lodash/_baseIsEqualDeep.js","../node_modules/yup/node_modules/lodash/_baseIsMatch.js","../node_modules/yup/node_modules/lodash/_baseIsNative.js","../node_modules/yup/node_modules/lodash/_baseIsTypedArray.js","../node_modules/yup/node_modules/lodash/_baseIteratee.js","../node_modules/yup/node_modules/lodash/_baseKeys.js","../node_modules/yup/node_modules/lodash/_baseMatches.js","../node_modules/yup/node_modules/lodash/_baseMatchesProperty.js","../node_modules/yup/node_modules/lodash/_baseProperty.js","../node_modules/yup/node_modules/lodash/_basePropertyDeep.js","../node_modules/yup/node_modules/lodash/_basePropertyOf.js","../node_modules/yup/node_modules/lodash/_baseSlice.js","../node_modules/yup/node_modules/lodash/_baseTimes.js","../node_modules/yup/node_modules/lodash/_baseToString.js","../node_modules/yup/node_modules/lodash/_baseUnary.js","../node_modules/yup/node_modules/lodash/_cacheHas.js","../node_modules/yup/node_modules/lodash/_castPath.js","../node_modules/yup/node_modules/lodash/_castSlice.js","../node_modules/yup/node_modules/lodash/_coreJsData.js","../node_modules/yup/node_modules/lodash/_createBaseFor.js","../node_modules/yup/node_modules/lodash/_createCaseFirst.js","../node_modules/yup/node_modules/lodash/_createCompounder.js","../node_modules/yup/node_modules/lodash/_deburrLetter.js","../node_modules/yup/node_modules/lodash/_defineProperty.js","../node_modules/yup/node_modules/lodash/_equalArrays.js","../node_modules/yup/node_modules/lodash/_equalByTag.js","../node_modules/yup/node_modules/lodash/_equalObjects.js","../node_modules/yup/node_modules/lodash/_freeGlobal.js","../node_modules/yup/node_modules/lodash/_getAllKeys.js","../node_modules/yup/node_modules/lodash/_getMapData.js","../node_modules/yup/node_modules/lodash/_getMatchData.js","../node_modules/yup/node_modules/lodash/_getNative.js","../node_modules/yup/node_modules/lodash/_getRawTag.js","../node_modules/yup/node_modules/lodash/_getSymbols.js","../node_modules/yup/node_modules/lodash/_getTag.js","../node_modules/yup/node_modules/lodash/_getValue.js","../node_modules/yup/node_modules/lodash/_hasPath.js","../node_modules/yup/node_modules/lodash/_hasUnicode.js","../node_modules/yup/node_modules/lodash/_hasUnicodeWord.js","../node_modules/yup/node_modules/lodash/_hashClear.js","../node_modules/yup/node_modules/lodash/_hashDelete.js","../node_modules/yup/node_modules/lodash/_hashGet.js","../node_modules/yup/node_modules/lodash/_hashHas.js","../node_modules/yup/node_modules/lodash/_hashSet.js","../node_modules/yup/node_modules/lodash/_isIndex.js","../node_modules/yup/node_modules/lodash/_isKey.js","../node_modules/yup/node_modules/lodash/_isKeyable.js","../node_modules/yup/node_modules/lodash/_isMasked.js","../node_modules/yup/node_modules/lodash/_isPrototype.js","../node_modules/yup/node_modules/lodash/_isStrictComparable.js","../node_modules/yup/node_modules/lodash/_listCacheClear.js","../node_modules/yup/node_modules/lodash/_listCacheDelete.js","../node_modules/yup/node_modules/lodash/_listCacheGet.js","../node_modules/yup/node_modules/lodash/_listCacheHas.js","../node_modules/yup/node_modules/lodash/_listCacheSet.js","../node_modules/yup/node_modules/lodash/_mapCacheClear.js","../node_modules/yup/node_modules/lodash/_mapCacheDelete.js","../node_modules/yup/node_modules/lodash/_mapCacheGet.js","../node_modules/yup/node_modules/lodash/_mapCacheHas.js","../node_modules/yup/node_modules/lodash/_mapCacheSet.js","../node_modules/yup/node_modules/lodash/_mapToArray.js","../node_modules/yup/node_modules/lodash/_matchesStrictComparable.js","../node_modules/yup/node_modules/lodash/_memoizeCapped.js","../node_modules/yup/node_modules/lodash/_nativeCreate.js","../node_modules/yup/node_modules/lodash/_nativeKeys.js","../node_modules/yup/node_modules/lodash/_nodeUtil.js","../node_modules/yup/node_modules/lodash/_objectToString.js","../node_modules/yup/node_modules/lodash/_overArg.js","../node_modules/yup/node_modules/lodash/_root.js","../node_modules/yup/node_modules/lodash/_setCacheAdd.js","../node_modules/yup/node_modules/lodash/_setCacheHas.js","../node_modules/yup/node_modules/lodash/_setToArray.js","../node_modules/yup/node_modules/lodash/_stackClear.js","../node_modules/yup/node_modules/lodash/_stackDelete.js","../node_modules/yup/node_modules/lodash/_stackGet.js","../node_modules/yup/node_modules/lodash/_stackHas.js","../node_modules/yup/node_modules/lodash/_stackSet.js","../node_modules/yup/node_modules/lodash/_stringToArray.js","../node_modules/yup/node_modules/lodash/_stringToPath.js","../node_modules/yup/node_modules/lodash/_toKey.js","../node_modules/yup/node_modules/lodash/_toSource.js","../node_modules/yup/node_modules/lodash/_unicodeToArray.js","../node_modules/yup/node_modules/lodash/_unicodeWords.js","../node_modules/yup/node_modules/lodash/camelCase.js","../node_modules/yup/node_modules/lodash/capitalize.js","../node_modules/yup/node_modules/lodash/deburr.js","../node_modules/yup/node_modules/lodash/eq.js","../node_modules/yup/node_modules/lodash/get.js","../node_modules/yup/node_modules/lodash/has.js","../node_modules/yup/node_modules/lodash/hasIn.js","../node_modules/yup/node_modules/lodash/identity.js","../node_modules/yup/node_modules/lodash/isArguments.js","../node_modules/yup/node_modules/lodash/isArray.js","../node_modules/yup/node_modules/lodash/isArrayLike.js","../node_modules/yup/node_modules/lodash/isBuffer.js","../node_modules/yup/node_modules/lodash/isFunction.js","../node_modules/yup/node_modules/lodash/isLength.js","../node_modules/yup/node_modules/lodash/isObject.js","../node_modules/yup/node_modules/lodash/isObjectLike.js","../node_modules/yup/node_modules/lodash/isSymbol.js","../node_modules/yup/node_modules/lodash/isTypedArray.js","../node_modules/yup/node_modules/lodash/keys.js","../node_modules/yup/node_modules/lodash/mapKeys.js","../node_modules/yup/node_modules/lodash/mapValues.js","../node_modules/yup/node_modules/lodash/memoize.js","../node_modules/yup/node_modules/lodash/property.js","../node_modules/yup/node_modules/lodash/snakeCase.js","../node_modules/yup/node_modules/lodash/stubArray.js","../node_modules/yup/node_modules/lodash/stubFalse.js","../node_modules/yup/node_modules/lodash/toString.js","../node_modules/yup/node_modules/lodash/upperFirst.js","../node_modules/yup/node_modules/lodash/words.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/interopRequireWildcard.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/index.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/history/esm/history.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/hooks.js","../node_modules/connected-react-router/esm/actions.js","../node_modules/connected-react-router/esm/selectors.js","../node_modules/connected-react-router/esm/ConnectedRouter.js","../node_modules/connected-react-router/esm/reducer.js","../node_modules/connected-react-router/esm/structure/plain/getIn.js","../node_modules/connected-react-router/esm/structure/plain/index.js","../node_modules/connected-react-router/esm/index.js","../node_modules/redux-thunk/es/index.js","../node_modules/tslib/tslib.es6.js","../node_modules/rxjs/src/internal/util/isObject.ts","../node_modules/rxjs/src/internal/util/isFunction.ts","../node_modules/rxjs/src/internal/util/UnsubscriptionError.ts","../node_modules/rxjs/src/internal/Subscription.ts","../node_modules/rxjs/src/internal/scheduler/Action.ts","../node_modules/rxjs/src/internal/scheduler/AsyncAction.ts","../node_modules/rxjs/src/internal/scheduler/QueueAction.ts","../node_modules/rxjs/src/internal/Scheduler.ts","../node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts","../node_modules/rxjs/src/internal/scheduler/queue.ts","../node_modules/rxjs/src/internal/scheduler/QueueScheduler.ts","../node_modules/rxjs/src/internal/config.ts","../node_modules/rxjs/src/internal/util/hostReportError.ts","../node_modules/rxjs/src/internal/Observer.ts","../node_modules/rxjs/src/internal/symbol/rxSubscriber.ts","../node_modules/rxjs/src/internal/Subscriber.ts","../node_modules/rxjs/src/internal/util/identity.ts","../node_modules/rxjs/src/internal/util/pipe.ts","../node_modules/rxjs/src/internal/Observable.ts","../node_modules/rxjs/src/internal/util/toSubscriber.ts","../node_modules/rxjs/src/internal/util/canReportError.ts","../node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts","../node_modules/rxjs/src/internal/SubjectSubscription.ts","../node_modules/rxjs/src/internal/Subject.ts","../node_modules/rxjs/src/internal/util/subscribeToArray.ts","../node_modules/rxjs/src/internal/symbol/iterator.ts","../node_modules/rxjs/src/internal/util/isPromise.ts","../node_modules/rxjs/src/internal/util/subscribeTo.ts","../node_modules/rxjs/src/internal/util/subscribeToObservable.ts","../node_modules/rxjs/src/internal/util/subscribeToPromise.ts","../node_modules/rxjs/src/internal/util/subscribeToIterable.ts","../node_modules/rxjs/src/internal/scheduled/scheduleArray.ts","../node_modules/rxjs/src/internal/scheduled/scheduled.ts","../node_modules/rxjs/src/internal/util/isInteropObservable.ts","../node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts","../node_modules/rxjs/src/internal/scheduled/schedulePromise.ts","../node_modules/rxjs/src/internal/util/isIterable.ts","../node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts","../node_modules/rxjs/src/internal/observable/from.ts","../node_modules/rxjs/src/internal/observable/empty.ts","../node_modules/rxjs/src/internal/Notification.ts","../node_modules/rxjs/src/internal/util/isScheduler.ts","../node_modules/rxjs/src/internal/observable/fromArray.ts","../node_modules/rxjs/src/internal/observable/of.ts","../node_modules/rxjs/src/internal/observable/throwError.ts","../node_modules/rxjs/src/internal/operators/observeOn.ts","../node_modules/rxjs/src/internal/operators/map.ts","../node_modules/rxjs/src/internal/innerSubscribe.ts","../node_modules/rxjs/src/internal/operators/mergeMap.ts","../node_modules/rxjs/src/internal/util/Immediate.ts","../node_modules/rxjs/src/internal/scheduler/AsapAction.ts","../node_modules/rxjs/src/internal/scheduler/AsapScheduler.ts","../node_modules/rxjs/src/internal/scheduler/asap.ts","../node_modules/rxjs/src/internal/observable/SubscribeOnObservable.ts","../node_modules/rxjs/src/internal/util/isNumeric.ts","../node_modules/rxjs/src/internal/operators/subscribeOn.ts","../node_modules/rxjs/src/internal/operators/filter.ts","../node_modules/redux-observable/lib/esm/operators.js","../node_modules/redux-observable/lib/esm/ActionsObservable.js","../node_modules/redux-observable/lib/esm/StateObservable.js","../node_modules/redux-observable/lib/esm/createEpicMiddleware.js","../node_modules/rxjs/src/internal/operators/mergeAll.ts","../node_modules/rxjs/src/internal/observable/merge.ts","../node_modules/redux-observable/lib/esm/combineEpics.js","../node_modules/connected-react-router/esm/middleware.js","../node_modules/rxjs/src/internal/observable/iif.ts","../node_modules/rxjs/src/internal/observable/defer.ts","../node_modules/rxjs/src/internal/operators/groupBy.ts","../node_modules/rxjs/src/internal/observable/concat.ts","../node_modules/rxjs/src/internal/operators/concatAll.ts","../node_modules/rxjs/src/internal/operators/pairwise.ts","../node_modules/rxjs/src/internal/operators/catchError.ts","../node_modules/rxjs/src/internal/scheduler/async.ts","../node_modules/rxjs/src/internal/operators/delay.ts","../node_modules/rxjs/src/internal/util/isDate.ts","../node_modules/@azure/msal-common/dist/index.es.js","../node_modules/@azure/msal-browser/src/utils/BrowserConstants.ts","../node_modules/@azure/msal-browser/src/utils/MathUtils.ts","../node_modules/@azure/msal-browser/src/crypto/GuidGenerator.ts","../node_modules/@azure/msal-browser/src/utils/BrowserStringUtils.ts","../node_modules/@azure/msal-browser/src/encode/Base64Encode.ts","../node_modules/@azure/msal-browser/src/encode/Base64Decode.ts","../node_modules/@azure/msal-browser/src/error/BrowserAuthError.ts","../node_modules/@azure/msal-browser/src/crypto/PkceGenerator.ts","../node_modules/@azure/msal-browser/src/crypto/BrowserCrypto.ts","../node_modules/@azure/msal-browser/src/cache/DatabaseStorage.ts","../node_modules/@azure/msal-browser/src/crypto/CryptoOps.ts","../node_modules/@azure/msal-browser/src/error/BrowserConfigurationAuthError.ts","../node_modules/@azure/msal-browser/src/cache/BrowserStorage.ts","../node_modules/@azure/msal-browser/src/cache/MemoryStorage.ts","../node_modules/@azure/msal-browser/src/utils/BrowserProtocolUtils.ts","../node_modules/@azure/msal-browser/src/cache/BrowserCacheManager.ts","../node_modules/@azure/msal-browser/src/network/FetchClient.ts","../node_modules/@azure/msal-browser/src/network/XhrClient.ts","../node_modules/@azure/msal-browser/src/utils/BrowserUtils.ts","../node_modules/@azure/msal-browser/src/navigation/NavigationClient.ts","../node_modules/@azure/msal-browser/src/config/Configuration.ts","../node_modules/@azure/msal-browser/src/interaction_handler/InteractionHandler.ts","../node_modules/@azure/msal-browser/src/event/EventType.ts","../node_modules/@azure/msal-browser/src/interaction_handler/RedirectHandler.ts","../node_modules/@azure/msal-browser/src/utils/PopupUtils.ts","../node_modules/@azure/msal-browser/src/interaction_handler/PopupHandler.ts","../node_modules/@azure/msal-browser/src/interaction_handler/SilentHandler.ts","../node_modules/@azure/msal-browser/src/packageMetadata.ts","../node_modules/@azure/msal-browser/src/app/ClientApplication.ts","../node_modules/@azure/msal-browser/src/app/PublicClientApplication.ts","../node_modules/@azure/msal-browser/src/app/IPublicClientApplication.ts","../node_modules/@azure/msal-browser/src/event/EventMessage.ts","authConfig.ts","authInstance.ts","../node_modules/@azure/msal-common/src/utils/Constants.ts","../node_modules/@azure/msal-common/src/error/AuthError.ts","../node_modules/@azure/msal-common/src/logger/Logger.ts","../node_modules/@azure/msal-common/src/crypto/ICrypto.ts","../node_modules/@azure/msal-common/src/error/ClientAuthError.ts","../node_modules/@azure/msal-common/src/utils/StringUtils.ts","../node_modules/@azure/msal-common/src/authority/AuthorityType.ts","../node_modules/@azure/msal-common/src/packageMetadata.ts","../node_modules/@azure/msal-common/src/cache/entities/CredentialEntity.ts","../node_modules/@azure/msal-common/src/error/ClientConfigurationError.ts","../node_modules/@azure/msal-common/src/request/ScopeSet.ts","../node_modules/@azure/msal-common/src/account/ClientInfo.ts","../node_modules/@azure/msal-common/src/cache/entities/AccountEntity.ts","../node_modules/@azure/msal-common/src/account/AuthToken.ts","../node_modules/@azure/msal-common/src/cache/CacheManager.ts","../node_modules/@azure/msal-common/src/config/ClientConfiguration.ts","../node_modules/@azure/msal-common/src/error/ServerError.ts","../node_modules/@azure/msal-common/src/crypto/PopTokenGenerator.ts","../node_modules/@azure/msal-common/src/network/ThrottlingUtils.ts","../node_modules/@azure/msal-common/src/network/NetworkManager.ts","../node_modules/@azure/msal-common/src/client/BaseClient.ts","../node_modules/@azure/msal-common/src/request/RequestValidator.ts","../node_modules/@azure/msal-common/src/request/RequestParameterBuilder.ts","../node_modules/@azure/msal-common/src/cache/entities/IdTokenEntity.ts","../node_modules/@azure/msal-common/src/utils/TimeUtils.ts","../node_modules/@azure/msal-common/src/cache/entities/AccessTokenEntity.ts","../node_modules/@azure/msal-common/src/cache/entities/RefreshTokenEntity.ts","../node_modules/@azure/msal-common/src/error/InteractionRequiredAuthError.ts","../node_modules/@azure/msal-common/src/cache/entities/CacheRecord.ts","../node_modules/@azure/msal-common/src/utils/ProtocolUtils.ts","../node_modules/@azure/msal-common/src/url/UrlString.ts","../node_modules/@azure/msal-common/src/authority/ProtocolMode.ts","../node_modules/@azure/msal-common/src/cache/entities/AppMetadataEntity.ts","../node_modules/@azure/msal-common/src/cache/persistence/TokenCacheContext.ts","../node_modules/@azure/msal-common/src/response/ResponseHandler.ts","../node_modules/@azure/msal-common/src/client/RefreshTokenClient.ts","../node_modules/@azure/msal-common/src/client/AuthorizationCodeClient.ts","../node_modules/@azure/msal-common/src/client/DeviceCodeClient.ts","../node_modules/@azure/msal-common/src/client/ClientCredentialClient.ts","../node_modules/@azure/msal-common/src/client/OnBehalfOfClient.ts","../node_modules/@azure/msal-common/src/client/SilentFlowClient.ts","../node_modules/@azure/msal-common/src/client/UsernamePasswordClient.ts","../node_modules/@azure/msal-common/src/authority/OpenIdConfigResponse.ts","../node_modules/@azure/msal-common/src/cache/entities/AuthorityMetadataEntity.ts","../node_modules/@azure/msal-common/src/authority/Authority.ts","../node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryResponse.ts","../node_modules/@azure/msal-common/src/cache/entities/ServerTelemetryEntity.ts","../node_modules/@azure/msal-common/src/authority/AuthorityFactory.ts","../node_modules/@azure/msal-common/src/cache/entities/ThrottlingEntity.ts","../node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryManager.ts","generated/ApiClient.ts","generated/ApiClientExtensions.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/SeverityLevel.ts","../node_modules/@microsoft/applicationinsights-shims/src/applicationinsights-shims.ts","../node_modules/@microsoft/dynamicproto-js/lib/out/lib/src/DynamicProto.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK.Enums/LoggingEnums.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/HelperFuncs.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/EnvUtils.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DiagnosticLogger.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/PerfManager.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/TelemetryPluginChain.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/Constants.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/TelemetryHelpers.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/ChannelController.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/CookieMgr.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/BaseCore.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK.Enums/EventsDiscardedReason.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/NotificationManager.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/AppInsightsCore.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/RandomHelper.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/CoreUtils.js","../node_modules/@microsoft/applicationinsights-common/src/applicationinsights-common.ts","../node_modules/@microsoft/applicationinsights-common/src/Enums.ts","../node_modules/@microsoft/applicationinsights-common/src/Telemetry/Common/DataSanitizer.ts","../node_modules/@microsoft/applicationinsights-common/src/Constants.ts","../node_modules/@microsoft/applicationinsights-common/src/TelemetryItemCreator.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/EventData.ts","../node_modules/@microsoft/applicationinsights-common/src/Telemetry/Event.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/DataPointType.ts","../node_modules/@microsoft/applicationinsights-common/src/Telemetry/Trace.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/MessageData.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/MetricData.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/DataPoint.ts","../node_modules/@microsoft/applicationinsights-common/src/Telemetry/Common/DataPoint.ts","../node_modules/@microsoft/applicationinsights-common/src/Telemetry/Metric.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/PageViewData.ts","../node_modules/@microsoft/applicationinsights-common/src/HelperFuncs.ts","../node_modules/@microsoft/applicationinsights-common/src/Telemetry/PageView.ts","../node_modules/@microsoft/applicationinsights-common/src/Telemetry/PageViewPerformance.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/PageViewPerfData.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/StackFrame.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/ExceptionDetails.ts","../node_modules/@microsoft/applicationinsights-common/src/Telemetry/Exception.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/ExceptionData.ts","../node_modules/@microsoft/applicationinsights-common/src/StorageHelperFuncs.ts","../node_modules/@microsoft/applicationinsights-common/src/DomHelperFuncs.ts","../node_modules/@microsoft/applicationinsights-common/src/RequestResponseHeaders.ts","../node_modules/@microsoft/applicationinsights-common/src/UrlHelperFuncs.ts","../node_modules/@microsoft/applicationinsights-common/src/Util.ts","../node_modules/@microsoft/applicationinsights-common/src/Telemetry/RemoteDependencyData.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/RemoteDependencyData.ts","../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageViewManager.js","../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageVisitTimeManager.js","../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageViewPerformanceManager.js","../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/ApplicationInsights.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/SendBuffer.js","../node_modules/@microsoft/applicationinsights-common/src/Telemetry/Common/Envelope.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/Envelope.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/ContextTagKeys.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/PartAExtensions.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/Base.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/Contracts/Generated/Data.ts","../node_modules/@microsoft/applicationinsights-common/src/Telemetry/Common/Data.ts","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/EnvelopeCreator.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Serializer.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Offline.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/SamplingScoreGenerators/SamplingScoreGenerator.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/Sample.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Sender.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Session.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Application.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Device.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Internal.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/User.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Location.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/TelemetryTrace.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/TelemetryContext.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/PropertiesPlugin.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/InstrumentHooks.js","../node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/ajaxRecord.js","../node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/TraceParent.js","../node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/ajax.js","../node_modules/@microsoft/applicationinsights-common/src/ConnectionStringParser.ts","../node_modules/@microsoft/applicationinsights-common/src/Interfaces/IConfig.ts","../node_modules/@microsoft/applicationinsights-web/dist-esm/Initialization.js","../node_modules/@microsoft/applicationinsights-react-js/src/ReactPlugin.ts","common/TelemetryService.ts","store/AlertSnackbarStore.ts","store/Modems.ts","../node_modules/rxjs/src/internal/operators/startWith.ts","../node_modules/rxjs/src/internal/operators/merge.ts","../node_modules/ramda/es/internal/_isPlaceholder.js","../node_modules/ramda/es/internal/_curry1.js","../node_modules/ramda/es/internal/_curry2.js","../node_modules/ramda/es/internal/_curry3.js","../node_modules/ramda/es/internal/_isArray.js","../node_modules/ramda/es/internal/_isString.js","../node_modules/ramda/es/internal/_isArrayLike.js","../node_modules/ramda/es/internal/_xwrap.js","../node_modules/ramda/es/internal/_arity.js","../node_modules/ramda/es/bind.js","../node_modules/ramda/es/internal/_reduce.js","../node_modules/ramda/es/reduce.js","../node_modules/ramda/es/zip.js","../node_modules/ramda/es/internal/_isNumber.js","../node_modules/ramda/es/range.js","../node_modules/ramda/es/internal/_arrayFromIterator.js","../node_modules/ramda/es/internal/_includesWith.js","../node_modules/ramda/es/internal/_has.js","../node_modules/ramda/es/internal/_objectIs.js","../node_modules/ramda/es/internal/_isArguments.js","../node_modules/ramda/es/keys.js","../node_modules/ramda/es/type.js","../node_modules/ramda/es/internal/_equals.js","../node_modules/ramda/es/internal/_functionName.js","../node_modules/ramda/es/equals.js","../node_modules/ramda/es/internal/_includes.js","../node_modules/ramda/es/internal/_indexOf.js","../node_modules/ramda/es/internal/_Set.js","../node_modules/ramda/es/difference.js","../node_modules/rxjs/src/internal/OuterSubscriber.ts","../node_modules/rxjs/src/internal/InnerSubscriber.ts","../node_modules/rxjs/src/internal/util/subscribeToResult.ts","../node_modules/rxjs/src/internal/operators/withLatestFrom.ts","store/TransportApp.ts","store/Users.ts","store/WebSocketStore.ts","store/index.ts","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","../node_modules/@material-ui/icons/esm/AccountCircle.js","../node_modules/@azure/msal-react/src/MsalContext.ts","../node_modules/@azure/msal-react/src/utils/utilities.ts","../node_modules/@azure/msal-react/src/packageMetadata.ts","../node_modules/@azure/msal-react/src/MsalProvider.tsx","../node_modules/@azure/msal-react/src/hooks/useMsal.ts","../node_modules/@azure/msal-react/src/hooks/useAccount.ts","../node_modules/@azure/msal-react/src/hooks/useIsAuthenticated.ts","../node_modules/@azure/msal-react/src/components/MsalAuthenticationTemplate.tsx","../node_modules/@azure/msal-react/src/hooks/useMsalAuthentication.ts","hooks/useActiveUser.ts","hooks/useIsUserInRoles.ts","components/NavMenu.tsx","../node_modules/@material-ui/lab/esm/internal/svg-icons/SuccessOutlined.js","../node_modules/@material-ui/lab/esm/internal/svg-icons/ReportProblemOutlined.js","../node_modules/@material-ui/lab/esm/internal/svg-icons/ErrorOutline.js","../node_modules/@material-ui/lab/esm/internal/svg-icons/InfoOutlined.js","../node_modules/@material-ui/lab/esm/internal/svg-icons/Close.js","../node_modules/@material-ui/lab/esm/Alert/Alert.js","../node_modules/@material-ui/lab/esm/AlertTitle/AlertTitle.js","components/AlertSnackbar.tsx","../node_modules/uuid/dist/esm-browser/regex.js","../node_modules/uuid/dist/esm-browser/validate.js","../node_modules/ramda/es/last.js","../node_modules/ramda/es/nth.js","components/Layout.tsx","../node_modules/formik/node_modules/deepmerge/dist/es.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_assocIndexOf.js","../node_modules/lodash-es/_listCacheDelete.js","../node_modules/lodash-es/_listCacheGet.js","../node_modules/lodash-es/_listCacheHas.js","../node_modules/lodash-es/_listCacheSet.js","../node_modules/lodash-es/_ListCache.js","../node_modules/lodash-es/_stackClear.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/isFunction.js","../node_modules/lodash-es/_coreJsData.js","../node_modules/lodash-es/_isMasked.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_baseIsNative.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_getNative.js","../node_modules/lodash-es/_Map.js","../node_modules/lodash-es/_nativeCreate.js","../node_modules/lodash-es/_hashClear.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_hashGet.js","../node_modules/lodash-es/_hashHas.js","../node_modules/lodash-es/_hashSet.js","../node_modules/lodash-es/_Hash.js","../node_modules/lodash-es/_mapCacheClear.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_getMapData.js","../node_modules/lodash-es/_mapCacheDelete.js","../node_modules/lodash-es/_mapCacheGet.js","../node_modules/lodash-es/_mapCacheHas.js","../node_modules/lodash-es/_mapCacheSet.js","../node_modules/lodash-es/_MapCache.js","../node_modules/lodash-es/_stackSet.js","../node_modules/lodash-es/_Stack.js","../node_modules/lodash-es/_arrayEach.js","../node_modules/lodash-es/_defineProperty.js","../node_modules/lodash-es/_baseAssignValue.js","../node_modules/lodash-es/_assignValue.js","../node_modules/lodash-es/_copyObject.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_baseIsArguments.js","../node_modules/lodash-es/isArguments.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/isBuffer.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/_nodeUtil.js","../node_modules/lodash-es/isTypedArray.js","../node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/_nativeKeys.js","../node_modules/lodash-es/_baseKeys.js","../node_modules/lodash-es/isArrayLike.js","../node_modules/lodash-es/keys.js","../node_modules/lodash-es/_baseAssign.js","../node_modules/lodash-es/_nativeKeysIn.js","../node_modules/lodash-es/_baseKeysIn.js","../node_modules/lodash-es/keysIn.js","../node_modules/lodash-es/_baseAssignIn.js","../node_modules/lodash-es/_cloneBuffer.js","../node_modules/lodash-es/_copyArray.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_getSymbols.js","../node_modules/lodash-es/_copySymbols.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/_getSymbolsIn.js","../node_modules/lodash-es/_copySymbolsIn.js","../node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/lodash-es/_getAllKeys.js","../node_modules/lodash-es/_getAllKeysIn.js","../node_modules/lodash-es/_DataView.js","../node_modules/lodash-es/_Promise.js","../node_modules/lodash-es/_Set.js","../node_modules/lodash-es/_WeakMap.js","../node_modules/lodash-es/_getTag.js","../node_modules/lodash-es/_initCloneArray.js","../node_modules/lodash-es/_Uint8Array.js","../node_modules/lodash-es/_cloneArrayBuffer.js","../node_modules/lodash-es/_cloneDataView.js","../node_modules/lodash-es/_cloneRegExp.js","../node_modules/lodash-es/_cloneSymbol.js","../node_modules/lodash-es/_cloneTypedArray.js","../node_modules/lodash-es/_initCloneByTag.js","../node_modules/lodash-es/_baseCreate.js","../node_modules/lodash-es/_initCloneObject.js","../node_modules/lodash-es/_baseIsMap.js","../node_modules/lodash-es/isMap.js","../node_modules/lodash-es/_baseIsSet.js","../node_modules/lodash-es/isSet.js","../node_modules/lodash-es/_baseClone.js","../node_modules/lodash-es/clone.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/toPath.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/lodash-es/cloneDeep.js","../node_modules/formik/src/utils.ts","../node_modules/formik/src/FormikContext.tsx","../node_modules/formik/src/Formik.tsx","../node_modules/formik/src/Field.tsx","../node_modules/formik/src/Form.tsx","../node_modules/formik/src/FieldArray.tsx","../node_modules/formik-material-ui/src/TextField.tsx","../node_modules/formik-material-ui/src/Checkbox.tsx","../node_modules/formik-material-ui/src/Select.tsx","../node_modules/nanoclone/src/index.js","../node_modules/yup/es/util/printValue.js","../node_modules/yup/es/locale.js","../node_modules/yup/es/util/isSchema.js","../node_modules/yup/es/Condition.js","../node_modules/yup/es/util/toArray.js","../node_modules/yup/es/ValidationError.js","../node_modules/yup/es/util/runTests.js","../node_modules/yup/es/Reference.js","../node_modules/yup/es/util/createValidation.js","../node_modules/yup/es/util/reach.js","../node_modules/yup/es/util/ReferenceSet.js","../node_modules/yup/es/schema.js","../node_modules/yup/es/mixed.js","../node_modules/yup/es/util/isAbsent.js","../node_modules/yup/es/boolean.js","../node_modules/yup/es/string.js","../node_modules/yup/es/util/isodate.js","../node_modules/yup/es/date.js","../node_modules/yup/es/util/sortByKeyOrder.js","../node_modules/yup/es/object.js","../node_modules/yup/es/util/sortFields.js","common/Shared.ts","common/CenteredLoader.tsx","components/OrganizationForm.tsx","components/OrganizationUsers.tsx","components/Subgroups.tsx","common/TabPanel.tsx","components/Sites.tsx","components/EmailList.tsx","components/Modems.tsx","components/OrganizationDetails.tsx","components/Organizations.tsx","common/ValuePickerControl.tsx","components/UserDetailsPage.tsx","components/SubgroupForm.tsx","components/SubgroupUsers.tsx","components/SubgroupModems.tsx","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/v4.js","components/DebounceButton.tsx","components/ModemConnectionButton.tsx","../node_modules/react-tooltip/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/react-tooltip/node_modules/uuid/dist/esm-browser/bytesToUuid.js","../node_modules/react-tooltip/node_modules/uuid/dist/esm-browser/v4.js","../node_modules/react-tooltip/src/constant.js","../node_modules/react-tooltip/src/decorators/staticMethods.js","../node_modules/react-tooltip/src/decorators/customEvent.js","../node_modules/react-tooltip/src/decorators/bodyMode.js","../node_modules/react-tooltip/src/utils/getPosition.js","../node_modules/react-tooltip/src/utils/getTipContent.js","../node_modules/react-tooltip/src/utils/aria.js","../node_modules/react-tooltip/src/utils/nodeListToArray.js","../node_modules/react-tooltip/src/decorators/defaultStyles.js","../node_modules/react-tooltip/src/decorators/styler.js","../node_modules/react-tooltip/src/decorators/trackRemoval.js","../node_modules/react-tooltip/src/index.js","../node_modules/react-tooltip/src/decorators/windowListener.js","../node_modules/react-tooltip/src/decorators/isCapture.js","../node_modules/react-tooltip/src/decorators/getEffect.js","../node_modules/react-tooltip/src/utils/uuid.js","components/UpdateHelper.tsx","../node_modules/@material-ui/icons/esm/VisibilityOff.js","../node_modules/@material-ui/icons/esm/Visibility.js","components/ModemPassword.tsx","common/SharedUI.tsx","components/ModemDetail.tsx","../node_modules/@material-ui/lab/esm/internal/svg-icons/ArrowDropDown.js","../node_modules/@material-ui/lab/esm/useAutocomplete/useAutocomplete.js","../node_modules/@material-ui/lab/esm/Autocomplete/Autocomplete.js","../node_modules/@material-ui/icons/esm/CheckBoxOutlineBlankOutlined.js","../node_modules/@material-ui/icons/esm/CheckBox.js","components/SiteForm.tsx","components/SiteDetail.tsx","../node_modules/ramda/es/internal/_checkForMethod.js","../node_modules/ramda/es/internal/_clone.js","../node_modules/ramda/es/internal/_cloneRegExp.js","../node_modules/ramda/es/internal/_curryN.js","../node_modules/ramda/es/internal/_dispatchable.js","../node_modules/ramda/es/internal/_isTransformer.js","../node_modules/ramda/es/internal/_xfBase.js","../node_modules/ramda/es/internal/_xreduceBy.js","../node_modules/ramda/es/reduceBy.js","../node_modules/ramda/es/groupBy.js","../node_modules/ramda/es/sortBy.js","components/TransportApp.tsx","components/NotFound.tsx","components/AddEmailToOrg.tsx","components/AddMemberForm.tsx","App.tsx","components/Home.tsx","components/Users.tsx","components/AddModemToSubgroup.tsx","components/AddMemberToSubgroupForm.tsx","components/SubgroupDetails.tsx","registerServiceWorker.ts","index.tsx","store/configureStore.ts","../node_modules/@microsoft/applicationinsights-react-js/src/withAITracking.tsx"],"sourcesContent":["module.exports = require(\"core-js-pure/stable/array/is-array\");","module.exports = require(\"core-js-pure/stable/instance/bind\");","module.exports = require(\"core-js-pure/stable/instance/concat\");","module.exports = require(\"core-js-pure/stable/instance/every\");","module.exports = require(\"core-js-pure/stable/instance/filter\");","module.exports = require(\"core-js-pure/stable/instance/find-index\");","module.exports = require(\"core-js-pure/stable/instance/for-each\");","module.exports = require(\"core-js-pure/stable/instance/index-of\");","module.exports = require(\"core-js-pure/stable/instance/map\");","module.exports = require(\"core-js-pure/stable/instance/reduce\");","module.exports = require(\"core-js-pure/stable/instance/slice\");","module.exports = require(\"core-js-pure/stable/instance/some\");","module.exports = require(\"core-js-pure/stable/instance/sort\");","module.exports = require(\"core-js-pure/stable/instance/splice\");","module.exports = require(\"core-js-pure/stable/instance/starts-with\");","module.exports = require(\"core-js-pure/stable/instance/trim\");","module.exports = require(\"core-js-pure/stable/object/assign\");","module.exports = require(\"core-js-pure/stable/object/define-properties\");","module.exports = require(\"core-js-pure/stable/object/define-property\");","module.exports = require(\"core-js-pure/stable/object/entries\");","module.exports = require(\"core-js-pure/stable/object/get-own-property-descriptor\");","module.exports = require(\"core-js-pure/stable/object/get-own-property-descriptors\");","module.exports = require(\"core-js-pure/stable/object/get-own-property-symbols\");","module.exports = require(\"core-js-pure/stable/object/keys\");","module.exports = require(\"core-js-pure/stable/object/values\");","module.exports = require(\"core-js-pure/stable/parse-int\");","module.exports = require(\"core-js-pure/stable/reflect/construct\");","module.exports = require(\"core-js-pure/stable/set-timeout\");","module.exports = require(\"core-js-pure/features/array/from\");","module.exports = require(\"core-js-pure/features/array/is-array\");","module.exports = require(\"core-js-pure/features/get-iterator\");","module.exports = require(\"core-js-pure/features/instance/index-of\");","module.exports = require(\"core-js-pure/features/instance/slice\");","module.exports = require(\"core-js-pure/features/is-iterable\");","module.exports = require(\"core-js-pure/features/object/assign\");","module.exports = require(\"core-js-pure/features/object/create\");","module.exports = require(\"core-js-pure/features/object/define-property\");","module.exports = require(\"core-js-pure/features/object/get-own-property-symbols\");","module.exports = require(\"core-js-pure/features/object/get-prototype-of\");","module.exports = require(\"core-js-pure/features/object/keys\");","module.exports = require(\"core-js-pure/features/object/set-prototype-of\");","module.exports = require(\"core-js-pure/features/symbol\");","module.exports = require(\"core-js-pure/features/symbol/iterator\");","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var _Array$isArray = require(\"@babel/runtime-corejs3/core-js/array/is-array\");\n\nfunction _arrayWithHoles(arr) {\n if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","var _Array$isArray = require(\"@babel/runtime-corejs3/core-js/array/is-array\");\n\nvar arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (_Array$isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","var _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n\n _Object$defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","var _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n _Object$defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","var _Object$assign = require(\"@babel/runtime-corejs3/core-js/object/assign\");\n\nfunction _extends() {\n module.exports = _extends = _Object$assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","var _Object$getPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/get-prototype-of\");\n\nvar _Object$setPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/set-prototype-of\");\n\nfunction _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || _Object$getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var _Object$create = require(\"@babel/runtime-corejs3/core-js/object/create\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = _Object$create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","var _Array$from = require(\"@babel/runtime-corejs3/core-js/array/from\");\n\nvar _isIterable = require(\"@babel/runtime-corejs3/core-js/is-iterable\");\n\nvar _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nfunction _iterableToArray(iter) {\n if (typeof _Symbol !== \"undefined\" && _isIterable(Object(iter))) return _Array$from(iter);\n}\n\nmodule.exports = _iterableToArray;","var _getIterator = require(\"@babel/runtime-corejs3/core-js/get-iterator\");\n\nvar _isIterable = require(\"@babel/runtime-corejs3/core-js/is-iterable\");\n\nvar _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof _Symbol === \"undefined\" || !_isIterable(Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = _getIterator(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","var _indexOfInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/index-of\");\n\nvar _Object$getOwnPropertySymbols = require(\"@babel/runtime-corejs3/core-js/object/get-own-property-symbols\");\n\nvar objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (_Object$getOwnPropertySymbols) {\n var sourceSymbolKeys = _Object$getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (_indexOfInstanceProperty(excluded).call(excluded, key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;","var _indexOfInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/index-of\");\n\nvar _Object$keys = require(\"@babel/runtime-corejs3/core-js/object/keys\");\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n\n var sourceKeys = _Object$keys(source);\n\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (_indexOfInstanceProperty(excluded).call(excluded, key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","var _typeof = require(\"@babel/runtime-corejs3/helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","var _Object$setPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/set-prototype-of\");\n\nfunction _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","var _Symbol$iterator = require(\"@babel/runtime-corejs3/core-js/symbol/iterator\");\n\nvar _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof _Symbol === \"function\" && typeof _Symbol$iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","var _Array$from = require(\"@babel/runtime-corejs3/core-js/array/from\");\n\nvar _sliceInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/slice\");\n\nvar arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n var _context;\n\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n\n var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return _Array$from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nimport Paper from '../Paper';\nexport var styles = function styles(theme) {\n var backgroundColorDefault = theme.palette.type === 'light' ? theme.palette.grey[100] : theme.palette.grey[900];\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n boxSizing: 'border-box',\n // Prevent padding issue with the Modal and fixed positioned AppBar.\n zIndex: theme.zIndex.appBar,\n flexShrink: 0\n },\n\n /* Styles applied to the root element if `position=\"fixed\"`. */\n positionFixed: {\n position: 'fixed',\n top: 0,\n left: 'auto',\n right: 0,\n '@media print': {\n // Prevent the app bar to be visible on each printed page.\n position: 'absolute'\n }\n },\n\n /* Styles applied to the root element if `position=\"absolute\"`. */\n positionAbsolute: {\n position: 'absolute',\n top: 0,\n left: 'auto',\n right: 0\n },\n\n /* Styles applied to the root element if `position=\"sticky\"`. */\n positionSticky: {\n // ⚠️ sticky is not supported by IE 11.\n position: 'sticky',\n top: 0,\n left: 'auto',\n right: 0\n },\n\n /* Styles applied to the root element if `position=\"static\"`. */\n positionStatic: {\n position: 'static'\n },\n\n /* Styles applied to the root element if `position=\"relative\"`. */\n positionRelative: {\n position: 'relative'\n },\n\n /* Styles applied to the root element if `color=\"default\"`. */\n colorDefault: {\n backgroundColor: backgroundColorDefault,\n color: theme.palette.getContrastText(backgroundColorDefault)\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n backgroundColor: theme.palette.secondary.main,\n color: theme.palette.secondary.contrastText\n },\n\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit'\n },\n\n /* Styles applied to the root element if `color=\"transparent\"`. */\n colorTransparent: {\n backgroundColor: 'transparent',\n color: 'inherit'\n }\n };\n};\nvar AppBar = /*#__PURE__*/React.forwardRef(function AppBar(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'primary' : _props$color,\n _props$position = props.position,\n position = _props$position === void 0 ? 'fixed' : _props$position,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"color\", \"position\"]);\n\n return /*#__PURE__*/React.createElement(Paper, _extends({\n square: true,\n component: \"header\",\n elevation: 4,\n className: clsx(classes.root, classes[\"position\".concat(capitalize(position))], classes[\"color\".concat(capitalize(color))], className, position === 'fixed' && 'mui-fixed'),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AppBar.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary', 'transparent']),\n\n /**\n * The positioning type. The behavior of the different options is described\n * [in the MDN web docs](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning).\n * Note: `sticky` is not universally supported and will fall back to `static` when unavailable.\n */\n position: PropTypes.oneOf(['absolute', 'fixed', 'relative', 'static', 'sticky'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiAppBar'\n})(AppBar);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Fade from '../Fade';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n // Improve scrollable dialog support.\n zIndex: -1,\n position: 'fixed',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n right: 0,\n bottom: 0,\n top: 0,\n left: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n WebkitTapHighlightColor: 'transparent'\n },\n\n /* Styles applied to the root element if `invisible={true}`. */\n invisible: {\n backgroundColor: 'transparent'\n }\n};\nvar Backdrop = /*#__PURE__*/React.forwardRef(function Backdrop(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$invisible = props.invisible,\n invisible = _props$invisible === void 0 ? false : _props$invisible,\n open = props.open,\n transitionDuration = props.transitionDuration,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Fade : _props$TransitionComp,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"invisible\", \"open\", \"transitionDuration\", \"TransitionComponent\"]);\n\n return /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n in: open,\n timeout: transitionDuration\n }, other), /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(classes.root, className, invisible && classes.invisible),\n \"aria-hidden\": true,\n ref: ref\n }, children));\n});\nprocess.env.NODE_ENV !== \"production\" ? Backdrop.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the backdrop is invisible.\n * It can be used when rendering a popover or a custom select component.\n */\n invisible: PropTypes.bool,\n\n /**\n * If `true`, the backdrop is open.\n */\n open: PropTypes.bool.isRequired,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiBackdrop'\n})(Backdrop);","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport merge from './merge';\n\nfunction omit(input, fields) {\n var output = {};\n Object.keys(input).forEach(function (prop) {\n if (fields.indexOf(prop) === -1) {\n output[prop] = input[prop];\n }\n });\n return output;\n}\n\nfunction css(styleFunction) {\n var newStyleFunction = function newStyleFunction(props) {\n var output = styleFunction(props);\n\n if (props.css) {\n return _extends({}, merge(output, styleFunction(_extends({\n theme: props.theme\n }, props.css))), omit(props.css, [styleFunction.filterProps]));\n }\n\n return output;\n };\n\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n css: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['css'].concat(_toConsumableArray(styleFunction.filterProps));\n return newStyleFunction;\n}\n\nexport default css;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport merge from './merge';\n\nfunction compose() {\n for (var _len = arguments.length, styles = new Array(_len), _key = 0; _key < _len; _key++) {\n styles[_key] = arguments[_key];\n }\n\n var fn = function fn(props) {\n return styles.reduce(function (acc, style) {\n var output = style(props);\n\n if (output) {\n return merge(acc, output);\n }\n\n return acc;\n }, {});\n }; // Alternative approach that doesn't yield any performance gain.\n // const handlers = styles.reduce((acc, style) => {\n // style.filterProps.forEach(prop => {\n // acc[prop] = style;\n // });\n // return acc;\n // }, {});\n // const fn = props => {\n // return Object.keys(props).reduce((acc, prop) => {\n // if (handlers[prop]) {\n // return merge(acc, handlers[prop](props));\n // }\n // return acc;\n // }, {});\n // };\n\n\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce(function (acc, style) {\n return _extends(acc, style.propTypes);\n }, {}) : {};\n fn.filterProps = styles.reduce(function (acc, style) {\n return acc.concat(style.filterProps);\n }, []);\n return fn;\n}\n\nexport default compose;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\n\nfunction getPath(obj, path) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n return path.split('.').reduce(function (acc, item) {\n return acc && acc[item] ? acc[item] : null;\n }, obj);\n}\n\nfunction style(options) {\n var prop = options.prop,\n _options$cssProperty = options.cssProperty,\n cssProperty = _options$cssProperty === void 0 ? options.prop : _options$cssProperty,\n themeKey = options.themeKey,\n transform = options.transform;\n\n var fn = function fn(props) {\n if (props[prop] == null) {\n return null;\n }\n\n var propValue = props[prop];\n var theme = props.theme;\n var themeMapping = getPath(theme, themeKey) || {};\n\n var styleFromPropValue = function styleFromPropValue(propValueFinal) {\n var value;\n\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || propValueFinal;\n } else {\n value = getPath(themeMapping, propValueFinal) || propValueFinal;\n\n if (transform) {\n value = transform(value);\n }\n }\n\n if (cssProperty === false) {\n return value;\n }\n\n return _defineProperty({}, cssProperty, value);\n };\n\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n\n fn.propTypes = process.env.NODE_ENV !== 'production' ? _defineProperty({}, prop, responsivePropType) : {};\n fn.filterProps = [prop];\n return fn;\n}\n\nexport default style;","import style from './style';\nimport compose from './compose';\n\nfunction getBorder(value) {\n if (typeof value !== 'number') {\n return value;\n }\n\n return \"\".concat(value, \"px solid\");\n}\n\nexport var border = style({\n prop: 'border',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderTop = style({\n prop: 'borderTop',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderRight = style({\n prop: 'borderRight',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderBottom = style({\n prop: 'borderBottom',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderLeft = style({\n prop: 'borderLeft',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderColor = style({\n prop: 'borderColor',\n themeKey: 'palette'\n});\nexport var borderRadius = style({\n prop: 'borderRadius',\n themeKey: 'shape'\n});\nvar borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderRadius);\nexport default borders;","import style from './style';\nimport compose from './compose';\nexport var displayPrint = style({\n prop: 'displayPrint',\n cssProperty: false,\n transform: function transform(value) {\n return {\n '@media print': {\n display: value\n }\n };\n }\n});\nexport var displayRaw = style({\n prop: 'display'\n});\nexport var overflow = style({\n prop: 'overflow'\n});\nexport var textOverflow = style({\n prop: 'textOverflow'\n});\nexport var visibility = style({\n prop: 'visibility'\n});\nexport var whiteSpace = style({\n prop: 'whiteSpace'\n});\nexport default compose(displayPrint, displayRaw, overflow, textOverflow, visibility, whiteSpace);","import style from './style';\nimport compose from './compose';\nexport var flexBasis = style({\n prop: 'flexBasis'\n});\nexport var flexDirection = style({\n prop: 'flexDirection'\n});\nexport var flexWrap = style({\n prop: 'flexWrap'\n});\nexport var justifyContent = style({\n prop: 'justifyContent'\n});\nexport var alignItems = style({\n prop: 'alignItems'\n});\nexport var alignContent = style({\n prop: 'alignContent'\n});\nexport var order = style({\n prop: 'order'\n});\nexport var flex = style({\n prop: 'flex'\n});\nexport var flexGrow = style({\n prop: 'flexGrow'\n});\nexport var flexShrink = style({\n prop: 'flexShrink'\n});\nexport var alignSelf = style({\n prop: 'alignSelf'\n});\nexport var justifyItems = style({\n prop: 'justifyItems'\n});\nexport var justifySelf = style({\n prop: 'justifySelf'\n});\nvar flexbox = compose(flexBasis, flexDirection, flexWrap, justifyContent, alignItems, alignContent, order, flex, flexGrow, flexShrink, alignSelf, justifyItems, justifySelf);\nexport default flexbox;","import style from './style';\nimport compose from './compose';\nexport var gridGap = style({\n prop: 'gridGap'\n});\nexport var gridColumnGap = style({\n prop: 'gridColumnGap'\n});\nexport var gridRowGap = style({\n prop: 'gridRowGap'\n});\nexport var gridColumn = style({\n prop: 'gridColumn'\n});\nexport var gridRow = style({\n prop: 'gridRow'\n});\nexport var gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport var gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport var gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport var gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport var gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport var gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport var gridArea = style({\n prop: 'gridArea'\n});\nvar grid = compose(gridGap, gridColumnGap, gridRowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport var position = style({\n prop: 'position'\n});\nexport var zIndex = style({\n prop: 'zIndex',\n themeKey: 'zIndex'\n});\nexport var top = style({\n prop: 'top'\n});\nexport var right = style({\n prop: 'right'\n});\nexport var bottom = style({\n prop: 'bottom'\n});\nexport var left = style({\n prop: 'left'\n});\nexport default compose(position, zIndex, top, right, bottom, left);","import style from './style';\nimport compose from './compose';\nexport var color = style({\n prop: 'color',\n themeKey: 'palette'\n});\nexport var bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette'\n});\nvar palette = compose(color, bgcolor);\nexport default palette;","import style from './style';\nvar boxShadow = style({\n prop: 'boxShadow',\n themeKey: 'shadows'\n});\nexport default boxShadow;","import style from './style';\nimport compose from './compose';\n\nfunction transform(value) {\n return value <= 1 ? \"\".concat(value * 100, \"%\") : value;\n}\n\nexport var width = style({\n prop: 'width',\n transform: transform\n});\nexport var maxWidth = style({\n prop: 'maxWidth',\n transform: transform\n});\nexport var minWidth = style({\n prop: 'minWidth',\n transform: transform\n});\nexport var height = style({\n prop: 'height',\n transform: transform\n});\nexport var maxHeight = style({\n prop: 'maxHeight',\n transform: transform\n});\nexport var minHeight = style({\n prop: 'minHeight',\n transform: transform\n});\nexport var sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: transform\n});\nexport var sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: transform\n});\nexport var boxSizing = style({\n prop: 'boxSizing'\n});\nvar sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import style from './style';\nimport compose from './compose';\nexport var fontFamily = style({\n prop: 'fontFamily',\n themeKey: 'typography'\n});\nexport var fontSize = style({\n prop: 'fontSize',\n themeKey: 'typography'\n});\nexport var fontStyle = style({\n prop: 'fontStyle',\n themeKey: 'typography'\n});\nexport var fontWeight = style({\n prop: 'fontWeight',\n themeKey: 'typography'\n});\nexport var letterSpacing = style({\n prop: 'letterSpacing'\n});\nexport var lineHeight = style({\n prop: 'lineHeight'\n});\nexport var textAlign = style({\n prop: 'textAlign'\n});\nvar typography = compose(fontFamily, fontSize, fontStyle, fontWeight, letterSpacing, lineHeight, textAlign);\nexport default typography;","import { borders, compose, display, flexbox, grid, palette, positions, shadows, sizing, spacing, typography, css } from '@material-ui/system';\nimport styled from '../styles/styled';\nexport var styleFunction = css(compose(borders, display, flexbox, grid, positions, palette, shadows, sizing, spacing, typography));\n/**\n * @ignore - do not document.\n */\n\nvar Box = styled('div')(styleFunction, {\n name: 'MuiBox'\n});\nexport default Box;","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport useEventCallback from '../utils/useEventCallback';\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * @ignore - internal component.\n */\n\nfunction Ripple(props) {\n var classes = props.classes,\n _props$pulsate = props.pulsate,\n pulsate = _props$pulsate === void 0 ? false : _props$pulsate,\n rippleX = props.rippleX,\n rippleY = props.rippleY,\n rippleSize = props.rippleSize,\n inProp = props.in,\n _props$onExited = props.onExited,\n onExited = _props$onExited === void 0 ? function () {} : _props$onExited,\n timeout = props.timeout;\n\n var _React$useState = React.useState(false),\n leaving = _React$useState[0],\n setLeaving = _React$useState[1];\n\n var rippleClassName = clsx(classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n var rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n var childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n var handleExited = useEventCallback(onExited); // Ripple is used for user feedback (e.g. click or press) so we want to apply styles with the highest priority\n\n useEnhancedEffect(function () {\n if (!inProp) {\n // react-transition-group#onExit\n setLeaving(true); // react-transition-group#onExited\n\n var timeoutId = setTimeout(handleExited, timeout);\n return function () {\n clearTimeout(timeoutId);\n };\n }\n\n return undefined;\n }, [handleExited, inProp, timeout]);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: rippleClassName,\n style: rippleStyles\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: childClassName\n }));\n}\n\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Ripple from './Ripple';\nvar DURATION = 550;\nexport var DELAY_RIPPLE = 80;\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n },\n\n /* Styles applied to the internal `Ripple` components `ripple` class. */\n ripple: {\n opacity: 0,\n position: 'absolute'\n },\n\n /* Styles applied to the internal `Ripple` components `rippleVisible` class. */\n rippleVisible: {\n opacity: 0.3,\n transform: 'scale(1)',\n animation: \"$enter \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n },\n\n /* Styles applied to the internal `Ripple` components `ripplePulsate` class. */\n ripplePulsate: {\n animationDuration: \"\".concat(theme.transitions.duration.shorter, \"ms\")\n },\n\n /* Styles applied to the internal `Ripple` components `child` class. */\n child: {\n opacity: 1,\n display: 'block',\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n backgroundColor: 'currentColor'\n },\n\n /* Styles applied to the internal `Ripple` components `childLeaving` class. */\n childLeaving: {\n opacity: 0,\n animation: \"$exit \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n },\n\n /* Styles applied to the internal `Ripple` components `childPulsate` class. */\n childPulsate: {\n position: 'absolute',\n left: 0,\n top: 0,\n animation: \"$pulsate 2500ms \".concat(theme.transitions.easing.easeInOut, \" 200ms infinite\")\n },\n '@keyframes enter': {\n '0%': {\n transform: 'scale(0)',\n opacity: 0.1\n },\n '100%': {\n transform: 'scale(1)',\n opacity: 0.3\n }\n },\n '@keyframes exit': {\n '0%': {\n opacity: 1\n },\n '100%': {\n opacity: 0\n }\n },\n '@keyframes pulsate': {\n '0%': {\n transform: 'scale(1)'\n },\n '50%': {\n transform: 'scale(0.92)'\n },\n '100%': {\n transform: 'scale(1)'\n }\n }\n };\n};\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\n\nvar TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(props, ref) {\n var _props$center = props.center,\n centerProp = _props$center === void 0 ? false : _props$center,\n classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"center\", \"classes\", \"className\"]);\n\n var _React$useState = React.useState([]),\n ripples = _React$useState[0],\n setRipples = _React$useState[1];\n\n var nextKey = React.useRef(0);\n var rippleCallback = React.useRef(null);\n React.useEffect(function () {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]); // Used to filter out mouse emulated events on mobile.\n\n var ignoringMouseDown = React.useRef(false); // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n\n var startTimer = React.useRef(null); // This is the hook called once the previous timeout is ready.\n\n var startTimerCommit = React.useRef(null);\n var container = React.useRef(null);\n React.useEffect(function () {\n return function () {\n clearTimeout(startTimer.current);\n };\n }, []);\n var startCommit = React.useCallback(function (params) {\n var pulsate = params.pulsate,\n rippleX = params.rippleX,\n rippleY = params.rippleY,\n rippleSize = params.rippleSize,\n cb = params.cb;\n setRipples(function (oldRipples) {\n return [].concat(_toConsumableArray(oldRipples), [/*#__PURE__*/React.createElement(Ripple, {\n key: nextKey.current,\n classes: classes,\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n })]);\n });\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n var start = React.useCallback(function () {\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var cb = arguments.length > 2 ? arguments[2] : undefined;\n var _options$pulsate = options.pulsate,\n pulsate = _options$pulsate === void 0 ? false : _options$pulsate,\n _options$center = options.center,\n center = _options$center === void 0 ? centerProp || options.pulsate : _options$center,\n _options$fakeElement = options.fakeElement,\n fakeElement = _options$fakeElement === void 0 ? false : _options$fakeElement;\n\n if (event.type === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n\n if (event.type === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n\n var element = fakeElement ? null : container.current;\n var rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n }; // Get the size of the ripple\n\n var rippleX;\n var rippleY;\n var rippleSize;\n\n if (center || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n var _ref = event.touches ? event.touches[0] : event,\n clientX = _ref.clientX,\n clientY = _ref.clientY;\n\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n\n if (center) {\n rippleSize = Math.sqrt((2 * Math.pow(rect.width, 2) + Math.pow(rect.height, 2)) / 3); // For some reason the animation is broken on Mobile Chrome if the size if even.\n\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n var sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n var sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(Math.pow(sizeX, 2) + Math.pow(sizeY, 2));\n } // Touche devices\n\n\n if (event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = function () {\n startCommit({\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize,\n cb: cb\n });\n }; // Delay the execution of the ripple effect.\n\n\n startTimer.current = setTimeout(function () {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n }, DELAY_RIPPLE); // We have to make a tradeoff with this value.\n }\n } else {\n startCommit({\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize,\n cb: cb\n });\n }\n }, [centerProp, startCommit]);\n var pulsate = React.useCallback(function () {\n start({}, {\n pulsate: true\n });\n }, [start]);\n var stop = React.useCallback(function (event, cb) {\n clearTimeout(startTimer.current); // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n\n if (event.type === 'touchend' && startTimerCommit.current) {\n event.persist();\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.current = setTimeout(function () {\n stop(event, cb);\n });\n return;\n }\n\n startTimerCommit.current = null;\n setRipples(function (oldRipples) {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, []);\n React.useImperativeHandle(ref, function () {\n return {\n pulsate: pulsate,\n start: start,\n stop: stop\n };\n }, [pulsate, start, stop]);\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n className: clsx(classes.root, className),\n ref: container\n }, other), /*#__PURE__*/React.createElement(TransitionGroup, {\n component: null,\n exit: true\n }, ripples));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n flip: false,\n name: 'MuiTouchRipple'\n})( /*#__PURE__*/React.memo(TouchRipple));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef, refType } from '@material-ui/utils';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport withStyles from '../styles/withStyles';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n '-moz-appearance': 'none',\n // Reset\n '-webkit-appearance': 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n\n },\n '&$disabled': {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n },\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Pseudo-class applied to the root element if keyboard focused. */\n focusVisible: {}\n};\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\n\nvar ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(props, ref) {\n var action = props.action,\n buttonRefProp = props.buttonRef,\n _props$centerRipple = props.centerRipple,\n centerRipple = _props$centerRipple === void 0 ? false : _props$centerRipple,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n component = _props$component === void 0 ? 'button' : _props$component,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableRipple = props.disableRipple,\n disableRipple = _props$disableRipple === void 0 ? false : _props$disableRipple,\n _props$disableTouchRi = props.disableTouchRipple,\n disableTouchRipple = _props$disableTouchRi === void 0 ? false : _props$disableTouchRi,\n _props$focusRipple = props.focusRipple,\n focusRipple = _props$focusRipple === void 0 ? false : _props$focusRipple,\n focusVisibleClassName = props.focusVisibleClassName,\n onBlur = props.onBlur,\n onClick = props.onClick,\n onFocus = props.onFocus,\n onFocusVisible = props.onFocusVisible,\n onKeyDown = props.onKeyDown,\n onKeyUp = props.onKeyUp,\n onMouseDown = props.onMouseDown,\n onMouseLeave = props.onMouseLeave,\n onMouseUp = props.onMouseUp,\n onTouchEnd = props.onTouchEnd,\n onTouchMove = props.onTouchMove,\n onTouchStart = props.onTouchStart,\n onDragLeave = props.onDragLeave,\n _props$tabIndex = props.tabIndex,\n tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n TouchRippleProps = props.TouchRippleProps,\n _props$type = props.type,\n type = _props$type === void 0 ? 'button' : _props$type,\n other = _objectWithoutProperties(props, [\"action\", \"buttonRef\", \"centerRipple\", \"children\", \"classes\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"onBlur\", \"onClick\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"onDragLeave\", \"tabIndex\", \"TouchRippleProps\", \"type\"]);\n\n var buttonRef = React.useRef(null);\n\n function getButtonNode() {\n // #StrictMode ready\n return ReactDOM.findDOMNode(buttonRef.current);\n }\n\n var rippleRef = React.useRef(null);\n\n var _React$useState = React.useState(false),\n focusVisible = _React$useState[0],\n setFocusVisible = _React$useState[1];\n\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n\n var _useIsFocusVisible = useIsFocusVisible(),\n isFocusVisible = _useIsFocusVisible.isFocusVisible,\n onBlurVisible = _useIsFocusVisible.onBlurVisible,\n focusVisibleRef = _useIsFocusVisible.ref;\n\n React.useImperativeHandle(action, function () {\n return {\n focusVisible: function focusVisible() {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n };\n }, []);\n React.useEffect(function () {\n if (focusVisible && focusRipple && !disableRipple) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible]);\n\n function useRippleHandler(rippleAction, eventCallback) {\n var skipRippleAction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : disableTouchRipple;\n return useEventCallback(function (event) {\n if (eventCallback) {\n eventCallback(event);\n }\n\n var ignore = skipRippleAction;\n\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n\n return true;\n });\n }\n\n var handleMouseDown = useRippleHandler('start', onMouseDown);\n var handleDragLeave = useRippleHandler('stop', onDragLeave);\n var handleMouseUp = useRippleHandler('stop', onMouseUp);\n var handleMouseLeave = useRippleHandler('stop', function (event) {\n if (focusVisible) {\n event.preventDefault();\n }\n\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n var handleTouchStart = useRippleHandler('start', onTouchStart);\n var handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n var handleTouchMove = useRippleHandler('stop', onTouchMove);\n var handleBlur = useRippleHandler('stop', function (event) {\n if (focusVisible) {\n onBlurVisible(event);\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n var handleFocus = useEventCallback(function (event) {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n\n if (isFocusVisible(event)) {\n setFocusVisible(true);\n\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n\n if (onFocus) {\n onFocus(event);\n }\n });\n\n var isNonNativeButton = function isNonNativeButton() {\n var button = getButtonNode();\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n /**\n * IE 11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n\n\n var keydownRef = React.useRef(false);\n var handleKeyDown = useEventCallback(function (event) {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n event.persist();\n rippleRef.current.stop(event, function () {\n rippleRef.current.start(event);\n });\n }\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n } // Keyboard accessibility for non interactive elements\n\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n\n if (onClick) {\n onClick(event);\n }\n }\n });\n var handleKeyUp = useEventCallback(function (event) {\n // calling preventDefault in keyUp on a \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import React from 'react';\nexport default React.createContext(null);","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Clear');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM17 13l-5 5-5-5h3V9h4v4h3z\"\n}), 'CloudDownload');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4l6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2h7zm-1 7h5.5L14 6.5V12z\"\n}), 'FileCopy');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\"\n}), 'FilterList');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z\"\n}), 'Help');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'KeyboardArrowRight');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z\"\n}), 'Print');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 13H5v-2h14v2z\"\n}), 'Remove');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n}), 'Search');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 18h5V5h-5v13zm-6 0h5V5H4v13zM16 5v13h5V5h-5z\"\n}), 'ViewColumn');\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _utils.createSvgIcon;\n }\n});\n\nvar _utils = require(\"@material-ui/core/utils\");","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@material-ui/utils';\nimport createGenerateClassName from '../createGenerateClassName';\nimport { create } from 'jss';\nimport jssPreset from '../jssPreset'; // Default JSS instance.\n\nvar jss = create(jssPreset()); // Use a singleton or the provided one by the context.\n//\n// The counter-based approach doesn't tolerate any mistake.\n// It's much safer to use the same counter everywhere.\n\nvar generateClassName = createGenerateClassName(); // Exported for test purposes\n\nexport var sheetsManager = new Map();\nvar defaultOptions = {\n disableGeneration: false,\n generateClassName: generateClassName,\n jss: jss,\n sheetsCache: null,\n sheetsManager: sheetsManager,\n sheetsRegistry: null\n};\nexport var StylesContext = React.createContext(defaultOptions);\n\nif (process.env.NODE_ENV !== 'production') {\n StylesContext.displayName = 'StylesContext';\n}\n\nvar injectFirstNode;\nexport default function StylesProvider(props) {\n var children = props.children,\n _props$injectFirst = props.injectFirst,\n injectFirst = _props$injectFirst === void 0 ? false : _props$injectFirst,\n _props$disableGenerat = props.disableGeneration,\n disableGeneration = _props$disableGenerat === void 0 ? false : _props$disableGenerat,\n localOptions = _objectWithoutProperties(props, [\"children\", \"injectFirst\", \"disableGeneration\"]);\n\n var outerOptions = React.useContext(StylesContext);\n\n var context = _extends({}, outerOptions, {\n disableGeneration: disableGeneration\n }, localOptions);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof window === 'undefined' && !context.sheetsManager) {\n console.error('Material-UI: You need to use the ServerStyleSheets API when rendering on the server.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (context.jss.options.insertionPoint && injectFirst) {\n console.error('Material-UI: You cannot use a custom insertionPoint and at the same time.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (injectFirst && localOptions.jss) {\n console.error('Material-UI: You cannot use the jss and injectFirst props at the same time.');\n }\n }\n\n if (!context.jss.options.insertionPoint && injectFirst && typeof window !== 'undefined') {\n if (!injectFirstNode) {\n var head = document.head;\n injectFirstNode = document.createComment('mui-inject-first');\n head.insertBefore(injectFirstNode, head.firstChild);\n }\n\n context.jss = create({\n plugins: jssPreset().plugins,\n insertionPoint: injectFirstNode\n });\n }\n\n return /*#__PURE__*/React.createElement(StylesContext.Provider, {\n value: context\n }, children);\n}\nprocess.env.NODE_ENV !== \"production\" ? StylesProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node.isRequired,\n\n /**\n * You can disable the generation of the styles with this option.\n * It can be useful when traversing the React tree outside of the HTML\n * rendering step on the server.\n * Let's say you are using react-apollo to extract all\n * the queries made by the interface server-side - you can significantly speed up the traversal with this prop.\n */\n disableGeneration: PropTypes.bool,\n\n /**\n * JSS's class name generator.\n */\n generateClassName: PropTypes.func,\n\n /**\n * By default, the styles are injected last in the element of the page.\n * As a result, they gain more specificity than any other style sheet.\n * If you want to override Material-UI's styles, set this prop.\n */\n injectFirst: PropTypes.bool,\n\n /**\n * JSS's instance.\n */\n jss: PropTypes.object,\n\n /**\n * @ignore\n */\n serverGenerateClassName: PropTypes.func,\n\n /**\n * @ignore\n *\n * Beta feature.\n *\n * Cache for the sheets.\n */\n sheetsCache: PropTypes.object,\n\n /**\n * @ignore\n *\n * The sheetsManager is used to deduplicate style sheet injection in the page.\n * It's deduplicating using the (theme, styles) couple.\n * On the server, you should provide a new instance for each request.\n */\n sheetsManager: PropTypes.object,\n\n /**\n * @ignore\n *\n * Collect the sheets.\n */\n sheetsRegistry: PropTypes.object\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? StylesProvider.propTypes = exactProp(StylesProvider.propTypes) : void 0;\n}","var hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","import nested from '../ThemeProvider/nested';\n/**\n * This is the list of the style rule name we use as drop in replacement for the built-in\n * pseudo classes (:checked, :disabled, :focused, etc.).\n *\n * Why do they exist in the first place?\n * These classes are used at a specificity of 2.\n * It allows them to override previously definied styles as well as\n * being untouched by simple user overrides.\n */\n\nvar pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected']; // Returns a function which generates unique class names based on counters.\n// When new generator function is created, rule counter is reset.\n// We need to reset the rule counter for SSR for each request.\n//\n// It's inspired by\n// https://github.com/cssinjs/jss/blob/4e6a05dd3f7b6572fdd3ab216861d9e446c20331/src/utils/createGenerateClassName.js\n\nexport default function createGenerateClassName() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _options$disableGloba = options.disableGlobal,\n disableGlobal = _options$disableGloba === void 0 ? false : _options$disableGloba,\n _options$productionPr = options.productionPrefix,\n productionPrefix = _options$productionPr === void 0 ? 'jss' : _options$productionPr,\n _options$seed = options.seed,\n seed = _options$seed === void 0 ? '' : _options$seed;\n var seedPrefix = seed === '' ? '' : \"\".concat(seed, \"-\");\n var ruleCounter = 0;\n\n var getNextCounterId = function getNextCounterId() {\n ruleCounter += 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (ruleCounter >= 1e10) {\n console.warn(['Material-UI: You might have a memory leak.', 'The ruleCounter is not supposed to grow that much.'].join(''));\n }\n }\n\n return ruleCounter;\n };\n\n return function (rule, styleSheet) {\n var name = styleSheet.options.name; // Is a global static MUI style?\n\n if (name && name.indexOf('Mui') === 0 && !styleSheet.options.link && !disableGlobal) {\n // We can use a shorthand class name, we never use the keys to style the components.\n if (pseudoClasses.indexOf(rule.key) !== -1) {\n return \"Mui-\".concat(rule.key);\n }\n\n var prefix = \"\".concat(seedPrefix).concat(name, \"-\").concat(rule.key);\n\n if (!styleSheet.options.theme[nested] || seed !== '') {\n return prefix;\n }\n\n return \"\".concat(prefix, \"-\").concat(getNextCounterId());\n }\n\n if (process.env.NODE_ENV === 'production') {\n return \"\".concat(seedPrefix).concat(productionPrefix).concat(getNextCounterId());\n }\n\n var suffix = \"\".concat(rule.key, \"-\").concat(getNextCounterId()); // Help with debuggability.\n\n if (styleSheet.options.classNamePrefix) {\n return \"\".concat(seedPrefix).concat(styleSheet.options.classNamePrefix, \"-\").concat(suffix);\n }\n\n return \"\".concat(seedPrefix).concat(suffix);\n };\n}","/* eslint-disable no-restricted-syntax */\nexport default function getThemeProps(params) {\n var theme = params.theme,\n name = params.name,\n props = params.props;\n\n if (!theme || !theme.props || !theme.props[name]) {\n return props;\n } // Resolve default props, code borrow from React source.\n // https://github.com/facebook/react/blob/15a8f031838a553e41c0b66eb1bcf1da8448104d/packages/react/src/ReactElement.js#L221\n\n\n var defaultProps = theme.props[name];\n var propName;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n\n return props;\n}","import warning from 'tiny-warning';\nimport { createRule } from 'jss';\n\nvar now = Date.now();\nvar fnValuesNs = \"fnValues\" + now;\nvar fnRuleNs = \"fnStyle\" + ++now;\n\nvar functionPlugin = function functionPlugin() {\n return {\n onCreateRule: function onCreateRule(name, decl, options) {\n if (typeof decl !== 'function') return null;\n var rule = createRule(name, {}, options);\n rule[fnRuleNs] = decl;\n return rule;\n },\n onProcessStyle: function onProcessStyle(style, rule) {\n // We need to extract function values from the declaration, so that we can keep core unaware of them.\n // We need to do that only once.\n // We don't need to extract functions on each style update, since this can happen only once.\n // We don't support function values inside of function rules.\n if (fnValuesNs in rule || fnRuleNs in rule) return style;\n var fnValues = {};\n\n for (var prop in style) {\n var value = style[prop];\n if (typeof value !== 'function') continue;\n delete style[prop];\n fnValues[prop] = value;\n } // $FlowFixMe[prop-missing]\n\n\n rule[fnValuesNs] = fnValues;\n return style;\n },\n onUpdate: function onUpdate(data, rule, sheet, options) {\n var styleRule = rule; // $FlowFixMe[prop-missing]\n\n var fnRule = styleRule[fnRuleNs]; // If we have a style function, the entire rule is dynamic and style object\n // will be returned from that function.\n\n if (fnRule) {\n // Empty object will remove all currently defined props\n // in case function rule returns a falsy value.\n styleRule.style = fnRule(data) || {};\n\n if (process.env.NODE_ENV === 'development') {\n for (var prop in styleRule.style) {\n if (typeof styleRule.style[prop] === 'function') {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Function values inside function rules are not supported.') : void 0;\n break;\n }\n }\n }\n } // $FlowFixMe[prop-missing]\n\n\n var fnValues = styleRule[fnValuesNs]; // If we have a fn values map, it is a rule with function values.\n\n if (fnValues) {\n for (var _prop in fnValues) {\n styleRule.prop(_prop, fnValues[_prop](data), options);\n }\n }\n }\n };\n};\n\nexport default functionPlugin;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { RuleList } from 'jss';\n\nvar at = '@global';\nvar atPrefix = '@global ';\n\nvar GlobalContainerRule =\n/*#__PURE__*/\nfunction () {\n function GlobalContainerRule(key, styles, options) {\n this.type = 'global';\n this.at = at;\n this.rules = void 0;\n this.options = void 0;\n this.key = void 0;\n this.isProcessed = false;\n this.key = key;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var selector in styles) {\n this.rules.add(selector, styles[selector]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = GlobalContainerRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (rule) this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString() {\n return this.rules.toString();\n };\n\n return GlobalContainerRule;\n}();\n\nvar GlobalPrefixedRule =\n/*#__PURE__*/\nfunction () {\n function GlobalPrefixedRule(key, style, options) {\n this.type = 'global';\n this.at = at;\n this.options = void 0;\n this.rule = void 0;\n this.isProcessed = false;\n this.key = void 0;\n this.key = key;\n this.options = options;\n var selector = key.substr(atPrefix.length);\n this.rule = options.jss.createRule(selector, style, _extends({}, options, {\n parent: this\n }));\n }\n\n var _proto2 = GlobalPrefixedRule.prototype;\n\n _proto2.toString = function toString(options) {\n return this.rule ? this.rule.toString(options) : '';\n };\n\n return GlobalPrefixedRule;\n}();\n\nvar separatorRegExp = /\\s*,\\s*/g;\n\nfunction addScope(selector, scope) {\n var parts = selector.split(separatorRegExp);\n var scoped = '';\n\n for (var i = 0; i < parts.length; i++) {\n scoped += scope + \" \" + parts[i].trim();\n if (parts[i + 1]) scoped += ', ';\n }\n\n return scoped;\n}\n\nfunction handleNestedGlobalContainerRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n var rules = style ? style[at] : null;\n if (!rules) return;\n\n for (var name in rules) {\n sheet.addRule(name, rules[name], _extends({}, options, {\n selector: addScope(name, rule.selector)\n }));\n }\n\n delete style[at];\n}\n\nfunction handlePrefixedGlobalRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n\n for (var prop in style) {\n if (prop[0] !== '@' || prop.substr(0, at.length) !== at) continue;\n var selector = addScope(prop.substr(at.length), rule.selector);\n sheet.addRule(selector, style[prop], _extends({}, options, {\n selector: selector\n }));\n delete style[prop];\n }\n}\n/**\n * Convert nested rules to separate, remove them from original styles.\n *\n * @param {Rule} rule\n * @api public\n */\n\n\nfunction jssGlobal() {\n function onCreateRule(name, styles, options) {\n if (!name) return null;\n\n if (name === at) {\n return new GlobalContainerRule(name, styles, options);\n }\n\n if (name[0] === '@' && name.substr(0, atPrefix.length) === atPrefix) {\n return new GlobalPrefixedRule(name, styles, options);\n }\n\n var parent = options.parent;\n\n if (parent) {\n if (parent.type === 'global' || parent.options.parent && parent.options.parent.type === 'global') {\n options.scoped = false;\n }\n }\n\n if (options.scoped === false) {\n options.selector = name;\n }\n\n return null;\n }\n\n function onProcessRule(rule, sheet) {\n if (rule.type !== 'style' || !sheet) return;\n handleNestedGlobalContainerRule(rule, sheet);\n handlePrefixedGlobalRule(rule, sheet);\n }\n\n return {\n onCreateRule: onCreateRule,\n onProcessRule: onProcessRule\n };\n}\n\nexport default jssGlobal;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport warning from 'tiny-warning';\n\nvar separatorRegExp = /\\s*,\\s*/g;\nvar parentRegExp = /&/g;\nvar refRegExp = /\\$([\\w-]+)/g;\n/**\n * Convert nested rules to separate, remove them from original styles.\n *\n * @param {Rule} rule\n * @api public\n */\n\nfunction jssNested() {\n // Get a function to be used for $ref replacement.\n function getReplaceRef(container, sheet) {\n return function (match, key) {\n var rule = container.getRule(key) || sheet && sheet.getRule(key);\n\n if (rule) {\n rule = rule;\n return rule.selector;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Could not find the referenced rule \\\"\" + key + \"\\\" in \\\"\" + (container.options.meta || container.toString()) + \"\\\".\") : void 0;\n return key;\n };\n }\n\n function replaceParentRefs(nestedProp, parentProp) {\n var parentSelectors = parentProp.split(separatorRegExp);\n var nestedSelectors = nestedProp.split(separatorRegExp);\n var result = '';\n\n for (var i = 0; i < parentSelectors.length; i++) {\n var parent = parentSelectors[i];\n\n for (var j = 0; j < nestedSelectors.length; j++) {\n var nested = nestedSelectors[j];\n if (result) result += ', '; // Replace all & by the parent or prefix & with the parent.\n\n result += nested.indexOf('&') !== -1 ? nested.replace(parentRegExp, parent) : parent + \" \" + nested;\n }\n }\n\n return result;\n }\n\n function getOptions(rule, container, prevOptions) {\n // Options has been already created, now we only increase index.\n if (prevOptions) return _extends({}, prevOptions, {\n index: prevOptions.index + 1 // $FlowFixMe[prop-missing]\n\n });\n var nestingLevel = rule.options.nestingLevel;\n nestingLevel = nestingLevel === undefined ? 1 : nestingLevel + 1;\n\n var options = _extends({}, rule.options, {\n nestingLevel: nestingLevel,\n index: container.indexOf(rule) + 1 // We don't need the parent name to be set options for chlid.\n\n });\n\n delete options.name;\n return options;\n }\n\n function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style') return style;\n var styleRule = rule;\n var container = styleRule.options.parent;\n var options;\n var replaceRef;\n\n for (var prop in style) {\n var isNested = prop.indexOf('&') !== -1;\n var isNestedConditional = prop[0] === '@';\n if (!isNested && !isNestedConditional) continue;\n options = getOptions(styleRule, container, options);\n\n if (isNested) {\n var selector = replaceParentRefs(prop, styleRule.selector); // Lazily create the ref replacer function just once for\n // all nested rules within the sheet.\n\n if (!replaceRef) replaceRef = getReplaceRef(container, sheet); // Replace all $refs.\n\n selector = selector.replace(refRegExp, replaceRef);\n container.addRule(selector, style[prop], _extends({}, options, {\n selector: selector\n }));\n } else if (isNestedConditional) {\n // Place conditional right after the parent rule to ensure right ordering.\n container.addRule(prop, {}, options) // Flow expects more options but they aren't required\n // And flow doesn't know this will always be a StyleRule which has the addRule method\n // $FlowFixMe[incompatible-use]\n // $FlowFixMe[prop-missing]\n .addRule(styleRule.key, style[prop], {\n selector: styleRule.selector\n });\n }\n\n delete style[prop];\n }\n\n return style;\n }\n\n return {\n onProcessStyle: onProcessStyle\n };\n}\n\nexport default jssNested;\n","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","import hyphenate from 'hyphenate-style-name';\n\n/**\n * Convert camel cased property names to dash separated.\n *\n * @param {Object} style\n * @return {Object}\n */\n\nfunction convertCase(style) {\n var converted = {};\n\n for (var prop in style) {\n var key = prop.indexOf('--') === 0 ? prop : hyphenate(prop);\n converted[key] = style[prop];\n }\n\n if (style.fallbacks) {\n if (Array.isArray(style.fallbacks)) converted.fallbacks = style.fallbacks.map(convertCase);else converted.fallbacks = convertCase(style.fallbacks);\n }\n\n return converted;\n}\n/**\n * Allow camel cased property names by converting them back to dasherized.\n *\n * @param {Rule} rule\n */\n\n\nfunction camelCase() {\n function onProcessStyle(style) {\n if (Array.isArray(style)) {\n // Handle rules like @font-face, which can have multiple styles in an array\n for (var index = 0; index < style.length; index++) {\n style[index] = convertCase(style[index]);\n }\n\n return style;\n }\n\n return convertCase(style);\n }\n\n function onChangeValue(value, prop, rule) {\n if (prop.indexOf('--') === 0) {\n return value;\n }\n\n var hyphenatedProp = hyphenate(prop); // There was no camel case in place\n\n if (prop === hyphenatedProp) return value;\n rule.prop(hyphenatedProp, value); // Core will ignore that property value we set the proper one above.\n\n return null;\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default camelCase;\n","import { hasCSSTOMSupport } from 'jss';\n\nvar px = hasCSSTOMSupport && CSS ? CSS.px : 'px';\nvar ms = hasCSSTOMSupport && CSS ? CSS.ms : 'ms';\nvar percent = hasCSSTOMSupport && CSS ? CSS.percent : '%';\n/**\n * Generated jss-plugin-default-unit CSS property units\n *\n * @type object\n */\n\nvar defaultUnits = {\n // Animation properties\n 'animation-delay': ms,\n 'animation-duration': ms,\n // Background properties\n 'background-position': px,\n 'background-position-x': px,\n 'background-position-y': px,\n 'background-size': px,\n // Border Properties\n border: px,\n 'border-bottom': px,\n 'border-bottom-left-radius': px,\n 'border-bottom-right-radius': px,\n 'border-bottom-width': px,\n 'border-left': px,\n 'border-left-width': px,\n 'border-radius': px,\n 'border-right': px,\n 'border-right-width': px,\n 'border-top': px,\n 'border-top-left-radius': px,\n 'border-top-right-radius': px,\n 'border-top-width': px,\n 'border-width': px,\n 'border-block': px,\n 'border-block-end': px,\n 'border-block-end-width': px,\n 'border-block-start': px,\n 'border-block-start-width': px,\n 'border-block-width': px,\n 'border-inline': px,\n 'border-inline-end': px,\n 'border-inline-end-width': px,\n 'border-inline-start': px,\n 'border-inline-start-width': px,\n 'border-inline-width': px,\n 'border-start-start-radius': px,\n 'border-start-end-radius': px,\n 'border-end-start-radius': px,\n 'border-end-end-radius': px,\n // Margin properties\n margin: px,\n 'margin-bottom': px,\n 'margin-left': px,\n 'margin-right': px,\n 'margin-top': px,\n 'margin-block': px,\n 'margin-block-end': px,\n 'margin-block-start': px,\n 'margin-inline': px,\n 'margin-inline-end': px,\n 'margin-inline-start': px,\n // Padding properties\n padding: px,\n 'padding-bottom': px,\n 'padding-left': px,\n 'padding-right': px,\n 'padding-top': px,\n 'padding-block': px,\n 'padding-block-end': px,\n 'padding-block-start': px,\n 'padding-inline': px,\n 'padding-inline-end': px,\n 'padding-inline-start': px,\n // Mask properties\n 'mask-position-x': px,\n 'mask-position-y': px,\n 'mask-size': px,\n // Width and height properties\n height: px,\n width: px,\n 'min-height': px,\n 'max-height': px,\n 'min-width': px,\n 'max-width': px,\n // Position properties\n bottom: px,\n left: px,\n top: px,\n right: px,\n inset: px,\n 'inset-block': px,\n 'inset-block-end': px,\n 'inset-block-start': px,\n 'inset-inline': px,\n 'inset-inline-end': px,\n 'inset-inline-start': px,\n // Shadow properties\n 'box-shadow': px,\n 'text-shadow': px,\n // Column properties\n 'column-gap': px,\n 'column-rule': px,\n 'column-rule-width': px,\n 'column-width': px,\n // Font and text properties\n 'font-size': px,\n 'font-size-delta': px,\n 'letter-spacing': px,\n 'text-decoration-thickness': px,\n 'text-indent': px,\n 'text-stroke': px,\n 'text-stroke-width': px,\n 'word-spacing': px,\n // Motion properties\n motion: px,\n 'motion-offset': px,\n // Outline properties\n outline: px,\n 'outline-offset': px,\n 'outline-width': px,\n // Perspective properties\n perspective: px,\n 'perspective-origin-x': percent,\n 'perspective-origin-y': percent,\n // Transform properties\n 'transform-origin': percent,\n 'transform-origin-x': percent,\n 'transform-origin-y': percent,\n 'transform-origin-z': percent,\n // Transition properties\n 'transition-delay': ms,\n 'transition-duration': ms,\n // Alignment properties\n 'vertical-align': px,\n 'flex-basis': px,\n // Some random properties\n 'shape-margin': px,\n size: px,\n gap: px,\n // Grid properties\n grid: px,\n 'grid-gap': px,\n 'row-gap': px,\n 'grid-row-gap': px,\n 'grid-column-gap': px,\n 'grid-template-rows': px,\n 'grid-template-columns': px,\n 'grid-auto-rows': px,\n 'grid-auto-columns': px,\n // Not existing properties.\n // Used to avoid issues with jss-plugin-expand integration.\n 'box-shadow-x': px,\n 'box-shadow-y': px,\n 'box-shadow-blur': px,\n 'box-shadow-spread': px,\n 'font-line-height': px,\n 'text-shadow-x': px,\n 'text-shadow-y': px,\n 'text-shadow-blur': px\n};\n\n/**\n * Clones the object and adds a camel cased property version.\n */\nfunction addCamelCasedVersion(obj) {\n var regExp = /(-[a-z])/g;\n\n var replace = function replace(str) {\n return str[1].toUpperCase();\n };\n\n var newObj = {};\n\n for (var _key in obj) {\n newObj[_key] = obj[_key];\n newObj[_key.replace(regExp, replace)] = obj[_key];\n }\n\n return newObj;\n}\n\nvar units = addCamelCasedVersion(defaultUnits);\n/**\n * Recursive deep style passing function\n */\n\nfunction iterate(prop, value, options) {\n if (value == null) return value;\n\n if (Array.isArray(value)) {\n for (var i = 0; i < value.length; i++) {\n value[i] = iterate(prop, value[i], options);\n }\n } else if (typeof value === 'object') {\n if (prop === 'fallbacks') {\n for (var innerProp in value) {\n value[innerProp] = iterate(innerProp, value[innerProp], options);\n }\n } else {\n for (var _innerProp in value) {\n value[_innerProp] = iterate(prop + \"-\" + _innerProp, value[_innerProp], options);\n }\n }\n } else if (typeof value === 'number' && !Number.isNaN(value)) {\n var unit = options[prop] || units[prop]; // Add the unit if available, except for the special case of 0px.\n\n if (unit && !(value === 0 && unit === px)) {\n return typeof unit === 'function' ? unit(value).toString() : \"\" + value + unit;\n }\n\n return value.toString();\n }\n\n return value;\n}\n/**\n * Add unit to numeric values.\n */\n\n\nfunction defaultUnit(options) {\n if (options === void 0) {\n options = {};\n }\n\n var camelCasedOptions = addCamelCasedVersion(options);\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n\n for (var prop in style) {\n style[prop] = iterate(prop, style[prop], camelCasedOptions);\n }\n\n return style;\n }\n\n function onChangeValue(value, prop) {\n return iterate(prop, value, camelCasedOptions);\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default defaultUnit;\n","import isInBrowser from 'is-in-browser';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\n\n// Export javascript style and css style vendor prefixes.\nvar js = '';\nvar css = '';\nvar vendor = '';\nvar browser = '';\nvar isTouch = isInBrowser && 'ontouchstart' in document.documentElement; // We should not do anything if required serverside.\n\nif (isInBrowser) {\n // Order matters. We need to check Webkit the last one because\n // other vendors use to add Webkit prefixes to some properties\n var jsCssMap = {\n Moz: '-moz-',\n ms: '-ms-',\n O: '-o-',\n Webkit: '-webkit-'\n };\n\n var _document$createEleme = document.createElement('p'),\n style = _document$createEleme.style;\n\n var testProp = 'Transform';\n\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n js = key;\n css = jsCssMap[key];\n break;\n }\n } // Correctly detect the Edge browser.\n\n\n if (js === 'Webkit' && 'msHyphens' in style) {\n js = 'ms';\n css = jsCssMap.ms;\n browser = 'edge';\n } // Correctly detect the Safari browser.\n\n\n if (js === 'Webkit' && '-apple-trailing-word' in style) {\n vendor = 'apple';\n }\n}\n/**\n * Vendor prefix string for the current browser.\n *\n * @type {{js: String, css: String, vendor: String, browser: String}}\n * @api public\n */\n\n\nvar prefix = {\n js: js,\n css: css,\n vendor: vendor,\n browser: browser,\n isTouch: isTouch\n};\n\n/**\n * Test if a keyframe at-rule should be prefixed or not\n *\n * @param {String} vendor prefix string for the current browser.\n * @return {String}\n * @api public\n */\n\nfunction supportedKeyframes(key) {\n // Keyframes is already prefixed. e.g. key = '@-webkit-keyframes a'\n if (key[1] === '-') return key; // No need to prefix IE/Edge. Older browsers will ignore unsupported rules.\n // https://caniuse.com/#search=keyframes\n\n if (prefix.js === 'ms') return key;\n return \"@\" + prefix.css + \"keyframes\" + key.substr(10);\n}\n\n// https://caniuse.com/#search=appearance\n\nvar appearence = {\n noPrefill: ['appearance'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'appearance') return false;\n if (prefix.js === 'ms') return \"-webkit-\" + prop;\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=color-adjust\n\nvar colorAdjust = {\n noPrefill: ['color-adjust'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'color-adjust') return false;\n if (prefix.js === 'Webkit') return prefix.css + \"print-\" + prop;\n return prop;\n }\n};\n\nvar regExp = /[-\\s]+(.)?/g;\n/**\n * Replaces the letter with the capital letter\n *\n * @param {String} match\n * @param {String} c\n * @return {String}\n * @api private\n */\n\nfunction toUpper(match, c) {\n return c ? c.toUpperCase() : '';\n}\n/**\n * Convert dash separated strings to camel-cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\n\nfunction camelize(str) {\n return str.replace(regExp, toUpper);\n}\n\n/**\n * Convert dash separated strings to pascal cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction pascalize(str) {\n return camelize(\"-\" + str);\n}\n\n// but we can use a longhand property instead.\n// https://caniuse.com/#search=mask\n\nvar mask = {\n noPrefill: ['mask'],\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^mask/.test(prop)) return false;\n\n if (prefix.js === 'Webkit') {\n var longhand = 'mask-image';\n\n if (camelize(longhand) in style) {\n return prop;\n }\n\n if (prefix.js + pascalize(longhand) in style) {\n return prefix.css + prop;\n }\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=text-orientation\n\nvar textOrientation = {\n noPrefill: ['text-orientation'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'text-orientation') return false;\n\n if (prefix.vendor === 'apple' && !prefix.isTouch) {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=transform\n\nvar transform = {\n noPrefill: ['transform'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transform') return false;\n\n if (options.transform) {\n return prop;\n }\n\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=transition\n\nvar transition = {\n noPrefill: ['transition'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transition') return false;\n\n if (options.transition) {\n return prop;\n }\n\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=writing-mode\n\nvar writingMode = {\n noPrefill: ['writing-mode'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'writing-mode') return false;\n\n if (prefix.js === 'Webkit' || prefix.js === 'ms' && prefix.browser !== 'edge') {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=user-select\n\nvar userSelect = {\n noPrefill: ['user-select'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'user-select') return false;\n\n if (prefix.js === 'Moz' || prefix.js === 'ms' || prefix.vendor === 'apple') {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=multicolumn\n// https://github.com/postcss/autoprefixer/issues/491\n// https://github.com/postcss/autoprefixer/issues/177\n\nvar breakPropsOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^break-/.test(prop)) return false;\n\n if (prefix.js === 'Webkit') {\n var jsProp = \"WebkitColumn\" + pascalize(prop);\n return jsProp in style ? prefix.css + \"column-\" + prop : false;\n }\n\n if (prefix.js === 'Moz') {\n var _jsProp = \"page\" + pascalize(prop);\n\n return _jsProp in style ? \"page-\" + prop : false;\n }\n\n return false;\n }\n};\n\n// See https://github.com/postcss/autoprefixer/issues/324.\n\nvar inlineLogicalOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^(border|margin|padding)-inline/.test(prop)) return false;\n if (prefix.js === 'Moz') return prop;\n var newProp = prop.replace('-inline', '');\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n};\n\n// Camelization is required because we can't test using.\n// CSS syntax for e.g. in FF.\n\nvar unprefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n return camelize(prop) in style ? prop : false;\n }\n};\n\nvar prefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n var pascalized = pascalize(prop); // Return custom CSS variable without prefixing.\n\n if (prop[0] === '-') return prop; // Return already prefixed value without prefixing.\n\n if (prop[0] === '-' && prop[1] === '-') return prop;\n if (prefix.js + pascalized in style) return prefix.css + prop; // Try webkit fallback.\n\n if (prefix.js !== 'Webkit' && \"Webkit\" + pascalized in style) return \"-webkit-\" + prop;\n return false;\n }\n};\n\n// https://caniuse.com/#search=scroll-snap\n\nvar scrollSnap = {\n supportedProperty: function supportedProperty(prop) {\n if (prop.substring(0, 11) !== 'scroll-snap') return false;\n\n if (prefix.js === 'ms') {\n return \"\" + prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=overscroll-behavior\n\nvar overscrollBehavior = {\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'overscroll-behavior') return false;\n\n if (prefix.js === 'ms') {\n return prefix.css + \"scroll-chaining\";\n }\n\n return prop;\n }\n};\n\nvar propMap = {\n 'flex-grow': 'flex-positive',\n 'flex-shrink': 'flex-negative',\n 'flex-basis': 'flex-preferred-size',\n 'justify-content': 'flex-pack',\n order: 'flex-order',\n 'align-items': 'flex-align',\n 'align-content': 'flex-line-pack' // 'align-self' is handled by 'align-self' plugin.\n\n}; // Support old flex spec from 2012.\n\nvar flex2012 = {\n supportedProperty: function supportedProperty(prop, style) {\n var newProp = propMap[prop];\n if (!newProp) return false;\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n};\n\nvar propMap$1 = {\n flex: 'box-flex',\n 'flex-grow': 'box-flex',\n 'flex-direction': ['box-orient', 'box-direction'],\n order: 'box-ordinal-group',\n 'align-items': 'box-align',\n 'flex-flow': ['box-orient', 'box-direction'],\n 'justify-content': 'box-pack'\n};\nvar propKeys = Object.keys(propMap$1);\n\nvar prefixCss = function prefixCss(p) {\n return prefix.css + p;\n}; // Support old flex spec from 2009.\n\n\nvar flex2009 = {\n supportedProperty: function supportedProperty(prop, style, _ref) {\n var multiple = _ref.multiple;\n\n if (propKeys.indexOf(prop) > -1) {\n var newProp = propMap$1[prop];\n\n if (!Array.isArray(newProp)) {\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n\n if (!multiple) return false;\n\n for (var i = 0; i < newProp.length; i++) {\n if (!(prefix.js + pascalize(newProp[0]) in style)) {\n return false;\n }\n }\n\n return newProp.map(prefixCss);\n }\n\n return false;\n }\n};\n\n// plugins = [\n// ...plugins,\n// breakPropsOld,\n// inlineLogicalOld,\n// unprefixed,\n// prefixed,\n// scrollSnap,\n// flex2012,\n// flex2009\n// ]\n// Plugins without 'noPrefill' value, going last.\n// 'flex-*' plugins should be at the bottom.\n// 'flex2009' going after 'flex2012'.\n// 'prefixed' going after 'unprefixed'\n\nvar plugins = [appearence, colorAdjust, mask, textOrientation, transform, transition, writingMode, userSelect, breakPropsOld, inlineLogicalOld, unprefixed, prefixed, scrollSnap, overscrollBehavior, flex2012, flex2009];\nvar propertyDetectors = plugins.filter(function (p) {\n return p.supportedProperty;\n}).map(function (p) {\n return p.supportedProperty;\n});\nvar noPrefill = plugins.filter(function (p) {\n return p.noPrefill;\n}).reduce(function (a, p) {\n a.push.apply(a, _toConsumableArray(p.noPrefill));\n return a;\n}, []);\n\nvar el;\nvar cache = {};\n\nif (isInBrowser) {\n el = document.createElement('p'); // We test every property on vendor prefix requirement.\n // Once tested, result is cached. It gives us up to 70% perf boost.\n // http://jsperf.com/element-style-object-access-vs-plain-object\n //\n // Prefill cache with known css properties to reduce amount of\n // properties we need to feature test at runtime.\n // http://davidwalsh.name/vendor-prefix\n\n var computed = window.getComputedStyle(document.documentElement, '');\n\n for (var key$1 in computed) {\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(key$1)) cache[computed[key$1]] = computed[key$1];\n } // Properties that cannot be correctly detected using the\n // cache prefill method.\n\n\n noPrefill.forEach(function (x) {\n return delete cache[x];\n });\n}\n/**\n * Test if a property is supported, returns supported property with vendor\n * prefix if required. Returns `false` if not supported.\n *\n * @param {String} prop dash separated\n * @param {Object} [options]\n * @return {String|Boolean}\n * @api public\n */\n\n\nfunction supportedProperty(prop, options) {\n if (options === void 0) {\n options = {};\n }\n\n // For server-side rendering.\n if (!el) return prop; // Remove cache for benchmark tests or return property from the cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache[prop] != null) {\n return cache[prop];\n } // Check if 'transition' or 'transform' natively supported in browser.\n\n\n if (prop === 'transition' || prop === 'transform') {\n options[prop] = prop in el.style;\n } // Find a plugin for current prefix property.\n\n\n for (var i = 0; i < propertyDetectors.length; i++) {\n cache[prop] = propertyDetectors[i](prop, el.style, options); // Break loop, if value found.\n\n if (cache[prop]) break;\n } // Reset styles for current property.\n // Firefox can even throw an error for invalid properties, e.g., \"0\".\n\n\n try {\n el.style[prop] = '';\n } catch (err) {\n return false;\n }\n\n return cache[prop];\n}\n\nvar cache$1 = {};\nvar transitionProperties = {\n transition: 1,\n 'transition-property': 1,\n '-webkit-transition': 1,\n '-webkit-transition-property': 1\n};\nvar transPropsRegExp = /(^\\s*[\\w-]+)|, (\\s*[\\w-]+)(?![^()]*\\))/g;\nvar el$1;\n/**\n * Returns prefixed value transition/transform if needed.\n *\n * @param {String} match\n * @param {String} p1\n * @param {String} p2\n * @return {String}\n * @api private\n */\n\nfunction prefixTransitionCallback(match, p1, p2) {\n if (p1 === 'var') return 'var';\n if (p1 === 'all') return 'all';\n if (p2 === 'all') return ', all';\n var prefixedValue = p1 ? supportedProperty(p1) : \", \" + supportedProperty(p2);\n if (!prefixedValue) return p1 || p2;\n return prefixedValue;\n}\n\nif (isInBrowser) el$1 = document.createElement('p');\n/**\n * Returns prefixed value if needed. Returns `false` if value is not supported.\n *\n * @param {String} property\n * @param {String} value\n * @return {String|Boolean}\n * @api public\n */\n\nfunction supportedValue(property, value) {\n // For server-side rendering.\n var prefixedValue = value;\n if (!el$1 || property === 'content') return value; // It is a string or a number as a string like '1'.\n // We want only prefixable values here.\n // eslint-disable-next-line no-restricted-globals\n\n if (typeof prefixedValue !== 'string' || !isNaN(parseInt(prefixedValue, 10))) {\n return prefixedValue;\n } // Create cache key for current value.\n\n\n var cacheKey = property + prefixedValue; // Remove cache for benchmark tests or return value from cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache$1[cacheKey] != null) {\n return cache$1[cacheKey];\n } // IE can even throw an error in some cases, for e.g. style.content = 'bar'.\n\n\n try {\n // Test value as it is.\n el$1.style[property] = prefixedValue;\n } catch (err) {\n // Return false if value not supported.\n cache$1[cacheKey] = false;\n return false;\n } // If 'transition' or 'transition-property' property.\n\n\n if (transitionProperties[property]) {\n prefixedValue = prefixedValue.replace(transPropsRegExp, prefixTransitionCallback);\n } else if (el$1.style[property] === '') {\n // Value with a vendor prefix.\n prefixedValue = prefix.css + prefixedValue; // Hardcode test to convert \"flex\" to \"-ms-flexbox\" for IE10.\n\n if (prefixedValue === '-ms-flex') el$1.style[property] = '-ms-flexbox'; // Test prefixed value.\n\n el$1.style[property] = prefixedValue; // Return false if value not supported.\n\n if (el$1.style[property] === '') {\n cache$1[cacheKey] = false;\n return false;\n }\n } // Reset styles for current property.\n\n\n el$1.style[property] = ''; // Write current value to cache.\n\n cache$1[cacheKey] = prefixedValue;\n return cache$1[cacheKey];\n}\n\nexport { prefix, supportedKeyframes, supportedProperty, supportedValue };\n","import { supportedKeyframes, supportedValue, supportedProperty } from 'css-vendor';\nimport { toCssValue } from 'jss';\n\n/**\n * Add vendor prefix to a property name when needed.\n *\n * @api public\n */\n\nfunction jssVendorPrefixer() {\n function onProcessRule(rule) {\n if (rule.type === 'keyframes') {\n var atRule = rule;\n atRule.at = supportedKeyframes(atRule.at);\n }\n }\n\n function prefixStyle(style) {\n for (var prop in style) {\n var value = style[prop];\n\n if (prop === 'fallbacks' && Array.isArray(value)) {\n style[prop] = value.map(prefixStyle);\n continue;\n }\n\n var changeProp = false;\n var supportedProp = supportedProperty(prop);\n if (supportedProp && supportedProp !== prop) changeProp = true;\n var changeValue = false;\n var supportedValue$1 = supportedValue(supportedProp, toCssValue(value));\n if (supportedValue$1 && supportedValue$1 !== value) changeValue = true;\n\n if (changeProp || changeValue) {\n if (changeProp) delete style[prop];\n style[supportedProp || prop] = supportedValue$1 || value;\n }\n }\n\n return style;\n }\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n return prefixStyle(style);\n }\n\n function onChangeValue(value, prop) {\n return supportedValue(prop, toCssValue(value)) || value;\n }\n\n return {\n onProcessRule: onProcessRule,\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default jssVendorPrefixer;\n","/**\n * Sort props by length.\n */\nfunction jssPropsSort() {\n var sort = function sort(prop0, prop1) {\n if (prop0.length === prop1.length) {\n return prop0 > prop1 ? 1 : -1;\n }\n\n return prop0.length - prop1.length;\n };\n\n return {\n onProcessStyle: function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n var newStyle = {};\n var props = Object.keys(style).sort(sort);\n\n for (var i = 0; i < props.length; i++) {\n newStyle[props[i]] = style[props[i]];\n }\n\n return newStyle;\n }\n };\n}\n\nexport default jssPropsSort;\n","import functions from 'jss-plugin-rule-value-function';\nimport global from 'jss-plugin-global';\nimport nested from 'jss-plugin-nested';\nimport camelCase from 'jss-plugin-camel-case';\nimport defaultUnit from 'jss-plugin-default-unit';\nimport vendorPrefixer from 'jss-plugin-vendor-prefixer';\nimport propsSort from 'jss-plugin-props-sort'; // Subset of jss-preset-default with only the plugins the Material-UI components are using.\n\nexport default function jssPreset() {\n return {\n plugins: [functions(), global(), nested(), camelCase(), defaultUnit(), // Disable the vendor prefixer server-side, it does nothing.\n // This way, we can get a performance boost.\n // In the documentation, we are using `autoprefixer` to solve this problem.\n typeof window === 'undefined' ? null : vendorPrefixer(), propsSort()]\n };\n}","// Used https://github.com/thinkloop/multi-key-cache as inspiration\nvar multiKeyStore = {\n set: function set(cache, key1, key2, value) {\n var subCache = cache.get(key1);\n\n if (!subCache) {\n subCache = new Map();\n cache.set(key1, subCache);\n }\n\n subCache.set(key2, value);\n },\n get: function get(cache, key1, key2) {\n var subCache = cache.get(key1);\n return subCache ? subCache.get(key2) : undefined;\n },\n delete: function _delete(cache, key1, key2) {\n var subCache = cache.get(key1);\n subCache.delete(key2);\n }\n};\nexport default multiKeyStore;","/* eslint-disable import/prefer-default-export */\n// Global index counter to preserve source order.\n// We create the style sheet during the creation of the component,\n// children are handled after the parents, so the order of style elements would be parent->child.\n// It is a problem though when a parent passes a className\n// which needs to override any child's styles.\n// StyleSheet of the child has a higher specificity, because of the source order.\n// So our solution is to render sheets them in the reverse order child->sheet, so\n// that parent has a higher specificity.\nvar indexCounter = -1e9;\nexport function increment() {\n indexCounter += 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (indexCounter >= 0) {\n console.warn(['Material-UI: You might have a memory leak.', 'The indexCounter is not supposed to grow that much.'].join('\\n'));\n }\n }\n\n return indexCounter;\n}","// We use the same empty object to ref count the styles that don't need a theme object.\nvar noopTheme = {};\nexport default noopTheme;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport { getDynamicStyles } from 'jss';\nimport mergeClasses from '../mergeClasses';\nimport multiKeyStore from './multiKeyStore';\nimport useTheme from '../useTheme';\nimport { StylesContext } from '../StylesProvider';\nimport { increment } from './indexCounter';\nimport getStylesCreator from '../getStylesCreator';\nimport noopTheme from '../getStylesCreator/noopTheme';\n\nfunction getClasses(_ref, classes, Component) {\n var state = _ref.state,\n stylesOptions = _ref.stylesOptions;\n\n if (stylesOptions.disableGeneration) {\n return classes || {};\n }\n\n if (!state.cacheClasses) {\n state.cacheClasses = {\n // Cache for the finalized classes value.\n value: null,\n // Cache for the last used classes prop pointer.\n lastProp: null,\n // Cache for the last used rendered classes pointer.\n lastJSS: {}\n };\n } // Tracks if either the rendered classes or classes prop has changed,\n // requiring the generation of a new finalized classes object.\n\n\n var generate = false;\n\n if (state.classes !== state.cacheClasses.lastJSS) {\n state.cacheClasses.lastJSS = state.classes;\n generate = true;\n }\n\n if (classes !== state.cacheClasses.lastProp) {\n state.cacheClasses.lastProp = classes;\n generate = true;\n }\n\n if (generate) {\n state.cacheClasses.value = mergeClasses({\n baseClasses: state.cacheClasses.lastJSS,\n newClasses: classes,\n Component: Component\n });\n }\n\n return state.cacheClasses.value;\n}\n\nfunction attach(_ref2, props) {\n var state = _ref2.state,\n theme = _ref2.theme,\n stylesOptions = _ref2.stylesOptions,\n stylesCreator = _ref2.stylesCreator,\n name = _ref2.name;\n\n if (stylesOptions.disableGeneration) {\n return;\n }\n\n var sheetManager = multiKeyStore.get(stylesOptions.sheetsManager, stylesCreator, theme);\n\n if (!sheetManager) {\n sheetManager = {\n refs: 0,\n staticSheet: null,\n dynamicStyles: null\n };\n multiKeyStore.set(stylesOptions.sheetsManager, stylesCreator, theme, sheetManager);\n }\n\n var options = _extends({}, stylesCreator.options, stylesOptions, {\n theme: theme,\n flip: typeof stylesOptions.flip === 'boolean' ? stylesOptions.flip : theme.direction === 'rtl'\n });\n\n options.generateId = options.serverGenerateClassName || options.generateClassName;\n var sheetsRegistry = stylesOptions.sheetsRegistry;\n\n if (sheetManager.refs === 0) {\n var staticSheet;\n\n if (stylesOptions.sheetsCache) {\n staticSheet = multiKeyStore.get(stylesOptions.sheetsCache, stylesCreator, theme);\n }\n\n var styles = stylesCreator.create(theme, name);\n\n if (!staticSheet) {\n staticSheet = stylesOptions.jss.createStyleSheet(styles, _extends({\n link: false\n }, options));\n staticSheet.attach();\n\n if (stylesOptions.sheetsCache) {\n multiKeyStore.set(stylesOptions.sheetsCache, stylesCreator, theme, staticSheet);\n }\n }\n\n if (sheetsRegistry) {\n sheetsRegistry.add(staticSheet);\n }\n\n sheetManager.staticSheet = staticSheet;\n sheetManager.dynamicStyles = getDynamicStyles(styles);\n }\n\n if (sheetManager.dynamicStyles) {\n var dynamicSheet = stylesOptions.jss.createStyleSheet(sheetManager.dynamicStyles, _extends({\n link: true\n }, options));\n dynamicSheet.update(props);\n dynamicSheet.attach();\n state.dynamicSheet = dynamicSheet;\n state.classes = mergeClasses({\n baseClasses: sheetManager.staticSheet.classes,\n newClasses: dynamicSheet.classes\n });\n\n if (sheetsRegistry) {\n sheetsRegistry.add(dynamicSheet);\n }\n } else {\n state.classes = sheetManager.staticSheet.classes;\n }\n\n sheetManager.refs += 1;\n}\n\nfunction update(_ref3, props) {\n var state = _ref3.state;\n\n if (state.dynamicSheet) {\n state.dynamicSheet.update(props);\n }\n}\n\nfunction detach(_ref4) {\n var state = _ref4.state,\n theme = _ref4.theme,\n stylesOptions = _ref4.stylesOptions,\n stylesCreator = _ref4.stylesCreator;\n\n if (stylesOptions.disableGeneration) {\n return;\n }\n\n var sheetManager = multiKeyStore.get(stylesOptions.sheetsManager, stylesCreator, theme);\n sheetManager.refs -= 1;\n var sheetsRegistry = stylesOptions.sheetsRegistry;\n\n if (sheetManager.refs === 0) {\n multiKeyStore.delete(stylesOptions.sheetsManager, stylesCreator, theme);\n stylesOptions.jss.removeStyleSheet(sheetManager.staticSheet);\n\n if (sheetsRegistry) {\n sheetsRegistry.remove(sheetManager.staticSheet);\n }\n }\n\n if (state.dynamicSheet) {\n stylesOptions.jss.removeStyleSheet(state.dynamicSheet);\n\n if (sheetsRegistry) {\n sheetsRegistry.remove(state.dynamicSheet);\n }\n }\n}\n\nfunction useSynchronousEffect(func, values) {\n var key = React.useRef([]);\n var output; // Store \"generation\" key. Just returns a new object every time\n\n var currentKey = React.useMemo(function () {\n return {};\n }, values); // eslint-disable-line react-hooks/exhaustive-deps\n // \"the first render\", or \"memo dropped the value\"\n\n if (key.current !== currentKey) {\n key.current = currentKey;\n output = func();\n }\n\n React.useEffect(function () {\n return function () {\n if (output) {\n output();\n }\n };\n }, [currentKey] // eslint-disable-line react-hooks/exhaustive-deps\n );\n}\n\nexport default function makeStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var name = options.name,\n classNamePrefixOption = options.classNamePrefix,\n Component = options.Component,\n _options$defaultTheme = options.defaultTheme,\n defaultTheme = _options$defaultTheme === void 0 ? noopTheme : _options$defaultTheme,\n stylesOptions2 = _objectWithoutProperties(options, [\"name\", \"classNamePrefix\", \"Component\", \"defaultTheme\"]);\n\n var stylesCreator = getStylesCreator(stylesOrCreator);\n var classNamePrefix = name || classNamePrefixOption || 'makeStyles';\n stylesCreator.options = {\n index: increment(),\n name: name,\n meta: classNamePrefix,\n classNamePrefix: classNamePrefix\n };\n\n var useStyles = function useStyles() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var theme = useTheme() || defaultTheme;\n\n var stylesOptions = _extends({}, React.useContext(StylesContext), stylesOptions2);\n\n var instance = React.useRef();\n var shouldUpdate = React.useRef();\n useSynchronousEffect(function () {\n var current = {\n name: name,\n state: {},\n stylesCreator: stylesCreator,\n stylesOptions: stylesOptions,\n theme: theme\n };\n attach(current, props);\n shouldUpdate.current = false;\n instance.current = current;\n return function () {\n detach(current);\n };\n }, [theme, stylesCreator]);\n React.useEffect(function () {\n if (shouldUpdate.current) {\n update(instance.current, props);\n }\n\n shouldUpdate.current = true;\n });\n var classes = getClasses(instance.current, props.classes, Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(classes);\n }\n\n return classes;\n };\n\n return useStyles;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { deepmerge } from '@material-ui/utils';\nimport noopTheme from './noopTheme';\nexport default function getStylesCreator(stylesOrCreator) {\n var themingEnabled = typeof stylesOrCreator === 'function';\n\n if (process.env.NODE_ENV !== 'production') {\n if (_typeof(stylesOrCreator) !== 'object' && !themingEnabled) {\n console.error(['Material-UI: The `styles` argument provided is invalid.', 'You need to provide a function generating the styles or a styles object.'].join('\\n'));\n }\n }\n\n return {\n create: function create(theme, name) {\n var styles;\n\n try {\n styles = themingEnabled ? stylesOrCreator(theme) : stylesOrCreator;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n if (themingEnabled === true && theme === noopTheme) {\n // TODO: prepend error message/name instead\n console.error(['Material-UI: The `styles` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\\n'));\n }\n }\n\n throw err;\n }\n\n if (!name || !theme.overrides || !theme.overrides[name]) {\n return styles;\n }\n\n var overrides = theme.overrides[name];\n\n var stylesWithOverrides = _extends({}, styles);\n\n Object.keys(overrides).forEach(function (key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!stylesWithOverrides[key]) {\n console.warn(['Material-UI: You are trying to override a style that does not exist.', \"Fix the `\".concat(key, \"` key of `theme.overrides.\").concat(name, \"`.\")].join('\\n'));\n }\n }\n\n stylesWithOverrides[key] = deepmerge(stylesWithOverrides[key], overrides[key]);\n });\n return stylesWithOverrides;\n },\n options: {}\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getDisplayName } from '@material-ui/utils';\nexport default function mergeClasses() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var baseClasses = options.baseClasses,\n newClasses = options.newClasses,\n Component = options.Component;\n\n if (!newClasses) {\n return baseClasses;\n }\n\n var nextClasses = _extends({}, baseClasses);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof newClasses === 'string') {\n console.error([\"Material-UI: The value `\".concat(newClasses, \"` \") + \"provided to the classes prop of \".concat(getDisplayName(Component), \" is incorrect.\"), 'You might want to use the className prop instead.'].join('\\n'));\n return baseClasses;\n }\n }\n\n Object.keys(newClasses).forEach(function (key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!baseClasses[key] && newClasses[key]) {\n console.error([\"Material-UI: The key `\".concat(key, \"` \") + \"provided to the classes prop is not implemented in \".concat(getDisplayName(Component), \".\"), \"You can only override one of the following: \".concat(Object.keys(baseClasses).join(','), \".\")].join('\\n'));\n }\n\n if (newClasses[key] && typeof newClasses[key] !== 'string') {\n console.error([\"Material-UI: The key `\".concat(key, \"` \") + \"provided to the classes prop is not valid for \".concat(getDisplayName(Component), \".\"), \"You need to provide a non empty string instead of: \".concat(newClasses[key], \".\")].join('\\n'));\n }\n }\n\n if (newClasses[key]) {\n nextClasses[key] = \"\".concat(baseClasses[key], \" \").concat(newClasses[key]);\n }\n });\n return nextClasses;\n}","import React from 'react';\nvar ThemeContext = React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'ThemeContext';\n}\n\nexport default ThemeContext;","import React from 'react';\nimport ThemeContext from './ThemeContext';\nexport default function useTheme() {\n var theme = React.useContext(ThemeContext);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n\n return theme;\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport PropTypes from 'prop-types';\nimport merge from './merge'; // The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\n\nvar values = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n};\nvar defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: function up(key) {\n return \"@media (min-width:\".concat(values[key], \"px)\");\n }\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n if (process.env.NODE_ENV !== 'production') {\n if (!props.theme) {\n console.error('Material-UI: You are calling a style function without a theme value.');\n }\n }\n\n if (Array.isArray(propValue)) {\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n return propValue.reduce(function (acc, item, index) {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n\n if (_typeof(propValue) === 'object') {\n var _themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n\n return Object.keys(propValue).reduce(function (acc, breakpoint) {\n acc[_themeBreakpoints.up(breakpoint)] = styleFromPropValue(propValue[breakpoint]);\n return acc;\n }, {});\n }\n\n var output = styleFromPropValue(propValue);\n return output;\n}\n\nfunction breakpoints(styleFunction) {\n var newStyleFunction = function newStyleFunction(props) {\n var base = styleFunction(props);\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n var extended = themeBreakpoints.keys.reduce(function (acc, key) {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme: props.theme\n }, props[key]));\n }\n\n return acc;\n }, null);\n return merge(base, extended);\n };\n\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl'].concat(_toConsumableArray(styleFunction.filterProps));\n return newStyleFunction;\n}\n\nexport default breakpoints;","import { deepmerge } from '@material-ui/utils';\n\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n\n });\n}\n\nexport default merge;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport merge from './merge';\nimport memoize from './memoize';\nvar properties = {\n m: 'margin',\n p: 'padding'\n};\nvar directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nvar aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n}; // memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\n\nvar getCssProperties = memoize(function (prop) {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n\n var _prop$split = prop.split(''),\n _prop$split2 = _slicedToArray(_prop$split, 2),\n a = _prop$split2[0],\n b = _prop$split2[1];\n\n var property = properties[a];\n var direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(function (dir) {\n return property + dir;\n }) : [property + direction];\n});\nvar spacingKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY'];\nexport function createUnarySpacing(theme) {\n var themeSpacing = theme.spacing || 8;\n\n if (typeof themeSpacing === 'number') {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(\"Material-UI: Expected spacing argument to be a number, got \".concat(abs, \".\"));\n }\n }\n\n return themeSpacing * abs;\n };\n }\n\n if (Array.isArray(themeSpacing)) {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (abs > themeSpacing.length - 1) {\n console.error([\"Material-UI: The value provided (\".concat(abs, \") overflows.\"), \"The supported values are: \".concat(JSON.stringify(themeSpacing), \".\"), \"\".concat(abs, \" > \").concat(themeSpacing.length - 1, \", you need to add the missing values.\")].join('\\n'));\n }\n }\n\n return themeSpacing[abs];\n };\n }\n\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: The `theme.spacing` value (\".concat(themeSpacing, \") is invalid.\"), 'It should be a number, an array or a function.'].join('\\n'));\n }\n\n return function () {\n return undefined;\n };\n}\n\nfunction getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n\n var abs = Math.abs(propValue);\n var transformed = transformer(abs);\n\n if (propValue >= 0) {\n return transformed;\n }\n\n if (typeof transformed === 'number') {\n return -transformed;\n }\n\n return \"-\".concat(transformed);\n}\n\nfunction getStyleFromPropValue(cssProperties, transformer) {\n return function (propValue) {\n return cssProperties.reduce(function (acc, cssProperty) {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n };\n}\n\nfunction spacing(props) {\n var theme = props.theme;\n var transformer = createUnarySpacing(theme);\n return Object.keys(props).map(function (prop) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (spacingKeys.indexOf(prop) === -1) {\n return null;\n }\n\n var cssProperties = getCssProperties(prop);\n var styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n var propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n }).reduce(merge, {});\n}\n\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce(function (obj, key) {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n\n return cache[arg];\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport function isPlainObject(item) {\n return item && _typeof(item) === 'object' && item.constructor === Object;\n}\nexport default function deepmerge(target, source) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n clone: true\n };\n var output = options.clone ? _extends({}, target) : target;\n\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(function (key) {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n\n if (isPlainObject(source[key]) && key in target) {\n output[key] = deepmerge(target[key], source[key], options);\n } else {\n output[key] = source[key];\n }\n });\n }\n\n return output;\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@material-ui/utils/macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe iff we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n\n /* eslint-disable prefer-template */\n var url = 'https://material-ui.com/production-error/?code=' + code;\n\n for (var i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n\n return 'Minified Material-UI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nexport function invariant(condition: any, format: string, ...args: any[]) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n let error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n let argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() {\n return args[argIndex++];\n })\n );\n error.name = 'Invariant Violation';\n }\n\n (error as any).framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n","export function shallowEqual(\n objA: T,\n objB: T,\n compare?: (a: T, b: T, key?: string) => boolean | void,\n compareContext?: any\n) {\n var compareResult = compare\n ? compare.call(compareContext, objA, objB)\n : void 0;\n if (compareResult !== void 0) {\n return !!compareResult;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = (objA as any)[key];\n var valueB = (objB as any)[key];\n\n compareResult = compare\n ? compare.call(compareContext, valueA, valueB, key)\n : void 0;\n\n if (\n compareResult === false ||\n (compareResult === void 0 && valueA !== valueB)\n ) {\n return false;\n }\n }\n\n return true;\n}\n","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","/* global define */\n(function (root, factory) {\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.compareVersions = factory();\n }\n}(this, function () {\n\n var semver = /^v?(?:\\d+)(\\.(?:[x*]|\\d+)(\\.(?:[x*]|\\d+)(\\.(?:[x*]|\\d+))?(?:-[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?(?:\\+[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?)?)?$/i;\n\n function indexOrEnd(str, q) {\n return str.indexOf(q) === -1 ? str.length : str.indexOf(q);\n }\n\n function split(v) {\n var c = v.replace(/^v/, '').replace(/\\+.*$/, '');\n var patchIndex = indexOrEnd(c, '-');\n var arr = c.substring(0, patchIndex).split('.');\n arr.push(c.substring(patchIndex + 1));\n return arr;\n }\n\n function tryParse(v) {\n return isNaN(Number(v)) ? v : Number(v);\n }\n\n function validate(version) {\n if (typeof version !== 'string') {\n throw new TypeError('Invalid argument expected string');\n }\n if (!semver.test(version)) {\n throw new Error('Invalid argument not valid semver (\\''+version+'\\' received)');\n }\n }\n\n function compareVersions(v1, v2) {\n [v1, v2].forEach(validate);\n\n var s1 = split(v1);\n var s2 = split(v2);\n\n for (var i = 0; i < Math.max(s1.length - 1, s2.length - 1); i++) {\n var n1 = parseInt(s1[i] || 0, 10);\n var n2 = parseInt(s2[i] || 0, 10);\n\n if (n1 > n2) return 1;\n if (n2 > n1) return -1;\n }\n\n var sp1 = s1[s1.length - 1];\n var sp2 = s2[s2.length - 1];\n\n if (sp1 && sp2) {\n var p1 = sp1.split('.').map(tryParse);\n var p2 = sp2.split('.').map(tryParse);\n\n for (i = 0; i < Math.max(p1.length, p2.length); i++) {\n if (p1[i] === undefined || typeof p2[i] === 'string' && typeof p1[i] === 'number') return -1;\n if (p2[i] === undefined || typeof p1[i] === 'string' && typeof p2[i] === 'number') return 1;\n\n if (p1[i] > p2[i]) return 1;\n if (p2[i] > p1[i]) return -1;\n }\n } else if (sp1 || sp2) {\n return sp1 ? -1 : 1;\n }\n\n return 0;\n };\n\n var allowedOperators = [\n '>',\n '>=',\n '=',\n '<',\n '<='\n ];\n\n var operatorResMap = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1]\n };\n\n function validateOperator(op) {\n if (typeof op !== 'string') {\n throw new TypeError('Invalid operator type, expected string but got ' + typeof op);\n }\n if (allowedOperators.indexOf(op) === -1) {\n throw new TypeError('Invalid operator, expected one of ' + allowedOperators.join('|'));\n }\n }\n\n compareVersions.validate = function(version) {\n return typeof version === 'string' && semver.test(version);\n }\n\n compareVersions.compare = function (v1, v2, operator) {\n // Validate operator\n validateOperator(operator);\n\n // since result of compareVersions can only be -1 or 0 or 1\n // a simple map can be used to replace switch\n var res = compareVersions(v1, v2);\n return operatorResMap[operator].indexOf(res) > -1;\n }\n\n return compareVersions;\n}));\n","require('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n","require('../../modules/es.array.is-array');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.isArray;\n","require('../../../modules/es.array.concat');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').concat;\n","require('../../../modules/es.array.every');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').every;\n","require('../../../modules/es.array.filter');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').filter;\n","require('../../../modules/es.array.find-index');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').findIndex;\n","require('../../../modules/es.array.for-each');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').forEach;\n","require('../../../modules/es.array.index-of');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').indexOf;\n","require('../../../modules/es.array.map');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').map;\n","require('../../../modules/es.array.reduce');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').reduce;\n","require('../../../modules/es.array.slice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').slice;\n","require('../../../modules/es.array.some');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').some;\n","require('../../../modules/es.array.sort');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').sort;\n","require('../../../modules/es.array.splice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').splice;\n","require('../../../modules/es.function.bind');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Function').bind;\n","var bind = require('../function/virtual/bind');\n\nvar FunctionPrototype = Function.prototype;\n\nmodule.exports = function (it) {\n var own = it.bind;\n return it === FunctionPrototype || (it instanceof Function && own === FunctionPrototype.bind) ? bind : own;\n};\n","var concat = require('../array/virtual/concat');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.concat;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.concat) ? concat : own;\n};\n","var every = require('../array/virtual/every');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.every;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.every) ? every : own;\n};\n","var filter = require('../array/virtual/filter');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.filter;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.filter) ? filter : own;\n};\n","var findIndex = require('../array/virtual/find-index');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.findIndex;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.findIndex) ? findIndex : own;\n};\n","var indexOf = require('../array/virtual/index-of');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.indexOf;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.indexOf) ? indexOf : own;\n};\n","var map = require('../array/virtual/map');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.map;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.map) ? map : own;\n};\n","var reduce = require('../array/virtual/reduce');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.reduce;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.reduce) ? reduce : own;\n};\n","var slice = require('../array/virtual/slice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.slice;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.slice) ? slice : own;\n};\n","var some = require('../array/virtual/some');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.some;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.some) ? some : own;\n};\n","var sort = require('../array/virtual/sort');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.sort;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.sort) ? sort : own;\n};\n","var splice = require('../array/virtual/splice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.splice;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.splice) ? splice : own;\n};\n","var startsWith = require('../string/virtual/starts-with');\n\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n var own = it.startsWith;\n return typeof it === 'string' || it === StringPrototype\n || (it instanceof String && own === StringPrototype.startsWith) ? startsWith : own;\n};\n","var trim = require('../string/virtual/trim');\n\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n var own = it.trim;\n return typeof it === 'string' || it === StringPrototype\n || (it instanceof String && own === StringPrototype.trim) ? trim : own;\n};\n","require('../../modules/es.object.assign');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.assign;\n","require('../../modules/es.object.create');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nmodule.exports = function create(P, D) {\n return Object.create(P, D);\n};\n","require('../../modules/es.object.define-properties');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperties = module.exports = function defineProperties(T, D) {\n return Object.defineProperties(T, D);\n};\n\nif (Object.defineProperties.sham) defineProperties.sham = true;\n","require('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n","require('../../modules/es.object.entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.entries;\n","require('../../modules/es.object.get-own-property-descriptor');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {\n return Object.getOwnPropertyDescriptor(it, key);\n};\n\nif (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true;\n","require('../../modules/es.object.get-own-property-descriptors');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getOwnPropertyDescriptors;\n","require('../../modules/es.symbol');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getOwnPropertySymbols;\n","require('../../modules/es.object.get-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getPrototypeOf;\n","require('../../modules/es.object.keys');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.keys;\n","require('../../modules/es.object.set-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.setPrototypeOf;\n","require('../../modules/es.object.values');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.values;\n","require('../modules/es.parse-int');\nvar path = require('../internals/path');\n\nmodule.exports = path.parseInt;\n","require('../../modules/es.reflect.construct');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Reflect.construct;\n","require('../../../modules/es.string.starts-with');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').startsWith;\n","require('../../../modules/es.string.trim');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').trim;\n","require('../../modules/es.array.concat');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.symbol');\nrequire('../../modules/es.symbol.async-iterator');\nrequire('../../modules/es.symbol.description');\nrequire('../../modules/es.symbol.has-instance');\nrequire('../../modules/es.symbol.is-concat-spreadable');\nrequire('../../modules/es.symbol.iterator');\nrequire('../../modules/es.symbol.match');\nrequire('../../modules/es.symbol.match-all');\nrequire('../../modules/es.symbol.replace');\nrequire('../../modules/es.symbol.search');\nrequire('../../modules/es.symbol.species');\nrequire('../../modules/es.symbol.split');\nrequire('../../modules/es.symbol.to-primitive');\nrequire('../../modules/es.symbol.to-string-tag');\nrequire('../../modules/es.symbol.unscopables');\nrequire('../../modules/es.json.to-string-tag');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.reflect.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Symbol;\n","require('../../modules/es.symbol.iterator');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n","var parent = require('../../es/array/from');\n\nmodule.exports = parent;\n","var parent = require('../../es/array/is-array');\n\nmodule.exports = parent;\n","require('../modules/web.dom-collections.iterator');\nrequire('../modules/es.string.iterator');\nvar getIterator = require('../internals/get-iterator');\n\nmodule.exports = getIterator;\n","var parent = require('../../es/instance/index-of');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/slice');\n\nmodule.exports = parent;\n","require('../modules/web.dom-collections.iterator');\nrequire('../modules/es.string.iterator');\nvar isIterable = require('../internals/is-iterable');\n\nmodule.exports = isIterable;\n","var parent = require('../../es/object/assign');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/create');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/get-own-property-symbols');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/get-prototype-of');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/keys');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/set-prototype-of');\n\nmodule.exports = parent;\n","var parent = require('../../es/symbol');\nrequire('../../modules/esnext.symbol.async-dispose');\nrequire('../../modules/esnext.symbol.dispose');\nrequire('../../modules/esnext.symbol.observable');\nrequire('../../modules/esnext.symbol.pattern-match');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.replace-all');\n\nmodule.exports = parent;\n","var parent = require('../../es/symbol/iterator');\n\nmodule.exports = parent;\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","module.exports = function () { /* empty */ };\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","var path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR) {\n return path[CONSTRUCTOR + 'Prototype'];\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof NativeConstructor) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return NativeConstructor.apply(this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n var target = GLOBAL ? path : path[TARGET] || (path[TARGET] = {});\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && has(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (USE_NATIVE && typeof targetProperty === typeof sourceProperty) continue;\n\n // bind timers to global for call from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n // wrap global constructors for prevent changs in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && typeof sourceProperty == 'function') resultProperty = bind(Function.call, sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n target[key] = resultProperty;\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!has(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n path[VIRTUAL_PROTOTYPE][key] = sourceProperty;\n // export real prototype methods\n if (options.real && targetPrototype && !targetPrototype[key]) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar aFunction = require('../internals/a-function');\nvar isObject = require('../internals/is-object');\n\nvar slice = [].slice;\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!(argsLength in factories)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.github.io/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = slice.call(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = partArgs.concat(slice.call(arguments));\n return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);\n };\n if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;\n return boundFunction;\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n (function () { return this; })() || Function('return this')();\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = {};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var classof = require('../internals/classof');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = true;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","module.exports = {};\n","var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n if (options && options.enumerable) target[key] = value;\n else createNonEnumerableProperty(target, key, value);\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n if (it) {\n var target = STATIC ? it : it.prototype;\n if (!has(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty(target, 'toString', toString);\n }\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.8.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('every');\n\n// `Array.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX);\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.github.io/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('some');\n\n// `Array.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar test = [];\nvar nativeSort = test.sort;\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.github.io/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true }, {\n bind: bind\n});\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n create: create\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperties: defineProperties\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModile = require('../internals/object-define-property');\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperty: objectDefinePropertyModile.f\n});\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.github.io/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n setPrototypeOf: setPrototypeOf\n});\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aFunction = require('../internals/a-function');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar bind = require('../internals/function-bind');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\n\n// `Reflect.construct` method\n// https://tc39.github.io/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeStartsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return nativeStartsWith\n ? nativeStartsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matchAll` well-known symbol\ndefineWellKnownSymbol('matchAll');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.match` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.search` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.species` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.split` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('asyncDispose');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('dispose');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n","// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\ndefineWellKnownSymbol('replaceAll');\n","require('./es.array.iterator');\nvar DOMIterables = require('../internals/dom-iterables');\nvar global = require('../internals/global');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\n\nvar wrap = function (scheduler) {\n return function (handler, timeout /* , ...arguments */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : undefined;\n return scheduler(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof handler == 'function' ? handler : Function(handler)).apply(this, args);\n } : handler, timeout);\n };\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n$({ global: true, bind: true, forced: MSIE }, {\n // `setTimeout` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n setTimeout: wrap(global.setTimeout),\n // `setInterval` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n setInterval: wrap(global.setInterval)\n});\n","var parent = require('../../es/array/is-array');\n\nmodule.exports = parent;\n","var parent = require('../../../es/array/virtual/for-each');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/bind');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/concat');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/every');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/filter');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/find-index');\n\nmodule.exports = parent;\n","require('../../modules/web.dom-collections.iterator');\nvar forEach = require('../array/virtual/for-each');\nvar classof = require('../../internals/classof');\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n DOMTokenList: true,\n NodeList: true\n};\n\nmodule.exports = function (it) {\n var own = it.forEach;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.forEach)\n // eslint-disable-next-line no-prototype-builtins\n || DOMIterables.hasOwnProperty(classof(it)) ? forEach : own;\n};\n","var parent = require('../../es/instance/index-of');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/map');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/reduce');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/slice');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/some');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/sort');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/splice');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/starts-with');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/trim');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/assign');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/define-properties');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/entries');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/get-own-property-descriptor');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/get-own-property-descriptors');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/get-own-property-symbols');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/keys');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/values');\n\nmodule.exports = parent;\n","var parent = require('../es/parse-int');\n\nmodule.exports = parent;\n","var parent = require('../../es/reflect/construct');\n\nmodule.exports = parent;\n","require('../modules/web.timers');\nvar path = require('../internals/path');\n\nmodule.exports = path.setTimeout;\n","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexport var isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\n\nexport default isBrowser;\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport isInBrowser from 'is-in-browser';\nimport warning from 'tiny-warning';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\nvar plainObjectConstrurctor = {}.constructor;\nfunction cloneStyle(style) {\n if (style == null || typeof style !== 'object') return style;\n if (Array.isArray(style)) return style.map(cloneStyle);\n if (style.constructor !== plainObjectConstrurctor) return style;\n var newStyle = {};\n\n for (var name in style) {\n newStyle[name] = cloneStyle(style[name]);\n }\n\n return newStyle;\n}\n\n/**\n * Create a rule instance.\n */\n\nfunction createRule(name, decl, options) {\n if (name === void 0) {\n name = 'unnamed';\n }\n\n var jss = options.jss;\n var declCopy = cloneStyle(decl);\n var rule = jss.plugins.onCreateRule(name, declCopy, options);\n if (rule) return rule; // It is an at-rule and it has no instance.\n\n if (name[0] === '@') {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown rule \" + name) : void 0;\n }\n\n return null;\n}\n\nvar join = function join(value, by) {\n var result = '';\n\n for (var i = 0; i < value.length; i++) {\n // Remove !important from the value, it will be readded later.\n if (value[i] === '!important') break;\n if (result) result += by;\n result += value[i];\n }\n\n return result;\n};\n\n/**\n * Converts array values to string.\n *\n * `margin: [['5px', '10px']]` > `margin: 5px 10px;`\n * `border: ['1px', '2px']` > `border: 1px, 2px;`\n * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`\n * `color: ['red', !important]` > `color: red !important;`\n */\nvar toCssValue = function toCssValue(value, ignoreImportant) {\n if (ignoreImportant === void 0) {\n ignoreImportant = false;\n }\n\n if (!Array.isArray(value)) return value;\n var cssValue = ''; // Support space separated values via `[['5px', '10px']]`.\n\n if (Array.isArray(value[0])) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] === '!important') break;\n if (cssValue) cssValue += ', ';\n cssValue += join(value[i], ' ');\n }\n } else cssValue = join(value, ', '); // Add !important, because it was ignored.\n\n\n if (!ignoreImportant && value[value.length - 1] === '!important') {\n cssValue += ' !important';\n }\n\n return cssValue;\n};\n\n/**\n * Indent a string.\n * http://jsperf.com/array-join-vs-for\n */\nfunction indentStr(str, indent) {\n var result = '';\n\n for (var index = 0; index < indent; index++) {\n result += ' ';\n }\n\n return result + str;\n}\n/**\n * Converts a Rule to CSS string.\n */\n\n\nfunction toCss(selector, style, options) {\n if (options === void 0) {\n options = {};\n }\n\n var result = '';\n if (!style) return result;\n var _options = options,\n _options$indent = _options.indent,\n indent = _options$indent === void 0 ? 0 : _options$indent;\n var fallbacks = style.fallbacks;\n if (selector) indent++; // Apply fallbacks first.\n\n if (fallbacks) {\n // Array syntax {fallbacks: [{prop: value}]}\n if (Array.isArray(fallbacks)) {\n for (var index = 0; index < fallbacks.length; index++) {\n var fallback = fallbacks[index];\n\n for (var prop in fallback) {\n var value = fallback[prop];\n\n if (value != null) {\n if (result) result += '\\n';\n result += \"\" + indentStr(prop + \": \" + toCssValue(value) + \";\", indent);\n }\n }\n }\n } else {\n // Object syntax {fallbacks: {prop: value}}\n for (var _prop in fallbacks) {\n var _value = fallbacks[_prop];\n\n if (_value != null) {\n if (result) result += '\\n';\n result += \"\" + indentStr(_prop + \": \" + toCssValue(_value) + \";\", indent);\n }\n }\n }\n }\n\n for (var _prop2 in style) {\n var _value2 = style[_prop2];\n\n if (_value2 != null && _prop2 !== 'fallbacks') {\n if (result) result += '\\n';\n result += \"\" + indentStr(_prop2 + \": \" + toCssValue(_value2) + \";\", indent);\n }\n } // Allow empty style in this case, because properties will be added dynamically.\n\n\n if (!result && !options.allowEmpty) return result; // When rule is being stringified before selector was defined.\n\n if (!selector) return result;\n indent--;\n if (result) result = \"\\n\" + result + \"\\n\";\n return indentStr(selector + \" {\" + result, indent) + indentStr('}', indent);\n}\n\nvar escapeRegex = /([[\\].#*$><+~=|^:(),\"'`\\s])/g;\nvar nativeEscape = typeof CSS !== 'undefined' && CSS.escape;\nvar escape = (function (str) {\n return nativeEscape ? nativeEscape(str) : str.replace(escapeRegex, '\\\\$1');\n});\n\nvar BaseStyleRule =\n/*#__PURE__*/\nfunction () {\n function BaseStyleRule(key, style, options) {\n this.type = 'style';\n this.key = void 0;\n this.isProcessed = false;\n this.style = void 0;\n this.renderer = void 0;\n this.renderable = void 0;\n this.options = void 0;\n var sheet = options.sheet,\n Renderer = options.Renderer;\n this.key = key;\n this.options = options;\n this.style = style;\n if (sheet) this.renderer = sheet.renderer;else if (Renderer) this.renderer = new Renderer();\n }\n /**\n * Get or set a style property.\n */\n\n\n var _proto = BaseStyleRule.prototype;\n\n _proto.prop = function prop(name, value, options) {\n // It's a getter.\n if (value === undefined) return this.style[name]; // Don't do anything if the value has not changed.\n\n var force = options ? options.force : false;\n if (!force && this.style[name] === value) return this;\n var newValue = value;\n\n if (!options || options.process !== false) {\n newValue = this.options.jss.plugins.onChangeValue(value, name, this);\n }\n\n var isEmpty = newValue == null || newValue === false;\n var isDefined = name in this.style; // Value is empty and wasn't defined before.\n\n if (isEmpty && !isDefined && !force) return this; // We are going to remove this value.\n\n var remove = isEmpty && isDefined;\n if (remove) delete this.style[name];else this.style[name] = newValue; // Renderable is defined if StyleSheet option `link` is true.\n\n if (this.renderable && this.renderer) {\n if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, newValue);\n return this;\n }\n\n var sheet = this.options.sheet;\n\n if (sheet && sheet.attached) {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Rule is not linked. Missing sheet option \"link: true\".') : void 0;\n }\n\n return this;\n };\n\n return BaseStyleRule;\n}();\nvar StyleRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(StyleRule, _BaseStyleRule);\n\n function StyleRule(key, style, options) {\n var _this;\n\n _this = _BaseStyleRule.call(this, key, style, options) || this;\n _this.selectorText = void 0;\n _this.id = void 0;\n _this.renderable = void 0;\n var selector = options.selector,\n scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n\n if (selector) {\n _this.selectorText = selector;\n } else if (scoped !== false) {\n _this.id = generateId(_assertThisInitialized(_assertThisInitialized(_this)), sheet);\n _this.selectorText = \".\" + escape(_this.id);\n }\n\n return _this;\n }\n /**\n * Set selector string.\n * Attention: use this with caution. Most browsers didn't implement\n * selectorText setter, so this may result in rerendering of entire Style Sheet.\n */\n\n\n var _proto2 = StyleRule.prototype;\n\n /**\n * Apply rule to an element inline.\n */\n _proto2.applyTo = function applyTo(renderable) {\n var renderer = this.renderer;\n\n if (renderer) {\n var json = this.toJSON();\n\n for (var prop in json) {\n renderer.setProperty(renderable, prop, json[prop]);\n }\n }\n\n return this;\n }\n /**\n * Returns JSON representation of the rule.\n * Fallbacks are not supported.\n * Useful for inline styles.\n */\n ;\n\n _proto2.toJSON = function toJSON() {\n var json = {};\n\n for (var prop in this.style) {\n var value = this.style[prop];\n if (typeof value !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = toCssValue(value);\n }\n\n return json;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto2.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.selectorText, this.style, opts);\n };\n\n _createClass(StyleRule, [{\n key: \"selector\",\n set: function set(selector) {\n if (selector === this.selectorText) return;\n this.selectorText = selector;\n var renderer = this.renderer,\n renderable = this.renderable;\n if (!renderable || !renderer) return;\n var hasChanged = renderer.setSelector(renderable, selector); // If selector setter is not implemented, rerender the rule.\n\n if (!hasChanged) {\n renderer.replaceRule(renderable, this);\n }\n }\n /**\n * Get selector string.\n */\n ,\n get: function get() {\n return this.selectorText;\n }\n }]);\n\n return StyleRule;\n}(BaseStyleRule);\nvar pluginStyleRule = {\n onCreateRule: function onCreateRule(name, style, options) {\n if (name[0] === '@' || options.parent && options.parent.type === 'keyframes') {\n return null;\n }\n\n return new StyleRule(name, style, options);\n }\n};\n\nvar defaultToStringOptions = {\n indent: 1,\n children: true\n};\nvar atRegExp = /@([\\w-]+)/;\n/**\n * Conditional rule for @media, @supports\n */\n\nvar ConditionalRule =\n/*#__PURE__*/\nfunction () {\n function ConditionalRule(key, styles, options) {\n this.type = 'conditional';\n this.at = void 0;\n this.key = void 0;\n this.query = void 0;\n this.rules = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n var atMatch = key.match(atRegExp);\n this.at = atMatch ? atMatch[1] : 'unknown'; // Key might contain a unique suffix in case the `name` passed by user was duplicate.\n\n this.query = options.name || \"@\" + this.at;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = ConditionalRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions;\n }\n\n if (options.indent == null) options.indent = defaultToStringOptions.indent;\n if (options.children == null) options.children = defaultToStringOptions.children;\n\n if (options.children === false) {\n return this.query + \" {}\";\n }\n\n var children = this.rules.toString(options);\n return children ? this.query + \" {\\n\" + children + \"\\n}\" : '';\n };\n\n return ConditionalRule;\n}();\nvar keyRegExp = /@media|@supports\\s+/;\nvar pluginConditionalRule = {\n onCreateRule: function onCreateRule(key, styles, options) {\n return keyRegExp.test(key) ? new ConditionalRule(key, styles, options) : null;\n }\n};\n\nvar defaultToStringOptions$1 = {\n indent: 1,\n children: true\n};\nvar nameRegExp = /@keyframes\\s+([\\w-]+)/;\n/**\n * Rule for @keyframes\n */\n\nvar KeyframesRule =\n/*#__PURE__*/\nfunction () {\n function KeyframesRule(key, frames, options) {\n this.type = 'keyframes';\n this.at = '@keyframes';\n this.key = void 0;\n this.name = void 0;\n this.id = void 0;\n this.rules = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n var nameMatch = key.match(nameRegExp);\n\n if (nameMatch && nameMatch[1]) {\n this.name = nameMatch[1];\n } else {\n this.name = 'noname';\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Bad keyframes name \" + key) : void 0;\n }\n\n this.key = this.type + \"-\" + this.name;\n this.options = options;\n var scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n this.id = scoped === false ? this.name : escape(generateId(this, sheet));\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in frames) {\n this.rules.add(name, frames[name], _extends({}, options, {\n parent: this\n }));\n }\n\n this.rules.process();\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = KeyframesRule.prototype;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions$1;\n }\n\n if (options.indent == null) options.indent = defaultToStringOptions$1.indent;\n if (options.children == null) options.children = defaultToStringOptions$1.children;\n\n if (options.children === false) {\n return this.at + \" \" + this.id + \" {}\";\n }\n\n var children = this.rules.toString(options);\n if (children) children = \"\\n\" + children + \"\\n\";\n return this.at + \" \" + this.id + \" {\" + children + \"}\";\n };\n\n return KeyframesRule;\n}();\nvar keyRegExp$1 = /@keyframes\\s+/;\nvar refRegExp = /\\$([\\w-]+)/g;\n\nvar findReferencedKeyframe = function findReferencedKeyframe(val, keyframes) {\n if (typeof val === 'string') {\n return val.replace(refRegExp, function (match, name) {\n if (name in keyframes) {\n return keyframes[name];\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced keyframes rule \\\"\" + name + \"\\\" is not defined.\") : void 0;\n return match;\n });\n }\n\n return val;\n};\n/**\n * Replace the reference for a animation name.\n */\n\n\nvar replaceRef = function replaceRef(style, prop, keyframes) {\n var value = style[prop];\n var refKeyframe = findReferencedKeyframe(value, keyframes);\n\n if (refKeyframe !== value) {\n style[prop] = refKeyframe;\n }\n};\n\nvar plugin = {\n onCreateRule: function onCreateRule(key, frames, options) {\n return typeof key === 'string' && keyRegExp$1.test(key) ? new KeyframesRule(key, frames, options) : null;\n },\n // Animation name ref replacer.\n onProcessStyle: function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style' || !sheet) return style;\n if ('animation-name' in style) replaceRef(style, 'animation-name', sheet.keyframes);\n if ('animation' in style) replaceRef(style, 'animation', sheet.keyframes);\n return style;\n },\n onChangeValue: function onChangeValue(val, prop, rule) {\n var sheet = rule.options.sheet;\n\n if (!sheet) {\n return val;\n }\n\n switch (prop) {\n case 'animation':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n case 'animation-name':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n default:\n return val;\n }\n }\n};\n\nvar KeyframeRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(KeyframeRule, _BaseStyleRule);\n\n function KeyframeRule() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _BaseStyleRule.call.apply(_BaseStyleRule, [this].concat(args)) || this;\n _this.renderable = void 0;\n return _this;\n }\n\n var _proto = KeyframeRule.prototype;\n\n /**\n * Generates a CSS string.\n */\n _proto.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.key, this.style, opts);\n };\n\n return KeyframeRule;\n}(BaseStyleRule);\nvar pluginKeyframeRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (options.parent && options.parent.type === 'keyframes') {\n return new KeyframeRule(key, style, options);\n }\n\n return null;\n }\n};\n\nvar FontFaceRule =\n/*#__PURE__*/\nfunction () {\n function FontFaceRule(key, style, options) {\n this.type = 'font-face';\n this.at = '@font-face';\n this.key = void 0;\n this.style = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = FontFaceRule.prototype;\n\n _proto.toString = function toString(options) {\n if (Array.isArray(this.style)) {\n var str = '';\n\n for (var index = 0; index < this.style.length; index++) {\n str += toCss(this.at, this.style[index]);\n if (this.style[index + 1]) str += '\\n';\n }\n\n return str;\n }\n\n return toCss(this.at, this.style, options);\n };\n\n return FontFaceRule;\n}();\nvar keyRegExp$2 = /@font-face/;\nvar pluginFontFaceRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return keyRegExp$2.test(key) ? new FontFaceRule(key, style, options) : null;\n }\n};\n\nvar ViewportRule =\n/*#__PURE__*/\nfunction () {\n function ViewportRule(key, style, options) {\n this.type = 'viewport';\n this.at = '@viewport';\n this.key = void 0;\n this.style = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = ViewportRule.prototype;\n\n _proto.toString = function toString(options) {\n return toCss(this.key, this.style, options);\n };\n\n return ViewportRule;\n}();\nvar pluginViewportRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return key === '@viewport' || key === '@-ms-viewport' ? new ViewportRule(key, style, options) : null;\n }\n};\n\nvar SimpleRule =\n/*#__PURE__*/\nfunction () {\n function SimpleRule(key, value, options) {\n this.type = 'simple';\n this.key = void 0;\n this.value = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n this.value = value;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n // eslint-disable-next-line no-unused-vars\n\n\n var _proto = SimpleRule.prototype;\n\n _proto.toString = function toString(options) {\n if (Array.isArray(this.value)) {\n var str = '';\n\n for (var index = 0; index < this.value.length; index++) {\n str += this.key + \" \" + this.value[index] + \";\";\n if (this.value[index + 1]) str += '\\n';\n }\n\n return str;\n }\n\n return this.key + \" \" + this.value + \";\";\n };\n\n return SimpleRule;\n}();\nvar keysMap = {\n '@charset': true,\n '@import': true,\n '@namespace': true\n};\nvar pluginSimpleRule = {\n onCreateRule: function onCreateRule(key, value, options) {\n return key in keysMap ? new SimpleRule(key, value, options) : null;\n }\n};\n\nvar plugins = [pluginStyleRule, pluginConditionalRule, plugin, pluginKeyframeRule, pluginFontFaceRule, pluginViewportRule, pluginSimpleRule];\n\nvar defaultUpdateOptions = {\n process: true\n};\nvar forceUpdateOptions = {\n force: true,\n process: true\n /**\n * Contains rules objects and allows adding/removing etc.\n * Is used for e.g. by `StyleSheet` or `ConditionalRule`.\n */\n\n};\n\nvar RuleList =\n/*#__PURE__*/\nfunction () {\n // Rules registry for access by .get() method.\n // It contains the same rule registered by name and by selector.\n // Original styles object.\n // Used to ensure correct rules order.\n function RuleList(options) {\n this.map = {};\n this.raw = {};\n this.index = [];\n this.counter = 0;\n this.options = void 0;\n this.classes = void 0;\n this.keyframes = void 0;\n this.options = options;\n this.classes = options.classes;\n this.keyframes = options.keyframes;\n }\n /**\n * Create and register rule.\n *\n * Will not render after Style Sheet was rendered the first time.\n */\n\n\n var _proto = RuleList.prototype;\n\n _proto.add = function add(name, decl, ruleOptions) {\n var _this$options = this.options,\n parent = _this$options.parent,\n sheet = _this$options.sheet,\n jss = _this$options.jss,\n Renderer = _this$options.Renderer,\n generateId = _this$options.generateId,\n scoped = _this$options.scoped;\n\n var options = _extends({\n classes: this.classes,\n parent: parent,\n sheet: sheet,\n jss: jss,\n Renderer: Renderer,\n generateId: generateId,\n scoped: scoped,\n name: name,\n keyframes: this.keyframes,\n selector: undefined\n }, ruleOptions); // When user uses .createStyleSheet(), duplicate names are not possible, but\n // `sheet.addRule()` opens the door for any duplicate rule name. When this happens\n // we need to make the key unique within this RuleList instance scope.\n\n\n var key = name;\n\n if (name in this.raw) {\n key = name + \"-d\" + this.counter++;\n } // We need to save the original decl before creating the rule\n // because cache plugin needs to use it as a key to return a cached rule.\n\n\n this.raw[key] = decl;\n\n if (key in this.classes) {\n // E.g. rules inside of @media container\n options.selector = \".\" + escape(this.classes[key]);\n }\n\n var rule = createRule(key, decl, options);\n if (!rule) return null;\n this.register(rule);\n var index = options.index === undefined ? this.index.length : options.index;\n this.index.splice(index, 0, rule);\n return rule;\n }\n /**\n * Get a rule.\n */\n ;\n\n _proto.get = function get(name) {\n return this.map[name];\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.remove = function remove(rule) {\n this.unregister(rule);\n delete this.raw[rule.key];\n this.index.splice(this.index.indexOf(rule), 1);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.index.indexOf(rule);\n }\n /**\n * Run `onProcessRule()` plugins on every rule.\n */\n ;\n\n _proto.process = function process() {\n var plugins = this.options.jss.plugins; // We need to clone array because if we modify the index somewhere else during a loop\n // we end up with very hard-to-track-down side effects.\n\n this.index.slice(0).forEach(plugins.onProcessRule, plugins);\n }\n /**\n * Register a rule in `.map`, `.classes` and `.keyframes` maps.\n */\n ;\n\n _proto.register = function register(rule) {\n this.map[rule.key] = rule;\n\n if (rule instanceof StyleRule) {\n this.map[rule.selector] = rule;\n if (rule.id) this.classes[rule.key] = rule.id;\n } else if (rule instanceof KeyframesRule && this.keyframes) {\n this.keyframes[rule.name] = rule.id;\n }\n }\n /**\n * Unregister a rule.\n */\n ;\n\n _proto.unregister = function unregister(rule) {\n delete this.map[rule.key];\n\n if (rule instanceof StyleRule) {\n delete this.map[rule.selector];\n delete this.classes[rule.key];\n } else if (rule instanceof KeyframesRule) {\n delete this.keyframes[rule.name];\n }\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var name;\n var data;\n var options;\n\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {\n name = arguments.length <= 0 ? undefined : arguments[0]; // $FlowFixMe[invalid-tuple-index]\n\n data = arguments.length <= 1 ? undefined : arguments[1]; // $FlowFixMe[invalid-tuple-index]\n\n options = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n data = arguments.length <= 0 ? undefined : arguments[0]; // $FlowFixMe[invalid-tuple-index]\n\n options = arguments.length <= 1 ? undefined : arguments[1];\n name = null;\n }\n\n if (name) {\n this.updateOne(this.map[name], data, options);\n } else {\n for (var index = 0; index < this.index.length; index++) {\n this.updateOne(this.index[index], data, options);\n }\n }\n }\n /**\n * Execute plugins, update rule props.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n if (options === void 0) {\n options = defaultUpdateOptions;\n }\n\n var _this$options2 = this.options,\n plugins = _this$options2.jss.plugins,\n sheet = _this$options2.sheet; // It is a rules container like for e.g. ConditionalRule.\n\n if (rule.rules instanceof RuleList) {\n rule.rules.update(data, options);\n return;\n }\n\n var styleRule = rule;\n var style = styleRule.style;\n plugins.onUpdate(data, rule, sheet, options); // We rely on a new `style` ref in case it was mutated during onUpdate hook.\n\n if (options.process && style && style !== styleRule.style) {\n // We need to run the plugins in case new `style` relies on syntax plugins.\n plugins.onProcessStyle(styleRule.style, styleRule, sheet); // Update and add props.\n\n for (var prop in styleRule.style) {\n var nextValue = styleRule.style[prop];\n var prevValue = style[prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (nextValue !== prevValue) {\n styleRule.prop(prop, nextValue, forceUpdateOptions);\n }\n } // Remove props.\n\n\n for (var _prop in style) {\n var _nextValue = styleRule.style[_prop];\n var _prevValue = style[_prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (_nextValue == null && _nextValue !== _prevValue) {\n styleRule.prop(_prop, null, forceUpdateOptions);\n }\n }\n }\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n var str = '';\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n\n for (var index = 0; index < this.index.length; index++) {\n var rule = this.index[index];\n var css = rule.toString(options); // No need to render an empty rule.\n\n if (!css && !link) continue;\n if (str) str += '\\n';\n str += css;\n }\n\n return str;\n };\n\n return RuleList;\n}();\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(styles, options) {\n this.options = void 0;\n this.deployed = void 0;\n this.attached = void 0;\n this.rules = void 0;\n this.renderer = void 0;\n this.classes = void 0;\n this.keyframes = void 0;\n this.queue = void 0;\n this.attached = false;\n this.deployed = false;\n this.classes = {};\n this.keyframes = {};\n this.options = _extends({}, options, {\n sheet: this,\n parent: this,\n classes: this.classes,\n keyframes: this.keyframes\n });\n\n if (options.Renderer) {\n this.renderer = new options.Renderer(this);\n }\n\n this.rules = new RuleList(this.options);\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Attach renderable to the render tree.\n */\n\n\n var _proto = StyleSheet.prototype;\n\n _proto.attach = function attach() {\n if (this.attached) return this;\n if (this.renderer) this.renderer.attach();\n this.attached = true; // Order is important, because we can't use insertRule API if style element is not attached.\n\n if (!this.deployed) this.deploy();\n return this;\n }\n /**\n * Remove renderable from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.attached) return this;\n if (this.renderer) this.renderer.detach();\n this.attached = false;\n return this;\n }\n /**\n * Add a rule to the current stylesheet.\n * Will insert a rule also after the stylesheet has been rendered first time.\n */\n ;\n\n _proto.addRule = function addRule(name, decl, options) {\n var queue = this.queue; // Plugins can create rules.\n // In order to preserve the right order, we need to queue all `.addRule` calls,\n // which happen after the first `rules.add()` call.\n\n if (this.attached && !queue) this.queue = [];\n var rule = this.rules.add(name, decl, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n\n if (this.attached) {\n if (!this.deployed) return rule; // Don't insert rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (queue) queue.push(rule);else {\n this.insertRule(rule);\n\n if (this.queue) {\n this.queue.forEach(this.insertRule, this);\n this.queue = undefined;\n }\n }\n return rule;\n } // We can't add rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n\n this.deployed = false;\n return rule;\n }\n /**\n * Insert rule into the StyleSheet\n */\n ;\n\n _proto.insertRule = function insertRule(rule) {\n if (this.renderer) {\n this.renderer.insertRule(rule);\n }\n }\n /**\n * Create and add rules.\n * Will render also after Style Sheet was rendered the first time.\n */\n ;\n\n _proto.addRules = function addRules(styles, options) {\n var added = [];\n\n for (var name in styles) {\n var rule = this.addRule(name, styles[name], options);\n if (rule) added.push(rule);\n }\n\n return added;\n }\n /**\n * Get a rule by name.\n */\n ;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Delete a rule by name.\n * Returns `true`: if rule has been deleted from the DOM.\n */\n ;\n\n _proto.deleteRule = function deleteRule(name) {\n var rule = typeof name === 'object' ? name : this.rules.get(name);\n\n if (!rule || // Style sheet was created without link: true and attached, in this case we\n // won't be able to remove the CSS rule from the DOM.\n this.attached && !rule.renderable) {\n return false;\n }\n\n this.rules.remove(rule);\n\n if (this.attached && rule.renderable && this.renderer) {\n return this.renderer.deleteRule(rule.renderable);\n }\n\n return true;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Deploy pure CSS string to a renderable.\n */\n ;\n\n _proto.deploy = function deploy() {\n if (this.renderer) this.renderer.deploy();\n this.deployed = true;\n return this;\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var _this$rules;\n\n (_this$rules = this.rules).update.apply(_this$rules, arguments);\n\n return this;\n }\n /**\n * Updates a single rule.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n this.rules.updateOne(rule, data, options);\n return this;\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n return this.rules.toString(options);\n };\n\n return StyleSheet;\n}();\n\nvar PluginsRegistry =\n/*#__PURE__*/\nfunction () {\n function PluginsRegistry() {\n this.plugins = {\n internal: [],\n external: []\n };\n this.registry = void 0;\n }\n\n var _proto = PluginsRegistry.prototype;\n\n /**\n * Call `onCreateRule` hooks and return an object if returned by a hook.\n */\n _proto.onCreateRule = function onCreateRule(name, decl, options) {\n for (var i = 0; i < this.registry.onCreateRule.length; i++) {\n var rule = this.registry.onCreateRule[i](name, decl, options);\n if (rule) return rule;\n }\n\n return null;\n }\n /**\n * Call `onProcessRule` hooks.\n */\n ;\n\n _proto.onProcessRule = function onProcessRule(rule) {\n if (rule.isProcessed) return;\n var sheet = rule.options.sheet;\n\n for (var i = 0; i < this.registry.onProcessRule.length; i++) {\n this.registry.onProcessRule[i](rule, sheet);\n }\n\n if (rule.style) this.onProcessStyle(rule.style, rule, sheet);\n rule.isProcessed = true;\n }\n /**\n * Call `onProcessStyle` hooks.\n */\n ;\n\n _proto.onProcessStyle = function onProcessStyle(style, rule, sheet) {\n for (var i = 0; i < this.registry.onProcessStyle.length; i++) {\n // $FlowFixMe[prop-missing]\n rule.style = this.registry.onProcessStyle[i](rule.style, rule, sheet);\n }\n }\n /**\n * Call `onProcessSheet` hooks.\n */\n ;\n\n _proto.onProcessSheet = function onProcessSheet(sheet) {\n for (var i = 0; i < this.registry.onProcessSheet.length; i++) {\n this.registry.onProcessSheet[i](sheet);\n }\n }\n /**\n * Call `onUpdate` hooks.\n */\n ;\n\n _proto.onUpdate = function onUpdate(data, rule, sheet, options) {\n for (var i = 0; i < this.registry.onUpdate.length; i++) {\n this.registry.onUpdate[i](data, rule, sheet, options);\n }\n }\n /**\n * Call `onChangeValue` hooks.\n */\n ;\n\n _proto.onChangeValue = function onChangeValue(value, prop, rule) {\n var processedValue = value;\n\n for (var i = 0; i < this.registry.onChangeValue.length; i++) {\n processedValue = this.registry.onChangeValue[i](processedValue, prop, rule);\n }\n\n return processedValue;\n }\n /**\n * Register a plugin.\n */\n ;\n\n _proto.use = function use(newPlugin, options) {\n if (options === void 0) {\n options = {\n queue: 'external'\n };\n }\n\n var plugins = this.plugins[options.queue]; // Avoids applying same plugin twice, at least based on ref.\n\n if (plugins.indexOf(newPlugin) !== -1) {\n return;\n }\n\n plugins.push(newPlugin);\n this.registry = [].concat(this.plugins.external, this.plugins.internal).reduce(function (registry, plugin) {\n for (var name in plugin) {\n if (name in registry) {\n registry[name].push(plugin[name]);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown hook \\\"\" + name + \"\\\".\") : void 0;\n }\n }\n\n return registry;\n }, {\n onCreateRule: [],\n onProcessRule: [],\n onProcessStyle: [],\n onProcessSheet: [],\n onChangeValue: [],\n onUpdate: []\n });\n };\n\n return PluginsRegistry;\n}();\n\n/**\n * Sheets registry to access them all at one place.\n */\nvar SheetsRegistry =\n/*#__PURE__*/\nfunction () {\n function SheetsRegistry() {\n this.registry = [];\n }\n\n var _proto = SheetsRegistry.prototype;\n\n /**\n * Register a Style Sheet.\n */\n _proto.add = function add(sheet) {\n var registry = this.registry;\n var index = sheet.options.index;\n if (registry.indexOf(sheet) !== -1) return;\n\n if (registry.length === 0 || index >= this.index) {\n registry.push(sheet);\n return;\n } // Find a position.\n\n\n for (var i = 0; i < registry.length; i++) {\n if (registry[i].options.index > index) {\n registry.splice(i, 0, sheet);\n return;\n }\n }\n }\n /**\n * Reset the registry.\n */\n ;\n\n _proto.reset = function reset() {\n this.registry = [];\n }\n /**\n * Remove a Style Sheet.\n */\n ;\n\n _proto.remove = function remove(sheet) {\n var index = this.registry.indexOf(sheet);\n this.registry.splice(index, 1);\n }\n /**\n * Convert all attached sheets to a CSS string.\n */\n ;\n\n _proto.toString = function toString(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n attached = _ref.attached,\n options = _objectWithoutPropertiesLoose(_ref, [\"attached\"]);\n\n var css = '';\n\n for (var i = 0; i < this.registry.length; i++) {\n var sheet = this.registry[i];\n\n if (attached != null && sheet.attached !== attached) {\n continue;\n }\n\n if (css) css += '\\n';\n css += sheet.toString(options);\n }\n\n return css;\n };\n\n _createClass(SheetsRegistry, [{\n key: \"index\",\n\n /**\n * Current highest index number.\n */\n get: function get() {\n return this.registry.length === 0 ? 0 : this.registry[this.registry.length - 1].options.index;\n }\n }]);\n\n return SheetsRegistry;\n}();\n\n/**\n * This is a global sheets registry. Only DomRenderer will add sheets to it.\n * On the server one should use an own SheetsRegistry instance and add the\n * sheets to it, because you need to make sure to create a new registry for\n * each request in order to not leak sheets across requests.\n */\n\nvar registry = new SheetsRegistry();\n\n/* eslint-disable */\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar globalThis = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\n\nvar ns = '2f1acc6c3a606b082e5eef5e54414ffb';\nif (globalThis[ns] == null) globalThis[ns] = 0; // Bundle may contain multiple JSS versions at the same time. In order to identify\n// the current version with just one short number and use it for classes generation\n// we use a counter. Also it is more accurate, because user can manually reevaluate\n// the module.\n\nvar moduleId = globalThis[ns]++;\n\nvar maxRules = 1e10;\n\n/**\n * Returns a function which generates unique class names based on counters.\n * When new generator function is created, rule counter is reseted.\n * We need to reset the rule counter for SSR for each request.\n */\nvar createGenerateId = function createGenerateId(options) {\n if (options === void 0) {\n options = {};\n }\n\n var ruleCounter = 0;\n return function (rule, sheet) {\n ruleCounter += 1;\n\n if (ruleCounter > maxRules) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] You might have a memory leak. Rule counter is at \" + ruleCounter + \".\") : void 0;\n }\n\n var jssId = '';\n var prefix = '';\n\n if (sheet) {\n if (sheet.options.classNamePrefix) {\n prefix = sheet.options.classNamePrefix;\n }\n\n if (sheet.options.jss.id != null) {\n jssId = String(sheet.options.jss.id);\n }\n }\n\n if (options.minify) {\n // Using \"c\" because a number can't be the first char in a class name.\n return \"\" + (prefix || 'c') + moduleId + jssId + ruleCounter;\n }\n\n return prefix + rule.key + \"-\" + moduleId + (jssId ? \"-\" + jssId : '') + \"-\" + ruleCounter;\n };\n};\n\n/**\n * Cache the value from the first time a function is called.\n */\nvar memoize = function memoize(fn) {\n var value;\n return function () {\n if (!value) value = fn();\n return value;\n };\n};\n\n/**\n * Get a style property value.\n */\nvar getPropertyValue = function getPropertyValue(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n return cssRule.attributeStyleMap.get(prop);\n }\n\n return cssRule.style.getPropertyValue(prop);\n } catch (err) {\n // IE may throw if property is unknown.\n return '';\n }\n};\n\n/**\n * Set a style property.\n */\nvar setProperty = function setProperty(cssRule, prop, value) {\n try {\n var cssValue = value;\n\n if (Array.isArray(value)) {\n cssValue = toCssValue(value, true);\n\n if (value[value.length - 1] === '!important') {\n cssRule.style.setProperty(prop, cssValue, 'important');\n return true;\n }\n } // Support CSSTOM.\n\n\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.set(prop, cssValue);\n } else {\n cssRule.style.setProperty(prop, cssValue);\n }\n } catch (err) {\n // IE may throw if property is unknown.\n return false;\n }\n\n return true;\n};\n\n/**\n * Remove a style property.\n */\nvar removeProperty = function removeProperty(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.delete(prop);\n } else {\n cssRule.style.removeProperty(prop);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] DOMException \\\"\" + err.message + \"\\\" was thrown. Tried to remove property \\\"\" + prop + \"\\\".\") : void 0;\n }\n};\n\n/**\n * Set the selector.\n */\nvar setSelector = function setSelector(cssRule, selectorText) {\n cssRule.selectorText = selectorText; // Return false if setter was not successful.\n // Currently works in chrome only.\n\n return cssRule.selectorText === selectorText;\n};\n/**\n * Gets the `head` element upon the first call and caches it.\n * We assume it can't be null.\n */\n\n\nvar getHead = memoize(function () {\n return document.querySelector('head');\n});\n/**\n * Find attached sheet with an index higher than the passed one.\n */\n\nfunction findHigherSheet(registry, options) {\n for (var i = 0; i < registry.length; i++) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.index > options.index && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find attached sheet with the highest index.\n */\n\n\nfunction findHighestSheet(registry, options) {\n for (var i = registry.length - 1; i >= 0; i--) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find a comment with \"jss\" inside.\n */\n\n\nfunction findCommentNode(text) {\n var head = getHead();\n\n for (var i = 0; i < head.childNodes.length; i++) {\n var node = head.childNodes[i];\n\n if (node.nodeType === 8 && node.nodeValue.trim() === text) {\n return node;\n }\n }\n\n return null;\n}\n\n/**\n * Find a node before which we can insert the sheet.\n */\nfunction findPrevNode(options) {\n var registry$1 = registry.registry;\n\n if (registry$1.length > 0) {\n // Try to insert before the next higher sheet.\n var sheet = findHigherSheet(registry$1, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element\n };\n } // Otherwise insert after the last attached.\n\n\n sheet = findHighestSheet(registry$1, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element.nextSibling\n };\n }\n } // Try to find a comment placeholder if registry is empty.\n\n\n var insertionPoint = options.insertionPoint;\n\n if (insertionPoint && typeof insertionPoint === 'string') {\n var comment = findCommentNode(insertionPoint);\n\n if (comment) {\n return {\n parent: comment.parentNode,\n node: comment.nextSibling\n };\n } // If user specifies an insertion point and it can't be found in the document -\n // bad specificity issues may appear.\n\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Insertion point \\\"\" + insertionPoint + \"\\\" not found.\") : void 0;\n }\n\n return false;\n}\n/**\n * Insert style element into the DOM.\n */\n\n\nfunction insertStyle(style, options) {\n var insertionPoint = options.insertionPoint;\n var nextNode = findPrevNode(options);\n\n if (nextNode !== false && nextNode.parent) {\n nextNode.parent.insertBefore(style, nextNode.node);\n return;\n } // Works with iframes and any node types.\n\n\n if (insertionPoint && typeof insertionPoint.nodeType === 'number') {\n // https://stackoverflow.com/questions/41328728/force-casting-in-flow\n var insertionPointElement = insertionPoint;\n var parentNode = insertionPointElement.parentNode;\n if (parentNode) parentNode.insertBefore(style, insertionPointElement.nextSibling);else process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Insertion point is not in the DOM.') : void 0;\n return;\n }\n\n getHead().appendChild(style);\n}\n/**\n * Read jss nonce setting from the page if the user has set it.\n */\n\n\nvar getNonce = memoize(function () {\n var node = document.querySelector('meta[property=\"csp-nonce\"]');\n return node ? node.getAttribute('content') : null;\n});\n\nvar _insertRule = function insertRule(container, rule, index) {\n try {\n if ('insertRule' in container) {\n var c = container;\n c.insertRule(rule, index);\n } // Keyframes rule.\n else if ('appendRule' in container) {\n var _c = container;\n\n _c.appendRule(rule);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] \" + err.message) : void 0;\n return false;\n }\n\n return container.cssRules[index];\n};\n\nvar getValidRuleInsertionIndex = function getValidRuleInsertionIndex(container, index) {\n var maxIndex = container.cssRules.length; // In case previous insertion fails, passed index might be wrong\n\n if (index === undefined || index > maxIndex) {\n // eslint-disable-next-line no-param-reassign\n return maxIndex;\n }\n\n return index;\n};\n\nvar createStyle = function createStyle() {\n var el = document.createElement('style'); // Without it, IE will have a broken source order specificity if we\n // insert rules after we insert the style tag.\n // It seems to kick-off the source order specificity algorithm.\n\n el.textContent = '\\n';\n return el;\n};\n\nvar DomRenderer =\n/*#__PURE__*/\nfunction () {\n // HTMLStyleElement needs fixing https://github.com/facebook/flow/issues/2696\n // Will be empty if link: true option is not set, because\n // it is only for use together with insertRule API.\n function DomRenderer(sheet) {\n this.getPropertyValue = getPropertyValue;\n this.setProperty = setProperty;\n this.removeProperty = removeProperty;\n this.setSelector = setSelector;\n this.element = void 0;\n this.sheet = void 0;\n this.hasInsertedRules = false;\n this.cssRules = [];\n // There is no sheet when the renderer is used from a standalone StyleRule.\n if (sheet) registry.add(sheet);\n this.sheet = sheet;\n\n var _ref = this.sheet ? this.sheet.options : {},\n media = _ref.media,\n meta = _ref.meta,\n element = _ref.element;\n\n this.element = element || createStyle();\n this.element.setAttribute('data-jss', '');\n if (media) this.element.setAttribute('media', media);\n if (meta) this.element.setAttribute('data-meta', meta);\n var nonce = getNonce();\n if (nonce) this.element.setAttribute('nonce', nonce);\n }\n /**\n * Insert style element into render tree.\n */\n\n\n var _proto = DomRenderer.prototype;\n\n _proto.attach = function attach() {\n // In the case the element node is external and it is already in the DOM.\n if (this.element.parentNode || !this.sheet) return;\n insertStyle(this.element, this.sheet.options); // When rules are inserted using `insertRule` API, after `sheet.detach().attach()`\n // most browsers create a new CSSStyleSheet, except of all IEs.\n\n var deployed = Boolean(this.sheet && this.sheet.deployed);\n\n if (this.hasInsertedRules && deployed) {\n this.hasInsertedRules = false;\n this.deploy();\n }\n }\n /**\n * Remove style element from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.sheet) return;\n var parentNode = this.element.parentNode;\n if (parentNode) parentNode.removeChild(this.element); // In the most browsers, rules inserted using insertRule() API will be lost when style element is removed.\n // Though IE will keep them and we need a consistent behavior.\n\n if (this.sheet.options.link) {\n this.cssRules = [];\n this.element.textContent = '\\n';\n }\n }\n /**\n * Inject CSS string into element.\n */\n ;\n\n _proto.deploy = function deploy() {\n var sheet = this.sheet;\n if (!sheet) return;\n\n if (sheet.options.link) {\n this.insertRules(sheet.rules);\n return;\n }\n\n this.element.textContent = \"\\n\" + sheet.toString() + \"\\n\";\n }\n /**\n * Insert RuleList into an element.\n */\n ;\n\n _proto.insertRules = function insertRules(rules, nativeParent) {\n for (var i = 0; i < rules.index.length; i++) {\n this.insertRule(rules.index[i], i, nativeParent);\n }\n }\n /**\n * Insert a rule into element.\n */\n ;\n\n _proto.insertRule = function insertRule(rule, index, nativeParent) {\n if (nativeParent === void 0) {\n nativeParent = this.element.sheet;\n }\n\n if (rule.rules) {\n var parent = rule;\n var latestNativeParent = nativeParent;\n\n if (rule.type === 'conditional' || rule.type === 'keyframes') {\n var _insertionIndex = getValidRuleInsertionIndex(nativeParent, index); // We need to render the container without children first.\n\n\n latestNativeParent = _insertRule(nativeParent, parent.toString({\n children: false\n }), _insertionIndex);\n\n if (latestNativeParent === false) {\n return false;\n }\n\n this.refCssRule(rule, _insertionIndex, latestNativeParent);\n }\n\n this.insertRules(parent.rules, latestNativeParent);\n return latestNativeParent;\n }\n\n var ruleStr = rule.toString();\n if (!ruleStr) return false;\n var insertionIndex = getValidRuleInsertionIndex(nativeParent, index);\n\n var nativeRule = _insertRule(nativeParent, ruleStr, insertionIndex);\n\n if (nativeRule === false) {\n return false;\n }\n\n this.hasInsertedRules = true;\n this.refCssRule(rule, insertionIndex, nativeRule);\n return nativeRule;\n };\n\n _proto.refCssRule = function refCssRule(rule, index, cssRule) {\n rule.renderable = cssRule; // We only want to reference the top level rules, deleteRule API doesn't support removing nested rules\n // like rules inside media queries or keyframes\n\n if (rule.options.parent instanceof StyleSheet) {\n this.cssRules[index] = cssRule;\n }\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.deleteRule = function deleteRule(cssRule) {\n var sheet = this.element.sheet;\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return true;\n }\n /**\n * Get index of a CSS Rule.\n */\n ;\n\n _proto.indexOf = function indexOf(cssRule) {\n return this.cssRules.indexOf(cssRule);\n }\n /**\n * Generate a new CSS rule and replace the existing one.\n *\n * Only used for some old browsers because they can't set a selector.\n */\n ;\n\n _proto.replaceRule = function replaceRule(cssRule, rule) {\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n this.element.sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return this.insertRule(rule, index);\n }\n /**\n * Get all rules elements.\n */\n ;\n\n _proto.getRules = function getRules() {\n return this.element.sheet.cssRules;\n };\n\n return DomRenderer;\n}();\n\nvar instanceCounter = 0;\n\nvar Jss =\n/*#__PURE__*/\nfunction () {\n function Jss(options) {\n this.id = instanceCounter++;\n this.version = \"10.5.1\";\n this.plugins = new PluginsRegistry();\n this.options = {\n id: {\n minify: false\n },\n createGenerateId: createGenerateId,\n Renderer: isInBrowser ? DomRenderer : null,\n plugins: []\n };\n this.generateId = createGenerateId({\n minify: false\n });\n\n for (var i = 0; i < plugins.length; i++) {\n this.plugins.use(plugins[i], {\n queue: 'internal'\n });\n }\n\n this.setup(options);\n }\n /**\n * Prepares various options, applies plugins.\n * Should not be used twice on the same instance, because there is no plugins\n * deduplication logic.\n */\n\n\n var _proto = Jss.prototype;\n\n _proto.setup = function setup(options) {\n if (options === void 0) {\n options = {};\n }\n\n if (options.createGenerateId) {\n this.options.createGenerateId = options.createGenerateId;\n }\n\n if (options.id) {\n this.options.id = _extends({}, this.options.id, options.id);\n }\n\n if (options.createGenerateId || options.id) {\n this.generateId = this.options.createGenerateId(this.options.id);\n }\n\n if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;\n\n if ('Renderer' in options) {\n this.options.Renderer = options.Renderer;\n } // eslint-disable-next-line prefer-spread\n\n\n if (options.plugins) this.use.apply(this, options.plugins);\n return this;\n }\n /**\n * Create a Style Sheet.\n */\n ;\n\n _proto.createStyleSheet = function createStyleSheet(styles, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n index = _options.index;\n\n if (typeof index !== 'number') {\n index = registry.index === 0 ? 0 : registry.index + 1;\n }\n\n var sheet = new StyleSheet(styles, _extends({}, options, {\n jss: this,\n generateId: options.generateId || this.generateId,\n insertionPoint: this.options.insertionPoint,\n Renderer: this.options.Renderer,\n index: index\n }));\n this.plugins.onProcessSheet(sheet);\n return sheet;\n }\n /**\n * Detach the Style Sheet and remove it from the registry.\n */\n ;\n\n _proto.removeStyleSheet = function removeStyleSheet(sheet) {\n sheet.detach();\n registry.remove(sheet);\n return this;\n }\n /**\n * Create a rule without a Style Sheet.\n * [Deprecated] will be removed in the next major version.\n */\n ;\n\n _proto.createRule = function createRule$1(name, style, options) {\n if (style === void 0) {\n style = {};\n }\n\n if (options === void 0) {\n options = {};\n }\n\n // Enable rule without name for inline styles.\n if (typeof name === 'object') {\n // $FlowFixMe[incompatible-call]\n return this.createRule(undefined, name, style);\n } // $FlowFixMe[incompatible-type]\n\n\n var ruleOptions = _extends({}, options, {\n name: name,\n jss: this,\n Renderer: this.options.Renderer\n });\n\n if (!ruleOptions.generateId) ruleOptions.generateId = this.generateId;\n if (!ruleOptions.classes) ruleOptions.classes = {};\n if (!ruleOptions.keyframes) ruleOptions.keyframes = {};\n\n var rule = createRule(name, style, ruleOptions);\n\n if (rule) this.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Register plugin. Passed function will be invoked with a rule instance.\n */\n ;\n\n _proto.use = function use() {\n var _this = this;\n\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n plugins.forEach(function (plugin) {\n _this.plugins.use(plugin);\n });\n return this;\n };\n\n return Jss;\n}();\n\n/**\n * Extracts a styles object with only props that contain function values.\n */\nfunction getDynamicStyles(styles) {\n var to = null;\n\n for (var key in styles) {\n var value = styles[key];\n var type = typeof value;\n\n if (type === 'function') {\n if (!to) to = {};\n to[key] = value;\n } else if (type === 'object' && value !== null && !Array.isArray(value)) {\n var extracted = getDynamicStyles(value);\n\n if (extracted) {\n if (!to) to = {};\n to[key] = extracted;\n }\n }\n }\n\n return to;\n}\n\n/**\n * SheetsManager is like a WeakMap which is designed to count StyleSheet\n * instances and attach/detach automatically.\n */\nvar SheetsManager =\n/*#__PURE__*/\nfunction () {\n function SheetsManager() {\n this.length = 0;\n this.sheets = new WeakMap();\n }\n\n var _proto = SheetsManager.prototype;\n\n _proto.get = function get(key) {\n var entry = this.sheets.get(key);\n return entry && entry.sheet;\n };\n\n _proto.add = function add(key, sheet) {\n if (this.sheets.has(key)) return;\n this.length++;\n this.sheets.set(key, {\n sheet: sheet,\n refs: 0\n });\n };\n\n _proto.manage = function manage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs === 0) {\n entry.sheet.attach();\n }\n\n entry.refs++;\n return entry.sheet;\n }\n\n warning(false, \"[JSS] SheetsManager: can't find sheet to manage\");\n return undefined;\n };\n\n _proto.unmanage = function unmanage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs > 0) {\n entry.refs--;\n if (entry.refs === 0) entry.sheet.detach();\n }\n } else {\n warning(false, \"SheetsManager: can't find sheet to unmanage\");\n }\n };\n\n _createClass(SheetsManager, [{\n key: \"size\",\n get: function get() {\n return this.length;\n }\n }]);\n\n return SheetsManager;\n}();\n\n/**\n * A better abstraction over CSS.\n *\n * @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present\n * @website https://github.com/cssinjs/jss\n * @license MIT\n */\n\n/**\n * Export a constant indicating if this browser has CSSTOM support.\n * https://developers.google.com/web/updates/2018/03/cssom\n */\nvar hasCSSTOMSupport = typeof CSS === 'object' && CSS != null && 'number' in CSS;\n/**\n * Creates a new instance of Jss.\n */\n\nvar create = function create(options) {\n return new Jss(options);\n};\n/**\n * A global Jss instance.\n */\n\nvar jss = create();\n\nexport default jss;\nexport { RuleList, SheetsManager, SheetsRegistry, create, createGenerateId, createRule, getDynamicStyles, hasCSSTOMSupport, registry as sheets, toCssValue };\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n});\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = assignWith;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity]\n * The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array ? array.length : 0;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity]\n * The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = find;\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","/**\n * lodash 3.0.1 (Custom Build) \n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n","// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n","/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n\n};\n\nexport const DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hour12: false\n};\n\n/**\n * {@link toLocaleString}; format like '09:30:23', always 24-hour.\n */\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hour12: false\n};\n\n/**\n * {@link toLocaleString}; format like '09:30:23 EDT', always 24-hour.\n */\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hour12: false,\n timeZoneName: s\n};\n\n/**\n * {@link toLocaleString}; format like '09:30:23 Eastern Daylight Time', always 24-hour.\n */\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hour12: false,\n timeZoneName: l\n};\n\n/**\n * {@link toLocaleString}; format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n */\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n\n};\n\n/**\n * {@link toLocaleString}; format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n */\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l\n};\n","/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from \"../errors.js\";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === \"undefined\";\n}\n\nexport function isNumber(o) {\n return typeof o === \"number\";\n}\n\nexport function isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === \"string\";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nexport function hasIntl() {\n try {\n return typeof Intl !== \"undefined\" && Intl.DateTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\nexport function hasFormatToParts() {\n return !isUndefined(Intl.DateTimeFormat.prototype.formatToParts);\n}\n\nexport function hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n const minus = input < 0 ? \"-\" : \"\";\n const target = minus ? input * -1 : input;\n let result;\n\n if (target.toString().length < n) {\n result = (\"0\".repeat(n) + target).slice(-n);\n } else {\n result = target.toString();\n }\n\n return `${minus}${result}`;\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// covert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n return +d;\n}\n\nexport function weeksInWeekYear(weekYear) {\n const p1 =\n (weekYear +\n Math.floor(weekYear / 4) -\n Math.floor(weekYear / 100) +\n Math.floor(weekYear / 400)) %\n 7,\n last = weekYear - 1,\n p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7;\n return p1 === 4 || p2 === 3 ? 53 : 52;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > 60 ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hour12: false,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\"\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = Object.assign({ timeZoneName: offsetFormat }, intlOpts),\n intl = hasIntl();\n\n if (intl && hasFormatToParts()) {\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find(m => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n } else if (intl) {\n // this probably doesn't work for all locales\n const without = new Intl.DateTimeFormat(locale, intlOpts).format(date),\n included = new Intl.DateTimeFormat(locale, modified).format(date),\n diffed = included.substring(without.length),\n trimmed = diffed.replace(/^[, \\u200e]+/, \"\");\n return trimmed;\n } else {\n return null;\n }\n}\n\n// signedOffset('-5', '30') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer, nonUnitKeys) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n if (nonUnitKeys.indexOf(u) >= 0) continue;\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n\n switch (format) {\n case \"short\":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : \"\"}`;\n case \"techie\":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n\nexport const ianaRegex = /[A-Za-z_+-]{1,256}(:?\\/[A-Za-z_+-]{1,256}(\\/[A-Za-z_+-]{1,256})?)?/;\n","import * as Formats from \"./formats.js\";\nimport { pick } from \"./util.js\";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\n\nexport const monthsShort = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n];\n\nexport const monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\n\nexport function months(length) {\n switch (length) {\n case \"narrow\":\n return [...monthsNarrow];\n case \"short\":\n return [...monthsShort];\n case \"long\":\n return [...monthsLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n \"Sunday\"\n];\n\nexport const weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport const weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\n\nexport function weekdays(length) {\n switch (length) {\n case \"narrow\":\n return [...weekdaysNarrow];\n case \"short\":\n return [...weekdaysShort];\n case \"long\":\n return [...weekdaysLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n default:\n return null;\n }\n}\n\nexport const meridiems = [\"AM\", \"PM\"];\n\nexport const erasLong = [\"Before Christ\", \"Anno Domini\"];\n\nexport const erasShort = [\"BC\", \"AD\"];\n\nexport const erasNarrow = [\"B\", \"A\"];\n\nexport function eras(length) {\n switch (length) {\n case \"narrow\":\n return [...erasNarrow];\n case \"short\":\n return [...erasShort];\n case \"long\":\n return [...erasLong];\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = \"always\", narrow = false) {\n const units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"]\n };\n\n const lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n const isDay = unit === \"days\";\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? \"yesterday\" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? \"today\" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n \"hour12\"\n ]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return \"M/d/yyyy\";\n case stringify(Formats.DATE_MED):\n return \"LLL d, yyyy\";\n case stringify(Formats.DATE_MED_WITH_WEEKDAY):\n return \"EEE, LLL d, yyyy\";\n case stringify(Formats.DATE_FULL):\n return \"LLLL d, yyyy\";\n case stringify(Formats.DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n case stringify(Formats.TIME_SIMPLE):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_24_SIMPLE):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n case stringify(Formats.DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return \"EEE, d LLL yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n default:\n return dateTimeHuge;\n }\n}\n","import * as English from \"./english.js\";\nimport * as Formats from \"./formats.js\";\nimport { hasFormatToParts, padStart } from \"./util.js\";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = \"\";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n let current = null,\n currentFull = \"\",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === \"'\") {\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: false, val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.format();\n }\n\n formatDateTime(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.format();\n }\n\n formatDateTimeParts(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.formatToParts();\n }\n\n resolvedOptions(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.resolvedOptions();\n }\n\n num(n, p = 0) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = Object.assign({}, this.opts);\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter =\n this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\" && hasFormatToParts(),\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = opts => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: \"numeric\", hour12: true }, \"dayperiod\"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: \"numeric\" }, \"month\"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: \"long\", day: \"numeric\" },\n \"weekday\"\n ),\n maybeMacro = token => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = length =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, \"era\"),\n tokenToString = token => {\n // Where possible: http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles\n switch (token) {\n // ms\n case \"S\":\n return this.num(dt.millisecond);\n case \"u\":\n // falls through\n case \"SSS\":\n return this.num(dt.millisecond, 3);\n // seconds\n case \"s\":\n return this.num(dt.second);\n case \"ss\":\n return this.num(dt.second, 2);\n // minutes\n case \"m\":\n return this.num(dt.minute);\n case \"mm\":\n return this.num(dt.minute, 2);\n // hours\n case \"h\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case \"hh\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case \"H\":\n return this.num(dt.hour);\n case \"HH\":\n return this.num(dt.hour, 2);\n // offset\n case \"Z\":\n // like +6\n return formatOffset({ format: \"narrow\", allowZ: this.opts.allowZ });\n case \"ZZ\":\n // like +06:00\n return formatOffset({ format: \"short\", allowZ: this.opts.allowZ });\n case \"ZZZ\":\n // like +0600\n return formatOffset({ format: \"techie\", allowZ: this.opts.allowZ });\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: \"short\", locale: this.loc.locale });\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: \"long\", locale: this.loc.locale });\n // zone\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case \"a\":\n return meridiem();\n // dates\n case \"d\":\n return useDateTimeFormatter ? string({ day: \"numeric\" }, \"day\") : this.num(dt.day);\n case \"dd\":\n return useDateTimeFormatter ? string({ day: \"2-digit\" }, \"day\") : this.num(dt.day, 2);\n // weekdays - standalone\n case \"c\":\n // like 1\n return this.num(dt.weekday);\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n case \"E\":\n // like 1\n return this.num(dt.weekday);\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n case \"L\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\", day: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter\n ? string({ month: \"2-digit\", day: \"numeric\" }, \"month\")\n : this.num(dt.month, 2);\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n case \"M\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"MM\":\n // like 01\n return useDateTimeFormatter\n ? string({ month: \"2-digit\" }, \"month\")\n : this.num(dt.month, 2);\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({ year: \"numeric\" }, \"year\") : this.num(dt.year);\n case \"yy\":\n // like 14\n return useDateTimeFormatter\n ? string({ year: \"2-digit\" }, \"year\")\n : this.num(dt.year.toString().slice(-2), 2);\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 4);\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 6);\n // eras\n case \"G\":\n // like AD\n return era(\"short\");\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n case \"GGGGG\":\n return era(\"narrow\");\n case \"kk\":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case \"kkkk\":\n return this.num(dt.weekYear, 4);\n case \"W\":\n return this.num(dt.weekNumber);\n case \"WW\":\n return this.num(dt.weekNumber, 2);\n case \"o\":\n return this.num(dt.ordinal);\n case \"ooo\":\n return this.num(dt.ordinal, 3);\n case \"q\":\n // like 1\n return this.num(dt.quarter);\n case \"qq\":\n // like 01\n return this.num(dt.quarter, 2);\n case \"X\":\n return this.num(Math.floor(dt.ts / 1000));\n case \"x\":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const tokenToField = token => {\n switch (token[0]) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n default:\n return null;\n }\n },\n tokenToString = lildur => token => {\n const mapped = tokenToField(token);\n if (mapped) {\n return this.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter(t => t));\n return stringifyTokens(tokens, tokenToString(collapsed));\n }\n}\n","export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n","/* eslint no-unused-vars: \"off\" */\nimport { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get universal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n","import { formatOffset, parseZoneInfo, hasIntl } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\nexport default class LocalZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {LocalZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new LocalZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return \"local\";\n }\n\n /** @override **/\n get name() {\n if (hasIntl()) {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n } else return \"local\";\n }\n\n /** @override **/\n get universal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"local\";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import { formatOffset, parseZoneInfo, isUndefined, ianaRegex, objToLocalTS } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nconst matchingRegex = RegExp(`^${ianaRegex.source}$`);\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\"\n });\n }\n return dtfCache[zone];\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date),\n filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i],\n pos = typeToPos[type];\n\n if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Fantasia/Castle\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return !!(s && s.match(matchingRegex));\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n // Etc/GMT+8 -> -480\n /** @ignore */\n static parseGMTOffset(specifier) {\n if (specifier) {\n const match = specifier.match(/^Etc\\/GMT(0|[+-]\\d{1,2})$/i);\n if (match) {\n return -60 * parseInt(match[1]);\n }\n }\n return null;\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /** @override **/\n get type() {\n return \"iana\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get universal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n const date = new Date(ts);\n\n if (isNaN(date)) return NaN;\n\n const dtf = makeDTF(this.name),\n [year, month, day, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date),\n // work around https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /** @override **/\n get isValid() {\n return this.valid;\n }\n}\n","import { formatOffset, signedOffset } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /** @override **/\n get type() {\n return \"fixed\";\n }\n\n /** @override **/\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n /** @override **/\n offsetName() {\n return this.name;\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /** @override **/\n get universal() {\n return true;\n }\n\n /** @override **/\n offset() {\n return this.fixed;\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import Zone from \"../zone.js\";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return \"invalid\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get universal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return \"\";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n","/**\n * @private\n */\n\nimport Zone from \"../zone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport InvalidZone from \"../zones/invalidZone.js\";\n\nimport { isUndefined, isString, isNumber } from \"./util.js\";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === \"local\") return defaultZone;\n else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;\n else if ((offset = IANAZone.parseGMTOffset(input)) != null) {\n // handle Etc/GMT-4, which V8 chokes on\n return FixedOffsetZone.instance(offset);\n } else if (IANAZone.isValidSpecifier(lowered)) return IANAZone.create(input);\n else return FixedOffsetZone.parseSpecifier(lowered) || new InvalidZone(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && input.offset && typeof input.offset === \"number\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n","import LocalZone from \"./zones/localZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport Locale from \"./impl/locale.js\";\n\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nlet now = () => Date.now(),\n defaultZone = null, // not setting this directly to LocalZone.instance bc loading order issues\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n throwOnInvalid = false;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Get the default time zone to create DateTimes in.\n * @type {string}\n */\n static get defaultZoneName() {\n return Settings.defaultZone.name;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * @type {string}\n */\n static set defaultZoneName(z) {\n if (!z) {\n defaultZone = null;\n } else {\n defaultZone = normalizeZone(z);\n }\n }\n\n /**\n * Get the default time zone object to create DateTimes in. Does not affect existing instances.\n * @type {Zone}\n */\n static get defaultZone() {\n return defaultZone || LocalZone.instance;\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n }\n}\n","import { hasFormatToParts, hasIntl, padStart, roundTo, hasRelative } from \"./util.js\";\nimport * as English from \"./english.js\";\nimport Settings from \"../settings.js\";\nimport DateTime from \"../datetime.js\";\nimport Formatter from \"./formatter.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\nlet intlDTCache = {};\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlNumCache = {};\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache[key];\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n return inf;\n}\n\nlet intlRelCache = {};\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache[key];\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else if (hasIntl()) {\n const computedSys = new Intl.DateTimeFormat().resolvedOptions().locale;\n // node sometimes defaults to \"und\". Override that because that is dumb\n sysLocaleCache = !computedSys || computedSys === \"und\" ? \"en-US\" : computedSys;\n return sysLocaleCache;\n } else {\n sysLocaleCache = \"en-US\";\n return sysLocaleCache;\n }\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n const uIndex = localeStr.indexOf(\"-u-\");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n const smaller = localeStr.substring(0, uIndex);\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n } catch (e) {\n options = getCachedDTF(smaller).resolvedOptions();\n }\n\n const { numberingSystem, calendar } = options;\n // return the smaller one so that we can append the calendar and numbering overrides to it\n return [smaller, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (hasIntl()) {\n if (outputCalendar || numberingSystem) {\n localeStr += \"-u\";\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n } else {\n return [];\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2016, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, defaultOK, englishFn, intlFn) {\n const mode = loc.listingMode(defaultOK);\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return (\n loc.numberingSystem === \"latn\" ||\n !loc.locale ||\n loc.locale.startsWith(\"en\") ||\n (hasIntl() && new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\")\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n if (!forceSimple && hasIntl()) {\n const intlOpts = { useGrouping: false };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n this.hasIntl = hasIntl();\n\n let z;\n if (dt.zone.universal && this.hasIntl) {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n const gmtOffset = -1 * (dt.offset / 60);\n const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;\n const isOffsetZoneSupported = IANAZone.isValidZone(offsetZ);\n if (dt.offset !== 0 && isOffsetZoneSupported) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata.\n // So we have to make do. Two cases:\n // 1. The format options tell us to show the zone. We can't do that, so the best\n // we can do is format the date in UTC.\n // 2. The format options don't tell us to show the zone. Then we can adjust them\n // the time and tell the formatter to show it to us in UTC, so that the time is right\n // and the bad zone doesn't show up.\n z = \"UTC\";\n if (opts.timeZoneName) {\n this.dt = dt;\n } else {\n this.dt = dt.offset === 0 ? dt : DateTime.fromMillis(dt.ts + dt.offset * 60 * 1000);\n }\n }\n } else if (dt.zone.type === \"local\") {\n this.dt = dt;\n } else {\n this.dt = dt;\n z = dt.zone.name;\n }\n\n if (this.hasIntl) {\n const intlOpts = Object.assign({}, this.opts);\n if (z) {\n intlOpts.timeZone = z;\n }\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n }\n\n format() {\n if (this.hasIntl) {\n return this.dtf.format(this.dt.toJSDate());\n } else {\n const tokenFormat = English.formatString(this.opts),\n loc = Locale.create(\"en-US\");\n return Formatter.create(loc).formatDateTimeFromString(this.dt, tokenFormat);\n }\n }\n\n formatToParts() {\n if (this.hasIntl && hasFormatToParts()) {\n return this.dtf.formatToParts(this.dt.toJSDate());\n } else {\n // This is kind of a cop out. We actually could do this for English. However, we couldn't do it for intl strings\n // and IMO it's too weird to have an uncanny valley like that\n return [];\n }\n }\n\n resolvedOptions() {\n if (this.hasIntl) {\n return this.dtf.resolvedOptions();\n } else {\n return {\n locale: \"en-US\",\n numberingSystem: \"latn\",\n outputCalendar: \"gregory\"\n };\n }\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = Object.assign({ style: \"long\" }, opts);\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\n/**\n * @private\n */\n\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN);\n }\n\n static create(locale, numberingSystem, outputCalendar, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale,\n // the system locale is useful for human readable strings but annoying for parsing/formatting known formats\n localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale()),\n numberingSystemR = numberingSystem || Settings.defaultNumberingSystem,\n outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar);\n }\n\n constructor(locale, numbering, outputCalendar, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode(defaultOK = true) {\n const intl = hasIntl(),\n hasFTP = intl && hasFormatToParts(),\n isActuallyEn = this.isEnglish(),\n hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === \"latn\") &&\n (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n\n if (!hasFTP && !(isActuallyEn && hasNoWeirdness) && !defaultOK) {\n return \"error\";\n } else if (!hasFTP || (isActuallyEn && hasNoWeirdness)) {\n return \"en\";\n } else {\n return \"intl\";\n }\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone(Object.assign({}, alts, { defaultToEN: true }));\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone(Object.assign({}, alts, { defaultToEN: false }));\n }\n\n months(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.months, () => {\n const intl = format ? { month: length, day: \"numeric\" } : { month: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.monthsCache[formatStr][length]) {\n this.monthsCache[formatStr][length] = mapMonths(dt => this.extract(dt, intl, \"month\"));\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: \"numeric\", month: \"long\", day: \"numeric\" }\n : { weekday: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays(dt =>\n this.extract(dt, intl, \"weekday\")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems(defaultOK = true) {\n return listStuff(\n this,\n undefined,\n defaultOK,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: \"numeric\", hour12: true };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n dt => this.extract(dt, intl, \"dayperiod\")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.eras, () => {\n const intl = { era: length };\n\n // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map(dt =>\n this.extract(dt, intl, \"era\")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find(m => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n isEnglish() {\n return (\n this.locale === \"en\" ||\n this.locale.toLowerCase() === \"en-us\" ||\n (hasIntl() && new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\"))\n );\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n}\n","import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n ianaRegex,\n isUndefined\n} from \"./util.js\";\nimport * as English from \"./english.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return m =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [Object.assign(mergedVals, val), mergedZone || zone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/,\n isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/,\n isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${offsetRegex.source}?`),\n isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`),\n isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/,\n isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/,\n isoOrdinalRegex = /(\\d{4})-?(\\d{3})/,\n extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\"),\n extractISOOrdinalData = simpleParse(\"year\", \"ordinal\"),\n sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/, // dumbed-down version of the ISO one\n sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n ),\n sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1)\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3])\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration = /^-?P(?:(?:(-?\\d{1,9})Y)?(?:(-?\\d{1,9})M)?(?:(-?\\d{1,9})W)?(?:(-?\\d{1,9})D)?(?:T(?:(-?\\d{1,9})H)?(?:(-?\\d{1,9})M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,9}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [\n s,\n yearStr,\n monthStr,\n weekStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr,\n millisecondsStr\n ] = match;\n\n const hasNegativePrefix = s[0] === \"-\";\n const negativeSeconds = secondStr && secondStr[0] === \"-\";\n\n const maybeNegate = (num, force = false) =>\n num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;\n\n return [\n {\n years: maybeNegate(parseInteger(yearStr)),\n months: maybeNegate(parseInteger(monthStr)),\n weeks: maybeNegate(parseInteger(weekStr)),\n days: maybeNegate(parseInteger(dayStr)),\n hours: maybeNegate(parseInteger(hourStr)),\n minutes: maybeNegate(parseInteger(minuteStr)),\n seconds: maybeNegate(parseInteger(secondStr), secondStr === \"-0\"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds)\n }\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n};\n\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr)\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, \" \")\n .replace(/(\\s\\s+)/g, \" \")\n .trim();\n}\n\n// http date\n\nconst rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 = /^(Monday|Tuesday|Wedsday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset\n);\nconst extractISOOrdinalDateAndTime = combineExtractors(\n extractISOOrdinalData,\n extractISOTime,\n extractISOOffset\n);\nconst extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset);\n\n/**\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\n\nexport function parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOYmdTimeOffsetAndIANAZone = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeOffsetAndIANAZone],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n","import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Locale from \"./impl/locale.js\";\nimport { parseISODuration, parseISOTimeOnly } from \"./impl/regexParser.js\";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo\n} from \"./impl/util.js\";\nimport Settings from \"./settings.js\";\n\nconst INVALID = \"Invalid Duration\";\n\n// unit conversion constants\nconst lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 }\n },\n casualMatrix = Object.assign(\n {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000\n }\n },\n lowOrderMatrix\n ),\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = Object.assign(\n {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000\n }\n },\n lowOrderMatrix\n );\n\n// units ordered by size\nconst orderedUnits = [\n \"years\",\n \"quarters\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\"\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : Object.assign({}, dur.values, alts.values || {}),\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy\n };\n return new Duration(conf);\n}\n\nfunction antiTrunc(n) {\n return n < 0 ? Math.floor(n) : Math.ceil(n);\n}\n\n// NB: mutates parameters\nfunction convert(matrix, fromMap, fromUnit, toMap, toUnit) {\n const conv = matrix[toUnit][fromUnit],\n raw = fromMap[fromUnit] / conv,\n sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]),\n // ok, so this is wild, but see the matrix in the tests\n added =\n !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw);\n toMap[toUnit] += added;\n fromMap[fromUnit] -= added * conv;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n reverseUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n convert(matrix, vals, previous, vals, current);\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime.plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration.years}, {@link Duration.months}, {@link Duration.weeks}, {@link Duration.days}, {@link Duration.hours}, {@link Duration.minutes}, {@link Duration.seconds}, {@link Duration.milliseconds} accessors.\n * * **Configuration** See {@link Duration.locale} and {@link Duration.numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration.plus}, {@link Duration.minus}, {@link Duration.normalize}, {@link Duration.set}, {@link Duration.reconfigure}, {@link Duration.shiftTo}, and {@link Duration.negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration.as}, {@link Duration.toISO}, {@link Duration.toFormat}, and {@link Duration.toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = accurate ? accurateMatrix : casualMatrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject(Object.assign({ milliseconds: count }, opts));\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {string} [obj.locale='en-US'] - the locale to use\n * @param {string} obj.numberingSystem - the numbering system to use\n * @param {string} [obj.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromObject(obj) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? \"null\" : typeof obj\n }`\n );\n }\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit, [\n \"locale\",\n \"numberingSystem\",\n \"conversionAccuracy\",\n \"zone\" // a bit of debt; it's super inconvenient internally not to be able to blindly pass this\n ]),\n loc: Locale.fromObject(obj),\n conversionAccuracy: obj.conversionAccuracy\n });\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n const obj = Object.assign(parsed, opts);\n return Duration.fromObject(obj);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n const obj = Object.assign(parsed, opts);\n return Duration.fromObject(obj);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\"\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * The duration will be converted to the set of units in the format string using {@link Duration.shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = Object.assign({}, opts, {\n floor: opts.round !== false && opts.floor !== false\n });\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a JavaScript object with this Duration's values.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = Object.assign({}, this.values);\n\n if (opts.includeConfig) {\n base.conversionAccuracy = this.conversionAccuracy;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n\n opts = Object.assign(\n {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: \"extended\"\n },\n opts\n );\n\n const value = this.shiftTo(\"hours\", \"minutes\", \"seconds\", \"milliseconds\");\n\n let fmt = opts.format === \"basic\" ? \"hhmm\" : \"hh:mm\";\n\n if (!opts.suppressSeconds || value.seconds !== 0 || value.milliseconds !== 0) {\n fmt += opts.format === \"basic\" ? \"ss\" : \":ss\";\n if (!opts.suppressMilliseconds || value.milliseconds !== 0) {\n fmt += \".SSS\";\n }\n }\n\n let str = value.toFormat(fmt);\n\n if (opts.includePrefix) {\n str = \"T\" + str;\n }\n\n return str;\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n return this.as(\"milliseconds\");\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = friendlyDuration(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = friendlyDuration(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnit(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnit((x, u) => u === \"hour\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = Object.assign(this.values, normalizeObject(values, Duration.normalizeUnit, []));\n return clone(this, { values: mixed });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem }),\n opts = { loc };\n\n if (conversionAccuracy) {\n opts.conversionAccuracy = conversionAccuracy;\n }\n\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map(u => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = own - i; // we'd like to absorb these fractions in another unit\n\n // plus anything further down the chain that should be rolled up in to this\n for (const down in vals) {\n if (orderedUnits.indexOf(down) > orderedUnits.indexOf(k)) {\n convert(this.matrix, vals, down, built, k);\n }\n }\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n return clone(this, { values: built }, true).normalize();\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (const u of orderedUnits) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDuration(durationish) {\n if (isNumber(durationish)) {\n return Duration.fromMillis(durationish);\n } else if (Duration.isDuration(durationish)) {\n return durationish;\n } else if (typeof durationish === \"object\") {\n return Duration.fromObject(durationish);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationish} of type ${typeof durationish}`\n );\n }\n}\n","import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration, { friendlyDuration } from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link fromDateTimes}, {@link after}, {@link before}, or {@link fromISO}.\n * * **Accessors** Use {@link start} and {@link end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link count}, {@link length}, {@link hasSame}, {@link contains}, {@link isAfter}, or {@link isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link set}, {@link splitAt}, {@link splitBy}, {@link divideEqually}, {@link merge}, {@link xor}, {@link union}, {@link intersection}, or {@link difference}.\n * * **Comparison** To compare this Interval to another one, use {@link equals}, {@link overlaps}, {@link abutsStart}, {@link abutsEnd}, {@link engulfs}.\n * * **Output** To convert the Interval into other representations, see {@link toString}, {@link toISO}, {@link toISODate}, {@link toISOTime}, {@link toFormat}, and {@link toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = friendlyDuration(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = friendlyDuration(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `/`, `/`, and `/` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime.fromISO} and optionally {@link Duration.fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @return {number}\n */\n count(unit = \"milliseconds\") {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit),\n end = this.end.startOf(unit);\n return Math.floor(end.diff(start, unit).get(unit)) + 1;\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...[DateTime]} dateTimes - the unit of time to count.\n * @return {[Interval]}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter(d => this.contains(d))\n .sort(),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {[Interval]}\n */\n splitBy(duration) {\n const dur = friendlyDuration(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n idx = 1,\n next;\n\n const results = [];\n while (s < this.e) {\n const added = this.start.plus(dur.mapUnits(x => x * idx));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {[Interval]}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Return whether this Interval engulfs the start and end of the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {[Interval]} intervals\n * @return {[Interval]}\n */\n static merge(intervals) {\n const [found, final] = intervals.sort((a, b) => a.s - b.s).reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {[Interval]} intervals\n * @return {[Interval]}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map(i => [{ time: i.s, type: \"s\" }, { time: i.e, type: \"e\" }]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {[Interval]}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map(i => this.intersection(i))\n .filter(i => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} – ${this.e.toISO()})`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime.toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime.toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format string.\n * @param {string} dateFormat - the format string. This string formats the start and end time. See {@link DateTime.toFormat} for details.\n * @param {Object} opts - options\n * @param {string} [opts.separator = ' – '] - a separator to place between the start and end representations\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" – \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n","import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasFormatToParts, hasIntl, hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.now()\n .setZone(zone)\n .set({ month: 12 });\n\n return !zone.universal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidSpecifier(zone) && IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone.isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'\n * @return {[string]}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {[string]}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\n * @return {[string]}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link weekdays}\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @return {[string]}\n */\n static weekdaysFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\n * @return {[string]}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\n * @return {[string]}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, timezone support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `zones`: whether this environment supports IANA timezones\n * * `intlTokens`: whether this environment supports internationalized token-based formatting/parsing\n * * `intl`: whether this environment supports general internationalization\n * * `relative`: whether this environment supports relative time formatting\n * @example Info.features() //=> { intl: true, intlTokens: false, zones: true, relative: false }\n * @return {Object}\n */\n static features() {\n let intl = false,\n intlTokens = false,\n zones = false,\n relative = false;\n\n if (hasIntl()) {\n intl = true;\n intlTokens = hasFormatToParts();\n relative = hasRelative();\n\n try {\n zones =\n new Intl.DateTimeFormat(\"en\", { timeZone: \"America/New_York\" }).resolvedOptions()\n .timeZone === \"America/New_York\";\n } catch (e) {\n zones = false;\n }\n }\n\n return { intl, intlTokens, zones, relative };\n }\n}\n","import Duration from \"../duration.js\";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = dt =>\n dt\n .toUTC(0, { keepLocalTime: true })\n .startOf(\"day\")\n .valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n [\"years\", (a, b) => b.year - a.year],\n [\"quarters\", (a, b) => b.quarter - a.quarter],\n [\"months\", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n \"weeks\",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n }\n ],\n [\"days\", dayDiff]\n ];\n\n const results = {};\n let lowestOrder, highWater;\n\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n let delta = differ(cursor, later);\n highWater = cursor.plus({ [unit]: delta });\n\n if (highWater > later) {\n cursor = cursor.plus({ [unit]: delta - 1 });\n delta -= 1;\n } else {\n cursor = highWater;\n }\n\n results[unit] = delta;\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function(earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n u => [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(Object.assign(results, opts));\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n","const numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|四|五|六|七|八|九]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\"\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881]\n};\n\n// eslint-disable-next-line\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\nexport function digitRegex({ numberingSystem }, append = \"\") {\n return new RegExp(`${numberingSystems[numberingSystem || \"latn\"]}${append}`);\n}\n","import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from \"./util.js\";\nimport Formatter from \"./formatter.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport DateTime from \"../datetime.js\";\nimport { digitRegex, parseDigits } from \"./digits.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post = i => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `( |${NBSP})`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, \"\") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: ([s]) =>\n strings.findIndex(i => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n // eslint-disable-next-line no-useless-escape\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = t => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = t => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\", false), 0);\n case \"GG\":\n return oneOf(loc.eras(\"long\", false), 0);\n // years\n case \"y\":\n return intUnit(oneToSix);\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n case \"yyyy\":\n return intUnit(four);\n case \"yyyyy\":\n return intUnit(fourToSix);\n case \"yyyyyy\":\n return intUnit(six);\n // months\n case \"M\":\n return intUnit(oneOrTwo);\n case \"MM\":\n return intUnit(two);\n case \"MMM\":\n return oneOf(loc.months(\"short\", true, false), 1);\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true, false), 1);\n case \"L\":\n return intUnit(oneOrTwo);\n case \"LL\":\n return intUnit(two);\n case \"LLL\":\n return oneOf(loc.months(\"short\", false, false), 1);\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false, false), 1);\n // dates\n case \"d\":\n return intUnit(oneOrTwo);\n case \"dd\":\n return intUnit(two);\n // ordinals\n case \"o\":\n return intUnit(oneToThree);\n case \"ooo\":\n return intUnit(three);\n // time\n case \"HH\":\n return intUnit(two);\n case \"H\":\n return intUnit(oneOrTwo);\n case \"hh\":\n return intUnit(two);\n case \"h\":\n return intUnit(oneOrTwo);\n case \"mm\":\n return intUnit(two);\n case \"m\":\n return intUnit(oneOrTwo);\n case \"q\":\n return intUnit(oneOrTwo);\n case \"qq\":\n return intUnit(two);\n case \"s\":\n return intUnit(oneOrTwo);\n case \"ss\":\n return intUnit(two);\n case \"S\":\n return intUnit(oneToThree);\n case \"SSS\":\n return intUnit(three);\n case \"u\":\n return simple(oneToNine);\n // meridiem\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case \"kkkk\":\n return intUnit(four);\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case \"W\":\n return intUnit(oneOrTwo);\n case \"WW\":\n return intUnit(two);\n // weekdays\n case \"E\":\n case \"c\":\n return intUnit(one);\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false, false), 1);\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false, false), 1);\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true, false), 1);\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true, false), 1);\n // offset/zone\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case \"ZZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\"\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\"\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\"\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\"\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour: {\n numeric: \"h\",\n \"2-digit\": \"hh\"\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\"\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\"\n }\n};\n\nfunction tokenForPart(part, locale, formatOpts) {\n const { type, value } = part;\n\n if (type === \"literal\") {\n return {\n literal: true,\n val: value\n };\n }\n\n const style = formatOpts[type];\n\n let val = partTypeStyleToTokenVal[type];\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map(u => u.regex).reduce((f, r) => `${f}(${r.source})`, \"\");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = token => {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n case \"H\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"o\":\n return \"ordinal\";\n case \"L\":\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n case \"E\":\n case \"c\":\n return \"weekday\";\n case \"W\":\n return \"weekNumber\";\n case \"k\":\n return \"weekYear\";\n case \"q\":\n return \"quarter\";\n default:\n return null;\n }\n };\n\n let zone;\n if (!isUndefined(matches.Z)) {\n zone = new FixedOffsetZone(matches.Z);\n } else if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n } else {\n zone = null;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n\n if (!formatOpts) {\n return token;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const parts = formatter.formatDateTimeParts(getDummyDateTime());\n\n const tokens = parts.map(p => tokenForPart(p, locale, formatOpts));\n\n if (tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nfunction expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map(t => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport function explainFromTokens(locale, input, format) {\n const tokens = expandMacroTokens(Formatter.parseFormat(format), locale),\n units = tokens.map(t => unitForToken(t, locale)),\n disqualifyingUnit = units.find(t => t.invalidReason);\n\n if (disqualifyingUnit) {\n return { input, tokens, invalidReason: disqualifyingUnit.invalidReason };\n } else {\n const [regexString, handlers] = buildRegex(units),\n regex = RegExp(regexString, \"i\"),\n [rawMatches, matches] = match(input, regex, handlers),\n [result, zone] = matches ? dateTimeFromMatches(matches) : [null, null];\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\n \"Can't include meridiem when specifying 24-hour format\"\n );\n }\n return { input, tokens, regex, rawMatches, matches, result, zone };\n }\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, invalidReason];\n}\n","import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger\n} from \"./util.js\";\nimport Invalid from \"./invalid.js\";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n \"unit out of range\",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nfunction dayOfWeek(year, month, day) {\n const js = new Date(Date.UTC(year, month - 1, day)).getUTCDay();\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex(i => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = dayOfWeek(year, month, day);\n\n let weekNumber = Math.floor((ordinal - weekday + 10) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear);\n } else if (weekNumber > weeksInWeekYear(year)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return Object.assign({ weekYear, weekNumber, weekday }, timeObject(gregObj));\n}\n\nexport function weekToGregorian(weekData) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = dayOfWeek(weekYear, 1, 4),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n\n return Object.assign({ year, month, day }, timeObject(weekData));\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData,\n ordinal = computeOrdinal(year, month, day);\n\n return Object.assign({ year, ordinal }, timeObject(gregData));\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData,\n { month, day } = uncomputeOrdinal(year, ordinal);\n\n return Object.assign({ year, month, day }, timeObject(ordinalData));\n}\n\nexport function hasInvalidWeekData(obj) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.week);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n","import Duration, { friendlyDuration } from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport { parseFromTokens, explainFromTokens } from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid\n };\n return new DateTime(Object.assign({}, current, alts, { old: current }));\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds()\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = Object.assign({}, inst.c, {\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7\n }),\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text) {\n const { setZone, zone } = opts;\n if (parsed && Object.keys(parsed).length !== 0) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(\n Object.assign(parsed, opts, {\n zone: interpretationZone,\n // setZone is a valid option in the calling methods, but not in fromObject\n setZone: undefined\n })\n );\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\n// technical time formats (e.g. the time part of ISO 8601), take some options\n// and this commonizes their handling\nfunction toTechTimeFormat(\n dt,\n {\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset,\n includePrefix = false,\n includeZone = false,\n spaceZone = false,\n format = \"extended\"\n }\n) {\n let fmt = format === \"basic\" ? \"HHmm\" : \"HH:mm\";\n\n if (!suppressSeconds || dt.second !== 0 || dt.millisecond !== 0) {\n fmt += format === \"basic\" ? \"ss\" : \":ss\";\n if (!suppressMilliseconds || dt.millisecond !== 0) {\n fmt += \".SSS\";\n }\n }\n\n if ((includeZone || includeOffset) && spaceZone) {\n fmt += \" \";\n }\n\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += format === \"basic\" ? \"ZZZ\" : \"ZZ\";\n }\n\n let str = toTechFormat(dt, fmt);\n\n if (includePrefix) {\n str = \"T\" + str;\n }\n\n return str;\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\"\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\"\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, zone) {\n // assume we have the higher-order units\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const tsNow = Settings.now(),\n offsetProvis = zone.offset(tsNow),\n [ts, o] = objToTS(obj, offsetProvis, zone);\n\n return new DateTime({\n ts,\n zone,\n o\n });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = unit => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end\n .startOf(unit)\n .diff(start.startOf(unit), unit)\n .get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link local}, {@link utc}, and (most flexibly) {@link fromObject}. To create one from a standard string format, use {@link fromISO}, {@link fromHTTP}, and {@link fromRFC2822}. To create one from a custom string format, use {@link fromFormat}. To create one from a native JS date, use {@link fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link toObject}), use the {@link year}, {@link month},\n * {@link day}, {@link hour}, {@link minute}, {@link second}, {@link millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link weekYear}, {@link weekNumber}, and {@link weekday} accessors.\n * * **Configuration** See the {@link locale} and {@link numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link set}, {@link reconfigure}, {@link setZone}, {@link setLocale}, {@link plus}, {@link minus}, {@link endOf}, {@link startOf}, {@link toUTC}, and {@link toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link toRelative}, {@link toRelativeCalendar}, {@link toJSON}, {@link toISO}, {@link toHTTP}, {@link toObject}, {@link toRFC2822}, {@link toString}, {@link toLocaleString}, {@link toFormat}, {@link toMillis} and {@link toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n const ot = zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n static now() {\n return new DateTime({});\n }\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12) //~> 2017-03-12T00:00:00\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local(year, month, day, hour, minute, second, millisecond) {\n if (isUndefined(year)) {\n return DateTime.now();\n } else {\n return quickDT(\n {\n year,\n month,\n day,\n hour,\n minute,\n second,\n millisecond\n },\n Settings.defaultZone\n );\n }\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765Z\n * @return {DateTime}\n */\n static utc(year, month, day, hour, minute, second, millisecond) {\n if (isUndefined(year)) {\n return new DateTime({\n ts: Settings.now(),\n zone: FixedOffsetZone.utcInstance\n });\n } else {\n return quickDT(\n {\n year,\n month,\n day,\n hour,\n minute,\n second,\n millisecond\n },\n FixedOffsetZone.utcInstance\n );\n }\n }\n\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options)\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options)\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options)\n });\n }\n }\n\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {string|Zone} [obj.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [obj.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} obj.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} obj.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @return {DateTime}\n */\n static fromObject(obj) {\n const zoneToUse = normalizeZone(obj.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const tsNow = Settings.now(),\n offsetProvis = zoneToUse.offset(tsNow),\n normalized = normalizeObject(obj, normalizeUnit, [\n \"zone\",\n \"locale\",\n \"outputCalendar\",\n \"numberingSystem\"\n ]),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber,\n loc = Locale.fromObject(obj);\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @see https://moment.github.io/luxon/docs/manual/parsing.html#table-of-tokens\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true\n }),\n [vals, parsedZone, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is a DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.universal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1 }).offset || this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOpts(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link plus}. You may wish to use {@link toLocal} and {@link toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link reconfigure} and {@link setZone}.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnit, []),\n settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian(Object.assign(gregorianToWeek(this.c), normalized));\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian(Object.assign(gregorianToOrdinal(this.c), normalized));\n } else {\n mixed = Object.assign(this.toObject(), normalized);\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = friendlyDuration(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = friendlyDuration(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit) {\n if (!this.isValid) return this;\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n o.weekday = 1;\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @see https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param opts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString({ locale: 'en-gb' }); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hour12: false }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(opts = Formats.DATE_SHORT) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n toISO(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toISODate(opts)}T${this.toISOTime(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n toISODate({ format = \"extended\" } = {}) {\n let fmt = format === \"basic\" ? \"yyyyMMdd\" : \"yyyy-MM-dd\";\n if (this.year > 9999) {\n fmt = \"+\" + fmt;\n }\n\n return toTechFormat(this, fmt);\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n includePrefix = false,\n format = \"extended\"\n } = {}) {\n return toTechTimeFormat(this, {\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n includePrefix,\n format\n });\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime, always in UTC\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n toSQLDate() {\n return toTechFormat(this, \"yyyy-MM-dd\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false } = {}) {\n return toTechTimeFormat(this, {\n includeOffset,\n includeZone,\n spaceZone: true\n });\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = Object.assign({}, this.c);\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\n this.invalid || otherDateTime.invalid,\n \"created by diffing an invalid DateTime\"\n );\n }\n\n const durOpts = Object.assign(\n { locale: this.locale, numberingSystem: this.numberingSystem },\n opts\n );\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.now(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit) {\n if (!this.isValid) return false;\n\n const inputMs = otherDateTime.valueOf();\n const otherZoneDateTime = this.setZone(otherDateTime.zone, { keepLocalTime: true });\n return otherZoneDateTime.startOf(unit) <= inputMs && inputMs <= otherZoneDateTime.endOf(unit);\n }\n\n /**\n * Equality check\n * Two DateTimes are equal iff they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 día\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({ zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n let units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n let unit = options.unit;\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n return diffRelative(\n base,\n this.plus(padding),\n Object.assign(options, {\n numeric: \"always\",\n units,\n unit\n })\n );\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(\n options.base || DateTime.fromObject({ zone: this.zone }),\n this,\n Object.assign(options, {\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true\n })\n );\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, i => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, i => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n","import React, { useCallback } from 'react';\r\nimport clsx from 'clsx';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n root: {},\r\n cellHide: {\r\n display: 'none',\r\n },\r\n simpleHeader: {\r\n [theme.breakpoints.down('xs')]: {\r\n display: 'inline-block',\r\n fontWeight: 'bold',\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n },\r\n },\r\n simpleCell: {\r\n [theme.breakpoints.down('xs')]: {\r\n display: 'inline-block',\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n },\r\n },\r\n stackedHeader: {\r\n verticalAlign: 'top',\r\n },\r\n stackedCommon: {\r\n [theme.breakpoints.down('sm')]: {\r\n display: 'inline-block',\r\n fontSize: '16px',\r\n height: 'auto',\r\n width: 'calc(50%)',\r\n boxSizing: 'border-box',\r\n '&:last-child': {\r\n borderBottom: 'none',\r\n },\r\n '&:nth-last-child(2)': {\r\n borderBottom: 'none',\r\n },\r\n },\r\n },\r\n stackedCommonAlways: {\r\n display: 'inline-block',\r\n fontSize: '16px',\r\n height: 'auto',\r\n width: 'calc(50%)',\r\n boxSizing: 'border-box',\r\n '&:last-child': {\r\n borderBottom: 'none',\r\n },\r\n '&:nth-last-child(2)': {\r\n borderBottom: 'none',\r\n },\r\n },\r\n stackedParent: {\r\n [theme.breakpoints.down('sm')]: {\r\n display: 'inline-block',\r\n fontSize: '16px',\r\n height: 'auto',\r\n width: 'calc(100%)',\r\n boxSizing: 'border-box',\r\n },\r\n },\r\n stackedParentAlways: {\r\n display: 'inline-block',\r\n fontSize: '16px',\r\n height: 'auto',\r\n width: 'calc(100%)',\r\n boxSizing: 'border-box',\r\n },\r\n cellStackedSmall: {\r\n [theme.breakpoints.down('sm')]: {\r\n width: '50%',\r\n boxSizing: 'border-box',\r\n },\r\n },\r\n responsiveStackedSmall: {\r\n [theme.breakpoints.down('sm')]: {\r\n width: '50%',\r\n boxSizing: 'border-box',\r\n },\r\n },\r\n responsiveStackedSmallParent: {\r\n [theme.breakpoints.down('sm')]: {\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n },\r\n },\r\n }),\r\n { name: 'MUIDataTableBodyCell' },\r\n);\r\n\r\nfunction TableBodyCell(props) {\r\n const classes = useStyles();\r\n const {\r\n children,\r\n colIndex,\r\n columnHeader,\r\n options,\r\n dataIndex,\r\n rowIndex,\r\n className,\r\n print,\r\n tableId,\r\n ...otherProps\r\n } = props;\r\n const onCellClick = options.onCellClick;\r\n\r\n const handleClick = useCallback(\r\n event => {\r\n onCellClick(children, { colIndex, rowIndex, dataIndex, event });\r\n },\r\n [onCellClick, children, colIndex, rowIndex, dataIndex],\r\n );\r\n\r\n // Event listeners. Avoid attaching them if they're not necessary.\r\n let methods = {};\r\n if (onCellClick) {\r\n methods.onClick = handleClick;\r\n }\r\n\r\n let cells = [\r\n \r\n {columnHeader}\r\n
,\r\n \r\n {typeof children === 'function' ? children(dataIndex, rowIndex) : children}\r\n ,\r\n ];\r\n\r\n var innerCells;\r\n if (\r\n ['standard', 'scrollMaxHeight', 'scrollFullHeight', 'scrollFullHeightFullWidth'].indexOf(options.responsive) !== -1\r\n ) {\r\n innerCells = cells.slice(1, 2);\r\n } else {\r\n innerCells = cells;\r\n }\r\n\r\n return (\r\n \r\n {innerCells}\r\n \r\n );\r\n}\r\n\r\nexport default TableBodyCell;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport clsx from 'clsx';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nconst defaultBodyRowStyles = theme => ({\r\n root: {\r\n // material v4\r\n '&.Mui-selected': {\r\n backgroundColor: theme.palette.action.selected,\r\n },\r\n\r\n // material v3 workaround\r\n '&.mui-row-selected': {\r\n backgroundColor: theme.palette.action.selected,\r\n },\r\n },\r\n hoverCursor: { cursor: 'pointer' },\r\n responsiveStacked: {\r\n [theme.breakpoints.down('sm')]: {\r\n borderTop: 'solid 2px rgba(0, 0, 0, 0.15)',\r\n borderBottom: 'solid 2px rgba(0, 0, 0, 0.15)',\r\n padding: 0,\r\n margin: 0,\r\n },\r\n },\r\n responsiveSimple: {\r\n [theme.breakpoints.down('xs')]: {\r\n borderTop: 'solid 2px rgba(0, 0, 0, 0.15)',\r\n borderBottom: 'solid 2px rgba(0, 0, 0, 0.15)',\r\n padding: 0,\r\n margin: 0,\r\n },\r\n },\r\n});\r\n\r\nclass TableBodyRow extends React.Component {\r\n static propTypes = {\r\n /** Options used to describe table */\r\n options: PropTypes.object.isRequired,\r\n /** Callback to execute when row is clicked */\r\n onClick: PropTypes.func,\r\n /** Current row selected or not */\r\n rowSelected: PropTypes.bool,\r\n /** Extend the style applied to components */\r\n classes: PropTypes.object,\r\n };\r\n\r\n render() {\r\n const { classes, options, rowSelected, onClick, className, isRowSelectable, ...rest } = this.props;\r\n\r\n var methods = {};\r\n if (onClick) {\r\n methods.onClick = onClick;\r\n }\r\n\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(defaultBodyRowStyles, { name: 'MUIDataTableBodyRow' })(TableBodyRow);\r\n","import React from 'react';\r\nimport { IconButton } from '@material-ui/core';\r\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\r\nimport RemoveIcon from '@material-ui/icons/Remove';\r\n\r\nconst ExpandButton = ({\r\n areAllRowsExpanded,\r\n buttonClass,\r\n expandableRowsHeader,\r\n expandedRows,\r\n iconClass,\r\n iconIndeterminateClass,\r\n isHeaderCell,\r\n onExpand,\r\n}) => {\r\n return (\r\n <>\r\n {isHeaderCell && !areAllRowsExpanded() && areAllRowsExpanded && expandedRows.data.length > 0 ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ExpandButton;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport clsx from 'clsx';\r\nimport { Checkbox, TableCell } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport ExpandButton from './ExpandButton';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n root: {\r\n '@media print': {\r\n display: 'none',\r\n },\r\n },\r\n fixedHeader: {\r\n position: 'sticky',\r\n top: '0px',\r\n zIndex: 100,\r\n },\r\n fixedLeft: {\r\n position: 'sticky',\r\n left: '0px',\r\n zIndex: 100,\r\n },\r\n icon: {\r\n cursor: 'pointer',\r\n transition: 'transform 0.25s',\r\n },\r\n expanded: {\r\n transform: 'rotate(90deg)',\r\n },\r\n hide: {\r\n visibility: 'hidden',\r\n },\r\n headerCell: {\r\n zIndex: 110,\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n expandDisabled: {},\r\n checkboxRoot: {},\r\n checked: {},\r\n disabled: {},\r\n }),\r\n\r\n { name: 'MUIDataTableSelectCell' },\r\n);\r\n\r\nconst TableSelectCell = ({\r\n fixedHeader,\r\n fixedSelectColumn,\r\n isHeaderCell = false,\r\n expandableOn = false,\r\n selectableOn = 'none',\r\n isRowExpanded = false,\r\n onExpand,\r\n isRowSelectable,\r\n selectableRowsHeader,\r\n hideExpandButton,\r\n expandableRowsHeader,\r\n expandedRows,\r\n areAllRowsExpanded = () => false,\r\n selectableRowsHideCheckboxes,\r\n setHeadCellRef,\r\n dataIndex,\r\n components = {},\r\n ...otherProps\r\n}) => {\r\n const classes = useStyles();\r\n const CheckboxComponent = components.Checkbox || Checkbox;\r\n const ExpandButtonComponent = components.ExpandButton || ExpandButton;\r\n\r\n if (expandableOn === false && (selectableOn === 'none' || selectableRowsHideCheckboxes === true)) {\r\n return null;\r\n }\r\n\r\n const cellClass = clsx({\r\n [classes.root]: true,\r\n [classes.fixedHeader]: fixedHeader && isHeaderCell,\r\n [classes.fixedLeft]: fixedSelectColumn,\r\n [classes.headerCell]: isHeaderCell,\r\n });\r\n\r\n const buttonClass = clsx({\r\n [classes.expandDisabled]: hideExpandButton,\r\n });\r\n\r\n const iconClass = clsx({\r\n [classes.icon]: true,\r\n [classes.hide]: isHeaderCell && !expandableRowsHeader,\r\n [classes.expanded]: isRowExpanded || (isHeaderCell && areAllRowsExpanded()),\r\n });\r\n const iconIndeterminateClass = clsx({\r\n [classes.icon]: true,\r\n [classes.hide]: isHeaderCell && !expandableRowsHeader,\r\n });\r\n\r\n let refProp = {};\r\n if (setHeadCellRef) {\r\n refProp.ref = el => {\r\n setHeadCellRef(0, 0, el);\r\n };\r\n }\r\n\r\n const renderCheckBox = () => {\r\n if (isHeaderCell && (selectableOn !== 'multiple' || selectableRowsHeader === false)) {\r\n // only display the header checkbox for multiple selection.\r\n return null;\r\n }\r\n return (\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n
\r\n {expandableOn && (\r\n \r\n )}\r\n {selectableOn !== 'none' && selectableRowsHideCheckboxes !== true && renderCheckBox()}\r\n
\r\n
\r\n );\r\n};\r\n\r\nTableSelectCell.propTypes = {\r\n /** Select cell checked on/off */\r\n checked: PropTypes.bool.isRequired,\r\n /** Select cell part of fixed header */\r\n fixedHeader: PropTypes.bool,\r\n /** Callback to trigger cell update */\r\n onChange: PropTypes.func,\r\n /** Extend the style applied to components */\r\n classes: PropTypes.object,\r\n /** Is expandable option enabled */\r\n expandableOn: PropTypes.bool,\r\n /** Adds extra class, `expandDisabled` when the row is not expandable. */\r\n hideExpandButton: PropTypes.bool,\r\n /** Is selectable option enabled */\r\n selectableOn: PropTypes.string,\r\n /** Select cell disabled on/off */\r\n isRowSelectable: PropTypes.bool,\r\n};\r\n\r\nexport default TableSelectCell;\r\n","function buildMap(rows) {\r\n return rows.reduce((accum, { dataIndex }) => {\r\n accum[dataIndex] = true;\r\n return accum;\r\n }, {});\r\n}\r\n\r\nfunction escapeDangerousCSVCharacters(data) {\r\n if (typeof data === 'string') {\r\n // Places single quote before the appearance of dangerous characters if they\r\n // are the first in the data string.\r\n return data.replace(/^\\+|^\\-|^\\=|^\\@/g, \"'$&\");\r\n }\r\n\r\n return data;\r\n}\r\n\r\nfunction warnDeprecated(warning, consoleWarnings = true) {\r\n let consoleWarn = typeof consoleWarnings === 'function' ? consoleWarnings : console.warn;\r\n if (consoleWarnings) {\r\n consoleWarn(`Deprecation Notice: ${warning}`);\r\n }\r\n}\r\n\r\nfunction warnInfo(warning, consoleWarnings = true) {\r\n let consoleWarn = typeof consoleWarnings === 'function' ? consoleWarnings : console.warn;\r\n if (consoleWarnings) {\r\n consoleWarn(`${warning}`);\r\n }\r\n}\r\n\r\nfunction getPageValue(count, rowsPerPage, page) {\r\n const totalPages = count <= rowsPerPage ? 1 : Math.ceil(count / rowsPerPage);\r\n\r\n // `page` is 0-indexed\r\n return page >= totalPages ? totalPages - 1 : page;\r\n}\r\n\r\nfunction getCollatorComparator() {\r\n if (!!Intl) {\r\n const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });\r\n return collator.compare;\r\n }\r\n\r\n const fallbackComparator = (a, b) => a.localeCompare(b);\r\n return fallbackComparator;\r\n}\r\n\r\nfunction sortCompare(order) {\r\n return (a, b) => {\r\n var aData = a.data === null || typeof a.data === 'undefined' ? '' : a.data;\r\n var bData = b.data === null || typeof b.data === 'undefined' ? '' : b.data;\r\n return (\r\n (typeof aData.localeCompare === 'function' ? aData.localeCompare(bData) : aData - bData) *\r\n (order === 'asc' ? 1 : -1)\r\n );\r\n };\r\n}\r\n\r\nfunction buildCSV(columns, data, options) {\r\n const replaceDoubleQuoteInString = columnData =>\r\n typeof columnData === 'string' ? columnData.replace(/\\\"/g, '\"\"') : columnData;\r\n\r\n const buildHead = columns => {\r\n return (\r\n columns\r\n .reduce(\r\n (soFar, column) =>\r\n column.download\r\n ? soFar +\r\n '\"' +\r\n escapeDangerousCSVCharacters(replaceDoubleQuoteInString(column.label || column.name)) +\r\n '\"' +\r\n options.downloadOptions.separator\r\n : soFar,\r\n '',\r\n )\r\n .slice(0, -1) + '\\r\\n'\r\n );\r\n };\r\n const CSVHead = buildHead(columns);\r\n\r\n const buildBody = data => {\r\n if (!data.length) return '';\r\n return data\r\n .reduce(\r\n (soFar, row) =>\r\n soFar +\r\n '\"' +\r\n row.data\r\n .filter((_, index) => columns[index].download)\r\n .map(columnData => escapeDangerousCSVCharacters(replaceDoubleQuoteInString(columnData)))\r\n .join('\"' + options.downloadOptions.separator + '\"') +\r\n '\"\\r\\n',\r\n '',\r\n )\r\n .trim();\r\n };\r\n const CSVBody = buildBody(data);\r\n\r\n const csv = options.onDownload\r\n ? options.onDownload(buildHead, buildBody, columns, data)\r\n : `${CSVHead}${CSVBody}`.trim();\r\n\r\n return csv;\r\n}\r\n\r\nfunction downloadCSV(csv, filename) {\r\n const blob = new Blob([csv], { type: 'text/csv' });\r\n\r\n /* taken from react-csv */\r\n if (navigator && navigator.msSaveOrOpenBlob) {\r\n navigator.msSaveOrOpenBlob(blob, filename);\r\n } else {\r\n const dataURI = `data:text/csv;charset=utf-8,${csv}`;\r\n\r\n const URL = window.URL || window.webkitURL;\r\n const downloadURI = typeof URL.createObjectURL === 'undefined' ? dataURI : URL.createObjectURL(blob);\r\n\r\n let link = document.createElement('a');\r\n link.setAttribute('href', downloadURI);\r\n link.setAttribute('download', filename);\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n}\r\n\r\nfunction createCSVDownload(columns, data, options, downloadCSV) {\r\n const csv = buildCSV(columns, data, options);\r\n\r\n if (options.onDownload && csv === false) {\r\n return;\r\n }\r\n\r\n downloadCSV(csv, options.downloadOptions.filename);\r\n}\r\n\r\nexport {\r\n buildMap,\r\n getPageValue,\r\n getCollatorComparator,\r\n sortCompare,\r\n createCSVDownload,\r\n buildCSV,\r\n downloadCSV,\r\n warnDeprecated,\r\n warnInfo,\r\n escapeDangerousCSVCharacters,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport MuiTableBody from '@material-ui/core/TableBody';\r\nimport TableBodyCell from './TableBodyCell';\r\nimport TableBodyRow from './TableBodyRow';\r\nimport TableSelectCell from './TableSelectCell';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport cloneDeep from 'lodash.clonedeep';\r\nimport { getPageValue } from '../utils';\r\nimport clsx from 'clsx';\r\n\r\nconst defaultBodyStyles = theme => ({\r\n root: {},\r\n emptyTitle: {\r\n textAlign: 'center',\r\n },\r\n lastStackedCell: {\r\n [theme.breakpoints.down('sm')]: {\r\n '& td:last-child': {\r\n borderBottom: 'none',\r\n },\r\n },\r\n },\r\n lastSimpleCell: {\r\n [theme.breakpoints.down('xs')]: {\r\n '& td:last-child': {\r\n borderBottom: 'none',\r\n },\r\n },\r\n },\r\n});\r\n\r\nclass TableBody extends React.Component {\r\n static propTypes = {\r\n /** Data used to describe table */\r\n data: PropTypes.array.isRequired,\r\n /** Total number of data rows */\r\n count: PropTypes.number.isRequired,\r\n /** Columns used to describe table */\r\n columns: PropTypes.array.isRequired,\r\n /** Options used to describe table */\r\n options: PropTypes.object.isRequired,\r\n /** Data used to filter table against */\r\n filterList: PropTypes.array,\r\n /** Callback to execute when row is clicked */\r\n onRowClick: PropTypes.func,\r\n /** Table rows expanded */\r\n expandedRows: PropTypes.object,\r\n /** Table rows selected */\r\n selectedRows: PropTypes.object,\r\n /** Callback to trigger table row select */\r\n selectRowUpdate: PropTypes.func,\r\n /** The most recent row to have been selected/unselected */\r\n previousSelectedRow: PropTypes.object,\r\n /** Data used to search table against */\r\n searchText: PropTypes.string,\r\n /** Toggle row expandable */\r\n toggleExpandRow: PropTypes.func,\r\n /** Extend the style applied to components */\r\n classes: PropTypes.object,\r\n };\r\n\r\n static defaultProps = {\r\n toggleExpandRow: () => {},\r\n };\r\n\r\n buildRows() {\r\n const { data, page, rowsPerPage, count } = this.props;\r\n\r\n if (this.props.options.serverSide) return data.length ? data : null;\r\n\r\n let rows = [];\r\n const highestPageInRange = getPageValue(count, rowsPerPage, page);\r\n const fromIndex = highestPageInRange === 0 ? 0 : highestPageInRange * rowsPerPage;\r\n const toIndex = Math.min(count, (highestPageInRange + 1) * rowsPerPage);\r\n\r\n if (page > highestPageInRange) {\r\n console.warn('Current page is out of range, using the highest page that is in range instead.');\r\n }\r\n\r\n for (let rowIndex = fromIndex; rowIndex < count && rowIndex < toIndex; rowIndex++) {\r\n if (data[rowIndex] !== undefined) rows.push(data[rowIndex]);\r\n }\r\n\r\n return rows.length ? rows : null;\r\n }\r\n\r\n getRowIndex(index) {\r\n const { page, rowsPerPage, options } = this.props;\r\n\r\n if (options.serverSide) {\r\n return index;\r\n }\r\n\r\n const startIndex = page === 0 ? 0 : page * rowsPerPage;\r\n return startIndex + index;\r\n }\r\n\r\n isRowSelected(dataIndex) {\r\n const { selectedRows } = this.props;\r\n return selectedRows.lookup && selectedRows.lookup[dataIndex] ? true : false;\r\n }\r\n\r\n isRowExpanded(dataIndex) {\r\n const { expandedRows } = this.props;\r\n return expandedRows.lookup && expandedRows.lookup[dataIndex] ? true : false;\r\n }\r\n\r\n isRowSelectable(dataIndex, selectedRows) {\r\n const { options } = this.props;\r\n selectedRows = selectedRows || this.props.selectedRows;\r\n\r\n if (options.isRowSelectable) {\r\n return options.isRowSelectable(dataIndex, selectedRows);\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n isRowExpandable(dataIndex) {\r\n const { options, expandedRows } = this.props;\r\n if (options.isRowExpandable) {\r\n return options.isRowExpandable(dataIndex, expandedRows);\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n handleRowSelect = (data, event) => {\r\n let shiftKey = event && event.nativeEvent ? event.nativeEvent.shiftKey : false;\r\n let shiftAdjacentRows = [];\r\n let previousSelectedRow = this.props.previousSelectedRow;\r\n\r\n // If the user is pressing shift and has previously clicked another row.\r\n if (shiftKey && previousSelectedRow && previousSelectedRow.index < this.props.data.length) {\r\n let curIndex = previousSelectedRow.index;\r\n\r\n // Create a copy of the selectedRows object. This will be used and modified\r\n // below when we see if we can add adjacent rows.\r\n let selectedRows = cloneDeep(this.props.selectedRows);\r\n\r\n // Add the clicked on row to our copy of selectedRows (if it isn't already present).\r\n let clickedDataIndex = this.props.data[data.index].dataIndex;\r\n if (selectedRows.data.filter(d => d.dataIndex === clickedDataIndex).length === 0) {\r\n selectedRows.data.push({\r\n index: data.index,\r\n dataIndex: clickedDataIndex,\r\n });\r\n selectedRows.lookup[clickedDataIndex] = true;\r\n }\r\n\r\n while (curIndex !== data.index) {\r\n let dataIndex = this.props.data[curIndex].dataIndex;\r\n\r\n if (this.isRowSelectable(dataIndex, selectedRows)) {\r\n let lookup = {\r\n index: curIndex,\r\n dataIndex: dataIndex,\r\n };\r\n\r\n // Add adjacent row to temp selectedRow object if it isn't present.\r\n if (selectedRows.data.filter(d => d.dataIndex === dataIndex).length === 0) {\r\n selectedRows.data.push(lookup);\r\n selectedRows.lookup[dataIndex] = true;\r\n }\r\n\r\n shiftAdjacentRows.push(lookup);\r\n }\r\n curIndex = data.index > curIndex ? curIndex + 1 : curIndex - 1;\r\n }\r\n }\r\n this.props.selectRowUpdate('cell', data, shiftAdjacentRows);\r\n };\r\n\r\n handleRowClick = (row, data, event) => {\r\n // Don't trigger onRowClick if the event was actually the expandable icon.\r\n if (\r\n event.target.id === 'expandable-button' ||\r\n (event.target.nodeName === 'path' && event.target.parentNode.id === 'expandable-button')\r\n ) {\r\n return;\r\n }\r\n\r\n // Don't trigger onRowClick if the event was actually a row selection via checkbox\r\n if (event.target.id && event.target.id.startsWith('MUIDataTableSelectCell')) return;\r\n\r\n // Check if we should toggle row select when row is clicked anywhere\r\n if (\r\n this.props.options.selectableRowsOnClick &&\r\n this.props.options.selectableRows !== 'none' &&\r\n this.isRowSelectable(data.dataIndex, this.props.selectedRows)\r\n ) {\r\n const selectRow = { index: data.rowIndex, dataIndex: data.dataIndex };\r\n this.handleRowSelect(selectRow, event);\r\n }\r\n // Check if we should trigger row expand when row is clicked anywhere\r\n if (\r\n this.props.options.expandableRowsOnClick &&\r\n this.props.options.expandableRows &&\r\n this.isRowExpandable(data.dataIndex, this.props.expandedRows)\r\n ) {\r\n const expandRow = { index: data.rowIndex, dataIndex: data.dataIndex };\r\n this.props.toggleExpandRow(expandRow);\r\n }\r\n\r\n // Don't trigger onRowClick if the event was actually a row selection via click\r\n if (this.props.options.selectableRowsOnClick) return;\r\n\r\n this.props.options.onRowClick && this.props.options.onRowClick(row, data, event);\r\n };\r\n\r\n processRow = (row, columnOrder) => {\r\n let ret = [];\r\n for (let ii = 0; ii < row.length; ii++) {\r\n ret.push({\r\n value: row[columnOrder[ii]],\r\n index: columnOrder[ii],\r\n });\r\n }\r\n return ret;\r\n };\r\n\r\n render() {\r\n const {\r\n classes,\r\n columns,\r\n toggleExpandRow,\r\n options,\r\n columnOrder = this.props.columns.map((item, idx) => idx),\r\n components = {},\r\n tableId,\r\n } = this.props;\r\n const tableRows = this.buildRows();\r\n const visibleColCnt = columns.filter(c => c.display === 'true').length;\r\n\r\n return (\r\n \r\n {tableRows && tableRows.length > 0 ? (\r\n tableRows.map((data, rowIndex) => {\r\n const { data: row, dataIndex } = data;\r\n\r\n if (options.customRowRender) {\r\n return options.customRowRender(row, dataIndex, rowIndex);\r\n }\r\n\r\n let isRowSelected = options.selectableRows !== 'none' ? this.isRowSelected(dataIndex) : false;\r\n let isRowSelectable = this.isRowSelectable(dataIndex);\r\n let bodyClasses = options.setRowProps ? options.setRowProps(row, dataIndex, rowIndex) || {} : {};\r\n\r\n const processedRow = this.processRow(row, columnOrder);\r\n\r\n return (\r\n \r\n \r\n \r\n {processedRow.map(\r\n column =>\r\n columns[column.index].display === 'true' && (\r\n \r\n {column.value}\r\n \r\n ),\r\n )}\r\n \r\n {this.isRowExpanded(dataIndex) && options.renderExpandableRow(row, { rowIndex, dataIndex })}\r\n \r\n );\r\n })\r\n ) : (\r\n \r\n \r\n \r\n {options.textLabels.body.noMatch}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(defaultBodyStyles, { name: 'MUIDataTableBody' })(TableBody);\r\n","import { Grid, TextField } from '@material-ui/core';\r\n\r\nimport Button from '@material-ui/core/Button';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport Input from '@material-ui/core/Input';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport Select from '@material-ui/core/Select';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport clsx from 'clsx';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport cloneDeep from 'lodash.clonedeep';\r\n\r\nexport const defaultFilterStyles = theme => ({\r\n root: {\r\n backgroundColor: theme.palette.background.default,\r\n padding: '24px 24px 36px 24px',\r\n fontFamily: 'Roboto',\r\n },\r\n header: {\r\n flex: '0 0 auto',\r\n marginBottom: '16px',\r\n width: '100%',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n title: {\r\n display: 'inline-block',\r\n marginLeft: '7px',\r\n color: theme.palette.text.primary,\r\n fontSize: '14px',\r\n fontWeight: 500,\r\n },\r\n noMargin: {\r\n marginLeft: '0px',\r\n },\r\n reset: {\r\n alignSelf: 'left',\r\n },\r\n resetLink: {\r\n marginLeft: '16px',\r\n fontSize: '12px',\r\n cursor: 'pointer',\r\n },\r\n filtersSelected: {\r\n alignSelf: 'right',\r\n },\r\n /* checkbox */\r\n checkboxListTitle: {\r\n marginLeft: '7px',\r\n marginBottom: '8px',\r\n fontSize: '14px',\r\n color: theme.palette.text.secondary,\r\n textAlign: 'left',\r\n fontWeight: 500,\r\n },\r\n checkboxFormGroup: {\r\n marginTop: '8px',\r\n },\r\n checkboxFormControl: {\r\n margin: '0px',\r\n },\r\n checkboxFormControlLabel: {\r\n fontSize: '15px',\r\n marginLeft: '8px',\r\n color: theme.palette.text.primary,\r\n },\r\n checkboxIcon: {\r\n width: '32px',\r\n height: '32px',\r\n },\r\n checkbox: {},\r\n checked: {},\r\n gridListTile: {\r\n marginTop: '16px',\r\n },\r\n});\r\n\r\nclass TableFilter extends React.Component {\r\n static propTypes = {\r\n /** Data used to populate filter dropdown/checkbox */\r\n filterData: PropTypes.array.isRequired,\r\n /** Data selected to be filtered against dropdown/checkbox */\r\n filterList: PropTypes.array.isRequired,\r\n /** Options used to describe table */\r\n options: PropTypes.object.isRequired,\r\n /** Callback to trigger filter update */\r\n onFilterUpdate: PropTypes.func,\r\n /** Callback to trigger filter reset */\r\n onFilterReset: PropTypes.func,\r\n /** Extend the style applied to components */\r\n classes: PropTypes.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n filterList: cloneDeep(props.filterList),\r\n };\r\n }\r\n\r\n filterUpdate = (index, value, column, type, customUpdate) => {\r\n let newFilterList = this.state.filterList.slice(0);\r\n\r\n this.props.updateFilterByType(newFilterList, index, value, type, customUpdate);\r\n this.setState({\r\n filterList: newFilterList,\r\n });\r\n };\r\n\r\n handleCheckboxChange = (index, value, column) => {\r\n this.filterUpdate(index, value, column, 'checkbox');\r\n\r\n if (this.props.options.confirmFilters !== true) {\r\n this.props.onFilterUpdate(index, value, column, 'checkbox');\r\n }\r\n };\r\n\r\n handleDropdownChange = (event, index, column) => {\r\n const labelFilterAll = this.props.options.textLabels.filter.all;\r\n const value = event.target.value === labelFilterAll ? [] : [event.target.value];\r\n this.filterUpdate(index, value, column, 'dropdown');\r\n\r\n if (this.props.options.confirmFilters !== true) {\r\n this.props.onFilterUpdate(index, value, column, 'dropdown');\r\n }\r\n };\r\n\r\n handleMultiselectChange = (index, value, column) => {\r\n this.filterUpdate(index, value, column, 'multiselect');\r\n\r\n if (this.props.options.confirmFilters !== true) {\r\n this.props.onFilterUpdate(index, value, column, 'multiselect');\r\n }\r\n };\r\n\r\n handleTextFieldChange = (event, index, column) => {\r\n this.filterUpdate(index, event.target.value, column, 'textField');\r\n\r\n if (this.props.options.confirmFilters !== true) {\r\n this.props.onFilterUpdate(index, event.target.value, column, 'textField');\r\n }\r\n };\r\n\r\n handleCustomChange = (value, index, column) => {\r\n this.filterUpdate(index, value, column.name, column.filterType);\r\n\r\n if (this.props.options.confirmFilters !== true) {\r\n this.props.onFilterUpdate(index, value, column.name, column.filterType);\r\n }\r\n };\r\n\r\n renderCheckbox(column, index, components = {}) {\r\n const CheckboxComponent = components.Checkbox || Checkbox;\r\n\r\n const { classes, filterData } = this.props;\r\n const { filterList } = this.state;\r\n const renderItem =\r\n column.filterOptions && column.filterOptions.renderValue ? column.filterOptions.renderValue : v => v;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {column.label}\r\n \r\n \r\n \r\n {filterData[index].map((filterValue, filterIndex) => (\r\n \r\n = 0}\r\n classes={{\r\n root: classes.checkbox,\r\n checked: classes.checked,\r\n }}\r\n value={filterValue != null ? filterValue.toString() : ''}\r\n />\r\n }\r\n label={renderItem(filterValue)}\r\n />\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderSelect(column, index) {\r\n const { classes, filterData, options } = this.props;\r\n const { filterList } = this.state;\r\n const textLabels = options.textLabels.filter;\r\n const renderItem =\r\n column.filterOptions && column.filterOptions.renderValue\r\n ? column.filterOptions.renderValue\r\n : v => (v != null ? v.toString() : '');\r\n const width = (column.filterOptions && column.filterOptions.fullWidth) === true ? 12 : 6;\r\n\r\n return (\r\n \r\n \r\n {column.label}\r\n this.handleDropdownChange(event, index, column.name)}\r\n input={}>\r\n \r\n {textLabels.all}\r\n \r\n {filterData[index].map((filterValue, filterIndex) => (\r\n \r\n {renderItem(filterValue)}\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderTextField(column, index) {\r\n const { classes } = this.props;\r\n const { filterList } = this.state;\r\n if (column.filterOptions && column.filterOptions.renderValue) {\r\n console.warn('Custom renderValue not supported for textField filters');\r\n }\r\n const width = (column.filterOptions && column.filterOptions.fullWidth) === true ? 12 : 6;\r\n\r\n return (\r\n \r\n \r\n this.handleTextFieldChange(event, index, column.name)}\r\n />\r\n \r\n \r\n );\r\n }\r\n\r\n renderMultiselect(column, index, components = {}) {\r\n const CheckboxComponent = components.Checkbox || Checkbox;\r\n\r\n const { classes, filterData } = this.props;\r\n const { filterList } = this.state;\r\n const renderItem =\r\n column.filterOptions && column.filterOptions.renderValue ? column.filterOptions.renderValue : v => v;\r\n const width = (column.filterOptions && column.filterOptions.fullWidth) === true ? 12 : 6;\r\n return (\r\n \r\n \r\n {column.label}\r\n selected.map(renderItem).join(', ')}\r\n name={column.name}\r\n onChange={event => this.handleMultiselectChange(index, event.target.value, column.name)}\r\n input={}>\r\n {filterData[index].map((filterValue, filterIndex) => (\r\n \r\n = 0}\r\n value={filterValue != null ? filterValue.toString() : ''}\r\n className={classes.checkboxIcon}\r\n classes={{\r\n root: classes.checkbox,\r\n checked: classes.checked,\r\n }}\r\n />\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderCustomField(column, index) {\r\n const { classes, filterData, options } = this.props;\r\n const { filterList } = this.state;\r\n const width = (column.filterOptions && column.filterOptions.fullWidth) === true ? 12 : 6;\r\n const display =\r\n (column.filterOptions && column.filterOptions.display) ||\r\n (options.filterOptions && options.filterOptions.display);\r\n\r\n if (!display) {\r\n console.error('Property \"display\" is required when using custom filter type.');\r\n return;\r\n }\r\n if (column.filterListOptions && column.filterListOptions.renderValue) {\r\n console.warning('\"renderValue\" is ignored for custom filter fields');\r\n }\r\n\r\n return (\r\n \r\n \r\n {display(filterList, this.handleCustomChange, index, column, filterData)}\r\n \r\n \r\n );\r\n }\r\n\r\n applyFilters = () => {\r\n this.state.filterList.forEach((filter, index) => {\r\n this.props.onFilterUpdate(index, filter, this.props.columns[index], 'custom');\r\n });\r\n\r\n this.props.handleClose(); // close filter dialog popover\r\n\r\n if (this.props.options.onFilterConfirm) {\r\n this.props.options.onFilterConfirm(this.state.filterList);\r\n }\r\n\r\n return this.state.filterList;\r\n };\r\n\r\n resetFilters = () => {\r\n this.setState({\r\n filterList: this.props.columns.map(() => []),\r\n });\r\n if (this.props.options.confirmFilters !== true) {\r\n this.props.onFilterReset();\r\n }\r\n };\r\n\r\n render() {\r\n const { classes, columns, options, customFooter, filterList, components = {} } = this.props;\r\n const textLabels = options.textLabels.filter;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n {textLabels.title}\r\n \r\n \r\n {textLabels.reset}\r\n \r\n
\r\n
\r\n
\r\n \r\n {columns.map((column, index) => {\r\n if (column.filter) {\r\n const filterType = column.filterType || options.filterType;\r\n return filterType === 'checkbox'\r\n ? this.renderCheckbox(column, index, components)\r\n : filterType === 'multiselect'\r\n ? this.renderMultiselect(column, index, components)\r\n : filterType === 'textField'\r\n ? this.renderTextField(column, index)\r\n : filterType === 'custom'\r\n ? this.renderCustomField(column, index)\r\n : this.renderSelect(column, index);\r\n }\r\n })}\r\n \r\n {customFooter ? customFooter(filterList, this.applyFilters) : ''}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(defaultFilterStyles, { name: 'MUIDataTableFilter' })(TableFilter);\r\n","import Chip from '@material-ui/core/Chip';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\n\r\nconst TableFilterListItem = ({ label, onDelete, className, filterProps }) => {\r\n filterProps = filterProps || {};\r\n if (filterProps.className) {\r\n className = clsx(className, filterProps.className);\r\n }\r\n return ;\r\n};\r\n\r\nTableFilterListItem.propTypes = {\r\n label: PropTypes.node,\r\n onDelete: PropTypes.func.isRequired,\r\n className: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default TableFilterListItem;\r\n","import { makeStyles } from '@material-ui/core/styles';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport TableFilterListItem from './TableFilterListItem';\r\n\r\nconst useStyles = makeStyles(\r\n () => ({\r\n root: {\r\n display: 'flex',\r\n justifyContent: 'left',\r\n flexWrap: 'wrap',\r\n margin: '0px 16px 0px 16px',\r\n },\r\n chip: {\r\n margin: '8px 8px 0px 0px',\r\n },\r\n }),\r\n { name: 'MUIDataTableFilterList' },\r\n);\r\n\r\nconst TableFilterList = ({\r\n options,\r\n filterList,\r\n filterUpdate,\r\n filterListRenderers,\r\n columnNames,\r\n serverSideFilterList,\r\n customFilterListUpdate,\r\n ItemComponent = TableFilterListItem,\r\n}) => {\r\n const classes = useStyles();\r\n const { serverSide } = options;\r\n\r\n const removeFilter = (index, filterValue, columnName, filterType, customFilterListUpdate = null) => {\r\n let removedFilter = filterValue;\r\n if (Array.isArray(removedFilter) && removedFilter.length === 0) {\r\n removedFilter = filterList[index];\r\n }\r\n\r\n filterUpdate(index, filterValue, columnName, filterType, customFilterListUpdate, filterList => {\r\n if (options.onFilterChipClose) {\r\n options.onFilterChipClose(index, removedFilter, filterList);\r\n }\r\n });\r\n };\r\n const customFilterChip = (customFilterItem, index, customFilterItemIndex, item, isArray) => {\r\n let type;\r\n // If our custom filter list is an array, we need to check for custom update functions to determine\r\n // default type. Otherwise we use the supplied type in options.\r\n if (isArray) {\r\n type = customFilterListUpdate[index] ? 'custom' : 'chip';\r\n } else {\r\n type = columnNames[index].filterType;\r\n }\r\n\r\n return (\r\n \r\n removeFilter(\r\n index,\r\n item[customFilterItemIndex] || [],\r\n columnNames[index].name,\r\n type,\r\n customFilterListUpdate[index],\r\n )\r\n }\r\n className={classes.chip}\r\n itemKey={customFilterItemIndex}\r\n index={index}\r\n data={item}\r\n columnNames={columnNames}\r\n filterProps={\r\n options.setFilterChipProps\r\n ? options.setFilterChipProps(index, columnNames[index].name, item[customFilterItemIndex] || [])\r\n : {}\r\n }\r\n />\r\n );\r\n };\r\n\r\n const filterChip = (index, data, colIndex) => (\r\n removeFilter(index, data, columnNames[index].name, 'chip')}\r\n className={classes.chip}\r\n itemKey={colIndex}\r\n index={index}\r\n data={data}\r\n columnNames={columnNames}\r\n filterProps={options.setFilterChipProps ? options.setFilterChipProps(index, columnNames[index].name, data) : {}}\r\n />\r\n );\r\n\r\n const getFilterList = filterList => {\r\n return filterList.map((item, index) => {\r\n if (columnNames[index].filterType === 'custom' && filterList[index].length) {\r\n const filterListRenderersValue = filterListRenderers[index](item);\r\n\r\n if (Array.isArray(filterListRenderersValue)) {\r\n return filterListRenderersValue.map((customFilterItem, customFilterItemIndex) =>\r\n customFilterChip(customFilterItem, index, customFilterItemIndex, item, true),\r\n );\r\n } else {\r\n return customFilterChip(filterListRenderersValue, index, index, item, false);\r\n }\r\n }\r\n\r\n return item.map((data, colIndex) => filterChip(index, data, colIndex));\r\n });\r\n };\r\n\r\n return (\r\n
\r\n {serverSide && serverSideFilterList ? getFilterList(serverSideFilterList) : getFilterList(filterList)}\r\n
\r\n );\r\n};\r\n\r\nTableFilterList.propTypes = {\r\n /** Data used to filter table against */\r\n filterList: PropTypes.array.isRequired,\r\n /** Filter List value renderers */\r\n filterListRenderers: PropTypes.array.isRequired,\r\n /** Columns used to describe table */\r\n columnNames: PropTypes.arrayOf(\r\n PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.shape({ name: PropTypes.string.isRequired, filterType: PropTypes.string }),\r\n ]),\r\n ).isRequired,\r\n /** Callback to trigger filter update */\r\n onFilterUpdate: PropTypes.func,\r\n ItemComponent: PropTypes.any,\r\n};\r\n\r\nexport default TableFilterList;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { InputBase, MenuItem, Select, Toolbar, Typography } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { getPageValue } from '../utils.js';\r\nimport clsx from 'clsx';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n root: {\r\n color: theme.palette.text.primary,\r\n },\r\n caption: {\r\n flexShrink: 0,\r\n },\r\n /*  Styles applied to the Select component root element */\r\n selectRoot: {\r\n marginRight: 32,\r\n marginLeft: 8,\r\n },\r\n select: {\r\n paddingTop: 6,\r\n paddingBottom: 7,\r\n paddingLeft: 8,\r\n paddingRight: 24,\r\n textAlign: 'right',\r\n textAlignLast: 'right',\r\n fontSize: theme.typography.pxToRem(14),\r\n },\r\n /* Styles applied to Select component icon class */\r\n selectIcon: {},\r\n /* Styles applied to InputBase component */\r\n input: {\r\n color: 'inhert',\r\n fontSize: 'inhert',\r\n flexShrink: 0,\r\n },\r\n }),\r\n { name: 'MUIDataTableJumpToPage' },\r\n);\r\n\r\nfunction JumpToPage(props) {\r\n const classes = useStyles();\r\n\r\n const handlePageChange = event => {\r\n props.changePage(parseInt(event.target.value, 10));\r\n };\r\n\r\n const { count, textLabels, rowsPerPage, page, changePage } = props;\r\n\r\n const textLabel = textLabels.pagination.jumpToPage;\r\n\r\n let pages = [];\r\n let lastPage = Math.min(1000, getPageValue(count, rowsPerPage, 1000000));\r\n\r\n for (let ii = 0; ii <= lastPage; ii++) {\r\n pages.push(ii);\r\n }\r\n const MenuItemComponent = MenuItem;\r\n\r\n let myStyle = {\r\n display: 'flex',\r\n minHeight: '52px',\r\n alignItems: 'center',\r\n };\r\n\r\n return (\r\n \r\n \r\n {textLabel}\r\n \r\n }\r\n value={getPageValue(count, rowsPerPage, page)}\r\n onChange={handlePageChange}\r\n style={{ marginRight: 0 }}>\r\n {pages.map(pageVal => (\r\n \r\n {pageVal + 1}\r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n\r\nJumpToPage.propTypes = {\r\n count: PropTypes.number.isRequired,\r\n page: PropTypes.number.isRequired,\r\n rowsPerPage: PropTypes.number.isRequired,\r\n textLabels: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default JumpToPage;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport MuiTableCell from '@material-ui/core/TableCell';\r\nimport MuiTableRow from '@material-ui/core/TableRow';\r\nimport MuiTableFooter from '@material-ui/core/TableFooter';\r\nimport MuiTablePagination from '@material-ui/core/TablePagination';\r\nimport JumpToPage from './JumpToPage';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { getPageValue } from '../utils';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n root: {},\r\n tableCellContainer: {\r\n padding: '0px 24px 0px 24px',\r\n },\r\n navContainer: {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n },\r\n toolbar: {},\r\n selectRoot: {},\r\n '@media screen and (max-width: 400px)': {\r\n toolbar: {\r\n '& span:nth-child(2)': {\r\n display: 'none',\r\n },\r\n },\r\n selectRoot: {\r\n marginRight: '8px',\r\n },\r\n },\r\n }),\r\n { name: 'MUIDataTablePagination' },\r\n);\r\n\r\nfunction TablePagination(props) {\r\n const classes = useStyles();\r\n\r\n const handleRowChange = event => {\r\n props.changeRowsPerPage(event.target.value);\r\n };\r\n\r\n const handlePageChange = (_, page) => {\r\n props.changePage(page);\r\n };\r\n\r\n const { count, options, rowsPerPage, page } = props;\r\n const textLabels = options.textLabels.pagination;\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n {options.jumpToPage ? (\r\n \r\n ) : null}\r\n `${from}-${to} ${textLabels.displayRows} ${count}`}\r\n backIconButtonProps={{\r\n id: 'pagination-back',\r\n 'data-testid': 'pagination-back',\r\n 'aria-label': textLabels.previous,\r\n title: textLabels.previous || '',\r\n }}\r\n nextIconButtonProps={{\r\n id: 'pagination-next',\r\n 'data-testid': 'pagination-next',\r\n 'aria-label': textLabels.next,\r\n title: textLabels.next || '',\r\n }}\r\n SelectProps={{\r\n id: 'pagination-input',\r\n SelectDisplayProps: { id: 'pagination-rows', 'data-testid': 'pagination-rows' },\r\n MenuProps: {\r\n id: 'pagination-menu',\r\n 'data-testid': 'pagination-menu',\r\n MenuListProps: { id: 'pagination-menu-list', 'data-testid': 'pagination-menu-list' },\r\n },\r\n }}\r\n rowsPerPageOptions={options.rowsPerPageOptions}\r\n onChangePage={handlePageChange}\r\n onChangeRowsPerPage={handleRowChange}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nTablePagination.propTypes = {\r\n /** Total number of table rows */\r\n count: PropTypes.number.isRequired,\r\n /** Options used to describe table */\r\n options: PropTypes.object.isRequired,\r\n /** Current page index */\r\n page: PropTypes.number.isRequired,\r\n /** Total number allowed of rows per page */\r\n rowsPerPage: PropTypes.number.isRequired,\r\n /** Callback to trigger rows per page change */\r\n changeRowsPerPage: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default TablePagination;\r\n","import React from 'react';\r\nimport MuiTable from '@material-ui/core/Table';\r\nimport TablePagination from './TablePagination';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst useStyles = makeStyles(\r\n () => ({\r\n root: {\r\n '@media print': {\r\n display: 'none',\r\n },\r\n },\r\n }),\r\n { name: 'MUIDataTableFooter' },\r\n);\r\n\r\nconst TableFooter = ({ options, rowCount, page, rowsPerPage, changeRowsPerPage, changePage }) => {\r\n const classes = useStyles();\r\n const { customFooter, pagination = true } = options;\r\n\r\n if (customFooter) {\r\n return (\r\n \r\n {options.customFooter(\r\n rowCount,\r\n page,\r\n rowsPerPage,\r\n changeRowsPerPage,\r\n changePage,\r\n options.textLabels.pagination,\r\n )}\r\n \r\n );\r\n }\r\n\r\n if (pagination) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nTableFooter.propTypes = {\r\n /** Total number of table rows */\r\n rowCount: PropTypes.number.isRequired,\r\n /** Options used to describe table */\r\n options: PropTypes.shape({\r\n customFooter: PropTypes.func,\r\n pagination: PropTypes.bool,\r\n textLabels: PropTypes.shape({\r\n pagination: PropTypes.object,\r\n }),\r\n }),\r\n /** Current page index */\r\n page: PropTypes.number.isRequired,\r\n /** Total number allowed of rows per page */\r\n rowsPerPage: PropTypes.number.isRequired,\r\n /** Callback to trigger rows per page change */\r\n changeRowsPerPage: PropTypes.func.isRequired,\r\n /** Callback to trigger page change */\r\n changePage: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default TableFooter;\r\n","/*\r\n This hook handles the dragging and dropping effects that occur for columns.\r\n*/\r\n\r\nimport { useDrop } from 'react-dnd';\r\n\r\nconst getColModel = (headCellRefs, columnOrder, columns) => {\r\n let colModel = [];\r\n let leftMostCell = headCellRefs[0] ? headCellRefs[0] : null; // left most cell is the select cell, if it exists\r\n\r\n if (leftMostCell === null) {\r\n leftMostCell = { offsetLeft: Infinity };\r\n let headCells = Object.entries(headCellRefs);\r\n headCells.forEach(([key, item], idx) => {\r\n if (item && item.offsetLeft < leftMostCell.offsetLeft) {\r\n leftMostCell = item;\r\n }\r\n });\r\n\r\n if (leftMostCell.offsetLeft === Infinity) {\r\n leftMostCell = { offsetParent: 0, offsetWidth: 0, offsetLeft: 0 };\r\n }\r\n }\r\n\r\n let ii = 0,\r\n parentOffsetLeft = 0,\r\n offsetParent = leftMostCell.offsetParent;\r\n while (offsetParent) {\r\n parentOffsetLeft = parentOffsetLeft + (offsetParent.offsetLeft || 0) - (offsetParent.scrollLeft || 0);\r\n offsetParent = offsetParent.offsetParent;\r\n ii++;\r\n if (ii > 1000) break;\r\n }\r\n\r\n // if the select cell is present, make sure it is apart of the column model\r\n if (headCellRefs[0]) {\r\n colModel[0] = {\r\n left: parentOffsetLeft + leftMostCell.offsetLeft,\r\n width: leftMostCell.offsetWidth,\r\n columnIndex: null,\r\n ref: leftMostCell,\r\n };\r\n }\r\n\r\n columnOrder.forEach((colIdx, idx) => {\r\n let col = headCellRefs[colIdx + 1];\r\n let cmIndx = colModel.length - 1;\r\n if (!(columns[colIdx] && columns[colIdx].display !== 'true')) {\r\n let prevLeft =\r\n cmIndx !== -1 ? colModel[cmIndx].left + colModel[cmIndx].width : parentOffsetLeft + leftMostCell.offsetLeft;\r\n colModel.push({\r\n left: prevLeft,\r\n width: col.offsetWidth,\r\n columnIndex: colIdx,\r\n ref: col,\r\n });\r\n }\r\n });\r\n\r\n return colModel;\r\n};\r\n\r\nconst reorderColumns = (prevColumnOrder, columnIndex, newPosition) => {\r\n let columnOrder = prevColumnOrder.slice();\r\n let srcIndex = columnOrder.indexOf(columnIndex);\r\n let targetIndex = columnOrder.indexOf(newPosition);\r\n\r\n if (srcIndex !== -1 && targetIndex !== -1) {\r\n let newItem = columnOrder[srcIndex];\r\n columnOrder = [...columnOrder.slice(0, srcIndex), ...columnOrder.slice(srcIndex + 1)];\r\n columnOrder = [...columnOrder.slice(0, targetIndex), newItem, ...columnOrder.slice(targetIndex)];\r\n }\r\n return columnOrder;\r\n};\r\n\r\nconst handleHover = opts => {\r\n const {\r\n item,\r\n mon,\r\n index,\r\n headCellRefs,\r\n updateColumnOrder,\r\n columnOrder,\r\n transitionTime = 300,\r\n tableRef,\r\n tableId,\r\n timers,\r\n columns,\r\n } = opts;\r\n\r\n let hoverIdx = mon.getItem().colIndex;\r\n\r\n if (headCellRefs !== mon.getItem().headCellRefs) return;\r\n\r\n if (hoverIdx !== index) {\r\n let reorderedCols = reorderColumns(columnOrder, mon.getItem().colIndex, index);\r\n let newColModel = getColModel(headCellRefs, reorderedCols, columns);\r\n\r\n let newX = mon.getClientOffset().x;\r\n let modelIdx = -1;\r\n for (let ii = 0; ii < newColModel.length; ii++) {\r\n if (newX > newColModel[ii].left && newX < newColModel[ii].left + newColModel[ii].width) {\r\n modelIdx = newColModel[ii].columnIndex;\r\n break;\r\n }\r\n }\r\n\r\n if (modelIdx === mon.getItem().colIndex) {\r\n clearTimeout(timers.columnShift);\r\n\r\n let curColModel = getColModel(headCellRefs, columnOrder, columns);\r\n\r\n let transitions = [];\r\n newColModel.forEach(item => {\r\n transitions[item.columnIndex] = item.left;\r\n });\r\n curColModel.forEach(item => {\r\n transitions[item.columnIndex] = transitions[item.columnIndex] - item.left;\r\n });\r\n\r\n for (let idx = 1; idx < columnOrder.length; idx++) {\r\n let colIndex = columnOrder[idx];\r\n if (columns[colIndex] && columns[colIndex].display !== 'true') {\r\n // skip\r\n } else {\r\n if (headCellRefs[idx]) headCellRefs[idx].style.transition = '280ms';\r\n if (headCellRefs[idx]) headCellRefs[idx].style.transform = 'translateX(' + transitions[idx - 1] + 'px)';\r\n }\r\n }\r\n\r\n let allElms = [];\r\n let dividers = [];\r\n for (let ii = 0; ii < columnOrder.length; ii++) {\r\n let elms = tableRef\r\n ? tableRef.querySelectorAll('[data-colindex=\"' + ii + '\"][data-tableid=\"' + tableId + '\"]')\r\n : [];\r\n for (let jj = 0; jj < elms.length; jj++) {\r\n elms[jj].style.transition = transitionTime + 'ms';\r\n elms[jj].style.transform = 'translateX(' + transitions[ii] + 'px)';\r\n allElms.push(elms[jj]);\r\n }\r\n\r\n let divider = tableRef\r\n ? tableRef.querySelectorAll('[data-divider-index=\"' + (ii + 1) + '\"][data-tableid=\"' + tableId + '\"]')\r\n : [];\r\n for (let jj = 0; jj < divider.length; jj++) {\r\n divider[jj].style.transition = transitionTime + 'ms';\r\n divider[jj].style.transform = 'translateX(' + transitions[columnOrder[ii]] + 'px)';\r\n dividers.push(divider[jj]);\r\n }\r\n }\r\n\r\n let newColIndex = mon.getItem().colIndex;\r\n timers.columnShift = setTimeout(() => {\r\n allElms.forEach(item => {\r\n item.style.transition = '0s';\r\n item.style.transform = 'translateX(0)';\r\n });\r\n dividers.forEach(item => {\r\n item.style.transition = '0s';\r\n item.style.transform = 'translateX(0)';\r\n });\r\n updateColumnOrder(reorderedCols, newColIndex, index);\r\n }, transitionTime);\r\n }\r\n }\r\n};\r\n\r\nconst useColumnDrop = opts => {\r\n const [{ isOver, canDrop }, drop] = useDrop({\r\n accept: 'HEADER',\r\n drop: drop,\r\n hover: (item, mon) => handleHover(Object.assign({}, opts, { item, mon })),\r\n collect: mon => ({\r\n isOver: !!mon.isOver(),\r\n canDrop: !!mon.canDrop(),\r\n }),\r\n });\r\n\r\n return [drop];\r\n};\r\n\r\nexport { getColModel, reorderColumns, handleHover };\r\nexport default useColumnDrop;\r\n","import Button from '@material-ui/core/Button';\r\nimport clsx from 'clsx';\r\nimport HelpIcon from '@material-ui/icons/Help';\r\nimport MuiTooltip from '@material-ui/core/Tooltip';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useState } from 'react';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\nimport useColumnDrop from '../hooks/useColumnDrop.js';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { useDrag } from 'react-dnd';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n root: {},\r\n fixedHeader: {\r\n position: 'sticky',\r\n top: '0px',\r\n zIndex: 100,\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n tooltip: {\r\n cursor: 'pointer',\r\n },\r\n mypopper: {\r\n '&[data-x-out-of-boundaries]': {\r\n display: 'none',\r\n },\r\n },\r\n data: {\r\n display: 'inline-block',\r\n },\r\n sortAction: {\r\n display: 'flex',\r\n cursor: 'pointer',\r\n },\r\n dragCursor: {\r\n cursor: 'grab',\r\n },\r\n sortLabelRoot: {\r\n height: '20px',\r\n },\r\n sortActive: {\r\n color: theme.palette.text.primary,\r\n },\r\n toolButton: {\r\n textTransform: 'none',\r\n marginLeft: '-8px',\r\n minWidth: 0,\r\n marginRight: '8px',\r\n },\r\n contentWrapper: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n hintIconAlone: {\r\n marginTop: '-3px',\r\n marginLeft: '3px',\r\n },\r\n hintIconWithSortIcon: {\r\n marginTop: '-3px',\r\n },\r\n }),\r\n { name: 'MUIDataTableHeadCell' },\r\n);\r\n\r\nconst TableHeadCell = ({\r\n cellHeaderProps = {},\r\n children,\r\n colPosition,\r\n column,\r\n columns,\r\n columnOrder = [],\r\n components = {},\r\n draggableHeadCellRefs,\r\n draggingHook,\r\n hint,\r\n index,\r\n options,\r\n print,\r\n setCellRef,\r\n sort,\r\n sortDirection,\r\n tableRef,\r\n tableId,\r\n timers,\r\n toggleSort,\r\n updateColumnOrder,\r\n}) => {\r\n const [sortTooltipOpen, setSortTooltipOpen] = useState(false);\r\n const [hintTooltipOpen, setHintTooltipOpen] = useState(false);\r\n\r\n const classes = useStyles();\r\n\r\n const handleKeyboardSortInput = e => {\r\n if (e.key === 'Enter') {\r\n toggleSort(index);\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const handleSortClick = () => {\r\n toggleSort(index);\r\n };\r\n\r\n const [dragging, setDragging] = draggingHook ? draggingHook : [];\r\n\r\n const { className, ...otherProps } = cellHeaderProps;\r\n const Tooltip = components.Tooltip || MuiTooltip;\r\n const sortActive = sortDirection !== 'none' && sortDirection !== undefined;\r\n const ariaSortDirection = sortDirection === 'none' ? false : sortDirection;\r\n\r\n const isDraggingEnabled = () => {\r\n if (!draggingHook) return false;\r\n return options.draggableColumns && options.draggableColumns.enabled && column.draggable !== false;\r\n };\r\n\r\n const sortLabelProps = {\r\n classes: { root: classes.sortLabelRoot },\r\n tabIndex: -1,\r\n active: sortActive,\r\n hideSortIcon: true,\r\n ...(ariaSortDirection ? { direction: sortDirection } : {}),\r\n };\r\n\r\n const [{ opacity }, dragRef, preview] = useDrag({\r\n item: {\r\n type: 'HEADER',\r\n colIndex: index,\r\n headCellRefs: draggableHeadCellRefs,\r\n },\r\n begin: monitor => {\r\n setTimeout(() => {\r\n setHintTooltipOpen(false);\r\n setSortTooltipOpen(false);\r\n setDragging(true);\r\n }, 0);\r\n return null;\r\n },\r\n end: (item, monitor) => {\r\n setDragging(false);\r\n },\r\n collect: monitor => {\r\n return {\r\n opacity: monitor.isDragging() ? 1 : 0,\r\n };\r\n },\r\n });\r\n\r\n const [drop] = useColumnDrop({\r\n drop: (item, mon) => {\r\n setSortTooltipOpen(false);\r\n setHintTooltipOpen(false);\r\n setDragging(false);\r\n },\r\n index,\r\n headCellRefs: draggableHeadCellRefs,\r\n updateColumnOrder,\r\n columnOrder,\r\n columns,\r\n transitionTime: options.draggableColumns ? options.draggableColumns.transitionTime : 300,\r\n tableRef: tableRef ? tableRef() : null,\r\n tableId: tableId || 'none',\r\n timers,\r\n });\r\n\r\n const cellClass = clsx({\r\n [classes.root]: true,\r\n [classes.fixedHeader]: options.fixedHeader,\r\n 'datatables-noprint': !print,\r\n [className]: className,\r\n });\r\n\r\n const showHintTooltip = () => {\r\n setSortTooltipOpen(false);\r\n setHintTooltipOpen(true);\r\n };\r\n\r\n const getTooltipTitle = () => {\r\n if (dragging) return '';\r\n if (!options.textLabels) return '';\r\n return options.textLabels.body.columnHeaderTooltip\r\n ? options.textLabels.body.columnHeaderTooltip(column)\r\n : options.textLabels.body.toolTip;\r\n };\r\n\r\n const closeTooltip = () => {\r\n setSortTooltipOpen(false);\r\n };\r\n\r\n return (\r\n {\r\n drop && drop(ref);\r\n setCellRef && setCellRef(index + 1, colPosition + 1, ref);\r\n }}\r\n className={cellClass}\r\n scope={'col'}\r\n sortDirection={ariaSortDirection}\r\n data-colindex={index}\r\n data-tableid={tableId}\r\n onMouseDown={closeTooltip}\r\n {...otherProps}>\r\n {options.sort && sort ? (\r\n \r\n (dragging ? setSortTooltipOpen(false) : setSortTooltipOpen(true))}\r\n onClose={() => setSortTooltipOpen(false)}\r\n classes={{\r\n tooltip: classes.tooltip,\r\n popper: classes.mypopper,\r\n }}>\r\n \r\n
\r\n \r\n {children}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n {hint && (\r\n \r\n \r\n \r\n )}\r\n \r\n ) : (\r\n
\r\n {children}\r\n {hint && (\r\n showHintTooltip()}\r\n onClose={() => setHintTooltipOpen(false)}\r\n classes={{\r\n tooltip: classes.tooltip,\r\n popper: classes.mypopper,\r\n }}\r\n enterDelay={300}>\r\n \r\n \r\n )}\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nTableHeadCell.propTypes = {\r\n /** Options used to describe table */\r\n options: PropTypes.object.isRequired,\r\n /** Current sort direction */\r\n sortDirection: PropTypes.oneOf(['asc', 'desc', 'none']),\r\n /** Callback to trigger column sort */\r\n toggleSort: PropTypes.func.isRequired,\r\n /** Sort enabled / disabled for this column **/\r\n sort: PropTypes.bool.isRequired,\r\n /** Hint tooltip text */\r\n hint: PropTypes.string,\r\n /** Column displayed in print */\r\n print: PropTypes.bool.isRequired,\r\n /** Optional to be used with `textLabels.body.columnHeaderTooltip` */\r\n column: PropTypes.object,\r\n /** Injectable component structure **/\r\n components: PropTypes.object,\r\n};\r\n\r\nexport default TableHeadCell;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport clsx from 'clsx';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles(\r\n () => ({\r\n root: {},\r\n }),\r\n { name: 'MUIDataTableHeadRow' },\r\n);\r\n\r\nconst TableHeadRow = ({ children }) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nTableHeadRow.propTypes = {\r\n children: PropTypes.node,\r\n};\r\n\r\nexport default TableHeadRow;\r\n","import { makeStyles } from '@material-ui/core/styles';\r\nimport { TableHead as MuiTableHead } from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, { useState } from 'react';\r\nimport TableHeadCell from './TableHeadCell';\r\nimport TableHeadRow from './TableHeadRow';\r\nimport TableSelectCell from './TableSelectCell';\r\n\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n main: {},\r\n responsiveStacked: {\r\n [theme.breakpoints.down('sm')]: {\r\n display: 'none',\r\n },\r\n },\r\n responsiveStackedAlways: {\r\n display: 'none',\r\n },\r\n responsiveSimple: {\r\n [theme.breakpoints.down('xs')]: {\r\n display: 'none',\r\n },\r\n },\r\n }),\r\n { name: 'MUIDataTableHead' },\r\n);\r\n\r\nconst TableHead = ({\r\n columnOrder = null,\r\n columns,\r\n components = {},\r\n count,\r\n data,\r\n draggableHeadCellRefs,\r\n expandedRows,\r\n options,\r\n selectedRows,\r\n selectRowUpdate,\r\n setCellRef,\r\n sortOrder = {},\r\n tableRef,\r\n tableId,\r\n timers,\r\n toggleAllExpandableRows,\r\n toggleSort,\r\n updateColumnOrder,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n if (columnOrder === null) {\r\n columnOrder = columns ? columns.map((item, idx) => idx) : [];\r\n }\r\n\r\n const [dragging, setDragging] = useState(false);\r\n\r\n const handleToggleColumn = index => {\r\n toggleSort(index);\r\n };\r\n\r\n const handleRowSelect = () => {\r\n selectRowUpdate('head', null);\r\n };\r\n\r\n const numSelected = (selectedRows && selectedRows.data.length) || 0;\r\n let isIndeterminate = numSelected > 0 && numSelected < count;\r\n let isChecked = numSelected > 0 && numSelected >= count;\r\n\r\n // When the disableToolbarSelect option is true, there can be\r\n // selected items that aren't visible, so we need to be more\r\n // precise when determining if the head checkbox should be checked.\r\n if (\r\n options.disableToolbarSelect === true ||\r\n options.selectToolbarPlacement === 'none' ||\r\n options.selectToolbarPlacement === 'above'\r\n ) {\r\n if (isChecked) {\r\n for (let ii = 0; ii < data.length; ii++) {\r\n if (!selectedRows.lookup[data[ii].dataIndex]) {\r\n isChecked = false;\r\n isIndeterminate = true;\r\n break;\r\n }\r\n }\r\n } else {\r\n if (numSelected > count) {\r\n isIndeterminate = true;\r\n }\r\n }\r\n }\r\n\r\n let orderedColumns = columnOrder.map((colIndex, idx) => {\r\n return {\r\n column: columns[colIndex],\r\n index: colIndex,\r\n colPos: idx,\r\n };\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n {orderedColumns.map(\r\n ({ column, index, colPos }) =>\r\n column.display === 'true' &&\r\n (column.customHeadRender ? (\r\n column.customHeadRender({ index, ...column }, handleToggleColumn, sortOrder)\r\n ) : (\r\n \r\n {column.customHeadLabelRender\r\n ? column.customHeadLabelRender({ index, colPos, ...column })\r\n : column.label}\r\n \r\n )),\r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default TableHead;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nconst defaultResizeStyles = {\r\n root: {\r\n position: 'absolute',\r\n },\r\n resizer: {\r\n position: 'absolute',\r\n width: '1px',\r\n height: '100%',\r\n left: '100px',\r\n cursor: 'ew-resize',\r\n border: '0.1px solid rgba(224, 224, 224, 1)',\r\n },\r\n};\r\n\r\nfunction getParentOffsetLeft(tableEl) {\r\n let ii = 0,\r\n parentOffsetLeft = 0,\r\n offsetParent = tableEl.offsetParent;\r\n while (offsetParent) {\r\n parentOffsetLeft = parentOffsetLeft + (offsetParent.offsetLeft || 0) - (offsetParent.scrollLeft || 0);\r\n offsetParent = offsetParent.offsetParent;\r\n ii++;\r\n if (ii > 1000) break;\r\n }\r\n return parentOffsetLeft;\r\n}\r\n\r\nclass TableResize extends React.Component {\r\n static propTypes = {\r\n /** Extend the style applied to components */\r\n classes: PropTypes.object,\r\n };\r\n\r\n state = {\r\n resizeCoords: {},\r\n priorPosition: {},\r\n tableWidth: '100%',\r\n tableHeight: '100%',\r\n };\r\n\r\n handleResize = () => {\r\n if (window.innerWidth !== this.windowWidth) {\r\n this.windowWidth = window.innerWidth;\r\n this.setDividers();\r\n }\r\n };\r\n\r\n componentDidMount() {\r\n this.minWidths = [];\r\n this.windowWidth = null;\r\n this.props.setResizeable(this.setCellRefs);\r\n this.props.updateDividers(() => this.setState({ updateCoords: true }, () => this.updateWidths));\r\n window.addEventListener('resize', this.handleResize, false);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.handleResize, false);\r\n }\r\n\r\n setCellRefs = (cellsRef, tableRef) => {\r\n this.cellsRef = cellsRef;\r\n this.tableRef = tableRef;\r\n this.setDividers();\r\n };\r\n\r\n setDividers = () => {\r\n const tableEl = this.tableRef;\r\n const { width: tableWidth, height: tableHeight } = tableEl.getBoundingClientRect();\r\n const { resizeCoords } = this.state;\r\n\r\n for (let prop in resizeCoords) {\r\n delete resizeCoords[prop];\r\n }\r\n\r\n let parentOffsetLeft = getParentOffsetLeft(tableEl);\r\n let finalCells = Object.entries(this.cellsRef);\r\n\r\n finalCells.forEach(([key, item], idx) => {\r\n if (!item) return;\r\n let elRect = item.getBoundingClientRect();\r\n let left = elRect.left;\r\n left = (left || 0) - parentOffsetLeft;\r\n const elStyle = window.getComputedStyle(item, null);\r\n resizeCoords[key] = { left: left + item.offsetWidth };\r\n });\r\n this.setState({ tableWidth, tableHeight, resizeCoords }, this.updateWidths);\r\n };\r\n\r\n updateWidths = () => {\r\n let lastPosition = 0;\r\n const { resizeCoords, tableWidth } = this.state;\r\n\r\n Object.entries(resizeCoords).forEach(([key, item]) => {\r\n let newWidth = Number(((item.left - lastPosition) / tableWidth) * 100);\r\n\r\n /*\r\n Using .toFixed(2) causes the columns to jitter when resized. On all browsers I (patrojk) have tested,\r\n a width with a floating point decimal works fine. It's unclear to me why the numbers were being rouned.\r\n However, I'm putting in an undocumented escape hatch to use toFixed in case the change introduces a bug.\r\n The below code will be removed in a later release if no problems with non-rounded widths are reported.\r\n */\r\n if (typeof this.props.resizableColumns === 'object' && this.props.resizableColumns.roundWidthPercentages) {\r\n newWidth = newWidth.toFixed(2);\r\n }\r\n\r\n lastPosition = item.left;\r\n\r\n const thCell = this.cellsRef[key];\r\n if (thCell) thCell.style.width = newWidth + '%';\r\n });\r\n };\r\n\r\n onResizeStart = (id, e) => {\r\n const tableEl = this.tableRef;\r\n const originalWidth = tableEl.style.width;\r\n let lastColumn = 0;\r\n tableEl.style.width = '1px';\r\n\r\n let finalCells = Object.entries(this.cellsRef);\r\n finalCells.forEach(([key, item], idx) => {\r\n let elRect = item ? item.getBoundingClientRect() : { width: 0, left: 0 };\r\n this.minWidths[key] = elRect.width;\r\n lastColumn = Math.max(key, lastColumn);\r\n });\r\n tableEl.style.width = originalWidth;\r\n\r\n this.setState({ isResize: true, id, lastColumn });\r\n };\r\n\r\n onResizeMove = (id, e) => {\r\n const { isResize, resizeCoords, lastColumn } = this.state;\r\n\r\n const prevCol = id => {\r\n let nextId = id - 1;\r\n while (typeof resizeCoords[nextId] === 'undefined' && nextId >= 0) {\r\n nextId--;\r\n }\r\n return nextId;\r\n };\r\n const nextCol = id => {\r\n let nextId = id + 1;\r\n let tries = 0;\r\n while (typeof resizeCoords[nextId] === 'undefined' && tries < 20) {\r\n nextId++;\r\n tries++;\r\n }\r\n return nextId;\r\n };\r\n\r\n const fixedMinWidth1 = this.minWidths[id];\r\n const fixedMinWidth2 = this.minWidths[nextCol(parseInt(id, 10))] || this.minWidths[id];\r\n const idNumber = parseInt(id, 10);\r\n const finalCells = Object.entries(this.cellsRef);\r\n const tableEl = this.tableRef;\r\n const { width: tableWidth, height: tableHeight } = tableEl.getBoundingClientRect();\r\n const { selectableRows } = this.props.options;\r\n\r\n let parentOffsetLeft = getParentOffsetLeft(tableEl);\r\n\r\n const nextCoord = id => {\r\n let nextId = id + 1;\r\n let tries = 0;\r\n while (typeof resizeCoords[nextId] === 'undefined' && tries < 20) {\r\n nextId++;\r\n tries++;\r\n }\r\n return resizeCoords[nextId];\r\n };\r\n const prevCoord = id => {\r\n let nextId = id - 1;\r\n while (typeof resizeCoords[nextId] === 'undefined' && nextId >= 0) {\r\n nextId--;\r\n }\r\n return resizeCoords[nextId];\r\n };\r\n\r\n if (isResize) {\r\n let leftPos = e.clientX - parentOffsetLeft;\r\n\r\n const handleMoveRightmostBoundary = (leftPos, tableWidth, fixedMinWidth) => {\r\n if (leftPos > tableWidth - fixedMinWidth) {\r\n return tableWidth - fixedMinWidth;\r\n }\r\n return leftPos;\r\n };\r\n\r\n const handleMoveLeftmostBoundary = (leftPos, fixedMinWidth) => {\r\n if (leftPos < fixedMinWidth) {\r\n return fixedMinWidth;\r\n }\r\n return leftPos;\r\n };\r\n\r\n const handleMoveRight = (leftPos, resizeCoords, id, fixedMinWidth) => {\r\n if (typeof nextCoord(id) === 'undefined') return leftPos;\r\n if (leftPos > nextCoord(id).left - fixedMinWidth) {\r\n return nextCoord(id).left - fixedMinWidth;\r\n }\r\n return leftPos;\r\n };\r\n\r\n const handleMoveLeft = (leftPos, resizeCoords, id, fixedMinWidth) => {\r\n if (typeof prevCoord(id) === 'undefined') return leftPos;\r\n if (leftPos < prevCoord(id).left + fixedMinWidth) {\r\n return prevCoord(id).left + fixedMinWidth;\r\n }\r\n return leftPos;\r\n };\r\n\r\n const isFirstColumn = (selectableRows, id) => {\r\n let firstColumn = 1;\r\n while (!resizeCoords[firstColumn] && firstColumn < 20) {\r\n firstColumn++;\r\n }\r\n\r\n return (selectableRows !== 'none' && id === 0) || (selectableRows === 'none' && id === firstColumn);\r\n };\r\n\r\n const isLastColumn = (id, finalCells) => {\r\n return id === prevCol(lastColumn);\r\n };\r\n\r\n if (isFirstColumn(selectableRows, idNumber) && isLastColumn(idNumber, finalCells)) {\r\n leftPos = handleMoveLeftmostBoundary(leftPos, fixedMinWidth1);\r\n leftPos = handleMoveRightmostBoundary(leftPos, tableWidth, fixedMinWidth2);\r\n } else if (!isFirstColumn(selectableRows, idNumber) && isLastColumn(idNumber, finalCells)) {\r\n leftPos = handleMoveRightmostBoundary(leftPos, tableWidth, fixedMinWidth2);\r\n leftPos = handleMoveLeft(leftPos, resizeCoords, idNumber, fixedMinWidth1);\r\n } else if (isFirstColumn(selectableRows, idNumber) && !isLastColumn(idNumber, finalCells)) {\r\n leftPos = handleMoveLeftmostBoundary(leftPos, fixedMinWidth1);\r\n leftPos = handleMoveRight(leftPos, resizeCoords, idNumber, fixedMinWidth2);\r\n } else if (!isFirstColumn(selectableRows, idNumber) && !isLastColumn(idNumber, finalCells)) {\r\n leftPos = handleMoveLeft(leftPos, resizeCoords, idNumber, fixedMinWidth1);\r\n leftPos = handleMoveRight(leftPos, resizeCoords, idNumber, fixedMinWidth2);\r\n }\r\n\r\n const curCoord = { ...resizeCoords[id], left: leftPos };\r\n const newResizeCoords = { ...resizeCoords, [id]: curCoord };\r\n this.setState({ resizeCoords: newResizeCoords, tableHeight }, this.updateWidths);\r\n }\r\n };\r\n\r\n onResizeEnd = (id, e) => {\r\n this.setState({ isResize: false, id: null });\r\n };\r\n\r\n render() {\r\n const { classes, tableId } = this.props;\r\n const { id, isResize, resizeCoords, tableWidth, tableHeight } = this.state;\r\n\r\n return (\r\n
\r\n {Object.entries(resizeCoords).map(([key, val]) => {\r\n return (\r\n \r\n \r\n
\r\n );\r\n })}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(defaultResizeStyles, { name: 'MUIDataTableResize' })(TableResize);\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport MuiPopover from '@material-ui/core/Popover';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nconst Popover = ({ className, trigger, refExit, hide, content, ...providedProps }) => {\r\n const [isOpen, open] = useState(false);\r\n const anchorEl = useRef(null);\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n const shouldHide = typeof hide === 'boolean' ? hide : false;\r\n if (shouldHide) {\r\n open(false);\r\n }\r\n }\r\n }, [hide, isOpen, open]);\r\n\r\n const handleClick = event => {\r\n anchorEl.current = event.currentTarget;\r\n open(true);\r\n };\r\n\r\n const handleRequestClose = () => {\r\n open(false);\r\n };\r\n\r\n const closeIconClass = providedProps.classes.closeIcon;\r\n delete providedProps.classes.closeIcon; // remove non-standard class from being passed to the popover component\r\n\r\n const transformOriginSpecs = {\r\n vertical: 'top',\r\n horizontal: 'center',\r\n };\r\n\r\n const anchorOriginSpecs = {\r\n vertical: 'bottom',\r\n horizontal: 'center',\r\n };\r\n\r\n const handleOnExit = () => {\r\n if (refExit) {\r\n refExit();\r\n }\r\n };\r\n\r\n const triggerProps = {\r\n key: 'content',\r\n onClick: event => {\r\n if (trigger.props.onClick) trigger.props.onClick();\r\n handleClick(event);\r\n },\r\n };\r\n\r\n return (\r\n <>\r\n {trigger}\r\n \r\n \r\n \r\n \r\n {content}\r\n \r\n \r\n );\r\n};\r\n\r\nPopover.propTypes = {\r\n refExit: PropTypes.func,\r\n trigger: PropTypes.node.isRequired,\r\n content: PropTypes.node.isRequired,\r\n hide: PropTypes.bool,\r\n};\r\n\r\nexport default Popover;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n root: {\r\n padding: '16px 24px 16px 24px',\r\n fontFamily: 'Roboto',\r\n },\r\n title: {\r\n marginLeft: '-7px',\r\n marginRight: '24px',\r\n fontSize: '14px',\r\n color: theme.palette.text.secondary,\r\n textAlign: 'left',\r\n fontWeight: 500,\r\n },\r\n formGroup: {\r\n marginTop: '8px',\r\n },\r\n formControl: {},\r\n checkbox: {\r\n padding: '0px',\r\n width: '32px',\r\n height: '32px',\r\n },\r\n checkboxRoot: {},\r\n checked: {},\r\n label: {\r\n fontSize: '15px',\r\n marginLeft: '8px',\r\n color: theme.palette.text.primary,\r\n },\r\n }),\r\n { name: 'MUIDataTableViewCol' },\r\n);\r\n\r\nconst TableViewCol = ({ columns, options, components = {}, onColumnUpdate, updateColumns }) => {\r\n const classes = useStyles();\r\n const textLabels = options.textLabels.viewColumns;\r\n const CheckboxComponent = components.Checkbox || Checkbox;\r\n\r\n const handleColChange = index => {\r\n onColumnUpdate(index);\r\n };\r\n\r\n return (\r\n \r\n \r\n {textLabels.title}\r\n \r\n \r\n {columns.map((column, index) => {\r\n return (\r\n column.display !== 'excluded' &&\r\n column.viewColumns !== false && (\r\n handleColChange(index)}\r\n checked={column.display === 'true'}\r\n value={column.name}\r\n />\r\n }\r\n label={column.label}\r\n />\r\n )\r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nTableViewCol.propTypes = {\r\n /** Columns used to describe table */\r\n columns: PropTypes.array.isRequired,\r\n /** Options used to describe table */\r\n options: PropTypes.object.isRequired,\r\n /** Callback to trigger View column update */\r\n onColumnUpdate: PropTypes.func,\r\n /** Extend the style applied to components */\r\n classes: PropTypes.object,\r\n};\r\n\r\nexport default TableViewCol;\r\n","import React from 'react';\r\nimport Grow from '@material-ui/core/Grow';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport ClearIcon from '@material-ui/icons/Clear';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n main: {\r\n display: 'flex',\r\n flex: '1 0 auto',\r\n },\r\n searchIcon: {\r\n color: theme.palette.text.secondary,\r\n marginTop: '10px',\r\n marginRight: '8px',\r\n },\r\n searchText: {\r\n flex: '0.8 0',\r\n },\r\n clearIcon: {\r\n '&:hover': {\r\n color: theme.palette.error.main,\r\n },\r\n },\r\n }),\r\n { name: 'MUIDataTableSearch' },\r\n);\r\n\r\nconst TableSearch = ({ options, searchText, onSearch, onHide }) => {\r\n const classes = useStyles();\r\n\r\n const handleTextChange = event => {\r\n onSearch(event.target.value);\r\n };\r\n\r\n const onKeyDown = event => {\r\n if (event.key === 'Escape') {\r\n onHide();\r\n }\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default TableSearch;\r\n","import React from 'react';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Popover from './Popover';\r\nimport TableFilter from './TableFilter';\r\nimport TableViewCol from './TableViewCol';\r\nimport TableSearch from './TableSearch';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport DownloadIcon from '@material-ui/icons/CloudDownload';\r\nimport PrintIcon from '@material-ui/icons/Print';\r\nimport ViewColumnIcon from '@material-ui/icons/ViewColumn';\r\nimport FilterIcon from '@material-ui/icons/FilterList';\r\nimport ReactToPrint, { PrintContextConsumer } from 'react-to-print';\r\nimport find from 'lodash.find';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { createCSVDownload, downloadCSV } from '../utils';\r\nimport MuiTooltip from '@material-ui/core/Tooltip';\r\n\r\nexport const defaultToolbarStyles = theme => ({\r\n root: {\r\n '@media print': {\r\n display: 'none',\r\n },\r\n },\r\n fullWidthRoot: {},\r\n left: {\r\n flex: '1 1 auto',\r\n },\r\n fullWidthLeft: {\r\n flex: '1 1 auto',\r\n },\r\n actions: {\r\n flex: '1 1 auto',\r\n textAlign: 'right',\r\n },\r\n fullWidthActions: {\r\n flex: '1 1 auto',\r\n textAlign: 'right',\r\n },\r\n titleRoot: {},\r\n titleText: {},\r\n fullWidthTitleText: {\r\n textAlign: 'left',\r\n },\r\n icon: {\r\n '&:hover': {\r\n color: theme.palette.primary.main,\r\n },\r\n },\r\n iconActive: {\r\n color: theme.palette.primary.main,\r\n },\r\n filterPaper: {\r\n maxWidth: '50%',\r\n },\r\n filterCloseIcon: {\r\n position: 'absolute',\r\n right: 0,\r\n top: 0,\r\n zIndex: 100,\r\n },\r\n searchIcon: {\r\n display: 'inline-flex',\r\n marginTop: '10px',\r\n marginRight: '8px',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n titleRoot: {},\r\n titleText: {\r\n fontSize: '16px',\r\n },\r\n spacer: {\r\n display: 'none',\r\n },\r\n left: {\r\n // flex: \"1 1 40%\",\r\n padding: '8px 0px',\r\n },\r\n actions: {\r\n // flex: \"1 1 60%\",\r\n textAlign: 'right',\r\n },\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n root: {\r\n display: 'block',\r\n '@media print': {\r\n display: 'none !important',\r\n },\r\n },\r\n left: {\r\n padding: '8px 0px 0px 0px',\r\n },\r\n titleText: {\r\n textAlign: 'center',\r\n },\r\n actions: {\r\n textAlign: 'center',\r\n },\r\n },\r\n '@media screen and (max-width: 480px)': {},\r\n});\r\n\r\nconst RESPONSIVE_FULL_WIDTH_NAME = 'scrollFullHeightFullWidth';\r\n\r\nclass TableToolbar extends React.Component {\r\n state = {\r\n iconActive: null,\r\n showSearch: Boolean(this.props.searchText || this.props.options.searchText || this.props.options.searchOpen),\r\n searchText: this.props.searchText || null,\r\n };\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.searchText !== prevProps.searchText) {\r\n this.setState({ searchText: this.props.searchText });\r\n }\r\n }\r\n\r\n handleCSVDownload = () => {\r\n const { data, displayData, columns, options, columnOrder } = this.props;\r\n let dataToDownload = []; //cloneDeep(data);\r\n let columnsToDownload = [];\r\n let columnOrderCopy = Array.isArray(columnOrder) ? columnOrder.slice(0) : [];\r\n\r\n if (columnOrderCopy.length === 0) {\r\n columnOrderCopy = columns.map((item, idx) => idx);\r\n }\r\n\r\n data.forEach(row => {\r\n let newRow = { index: row.index, data: [] };\r\n columnOrderCopy.forEach(idx => {\r\n newRow.data.push(row.data[idx]);\r\n });\r\n dataToDownload.push(newRow);\r\n });\r\n\r\n columnOrderCopy.forEach(idx => {\r\n columnsToDownload.push(columns[idx]);\r\n });\r\n\r\n if (options.downloadOptions && options.downloadOptions.filterOptions) {\r\n // check rows first:\r\n if (options.downloadOptions.filterOptions.useDisplayedRowsOnly) {\r\n let filteredDataToDownload = displayData.map((row, index) => {\r\n let i = -1;\r\n\r\n // Help to preserve sort order in custom render columns\r\n row.index = index;\r\n\r\n return {\r\n data: row.data.map(column => {\r\n i += 1;\r\n\r\n // if we have a custom render, which will appear as a react element, we must grab the actual value from data\r\n // that matches the dataIndex and column\r\n // TODO: Create a utility function for checking whether or not something is a react object\r\n let val =\r\n typeof column === 'object' && column !== null && !Array.isArray(column)\r\n ? find(data, d => d.index === row.dataIndex).data[i]\r\n : column;\r\n val = typeof val === 'function' ? find(data, d => d.index === row.dataIndex).data[i] : val;\r\n return val;\r\n }),\r\n };\r\n });\r\n\r\n dataToDownload = [];\r\n filteredDataToDownload.forEach(row => {\r\n let newRow = { index: row.index, data: [] };\r\n columnOrderCopy.forEach(idx => {\r\n newRow.data.push(row.data[idx]);\r\n });\r\n dataToDownload.push(newRow);\r\n });\r\n }\r\n\r\n // now, check columns:\r\n if (options.downloadOptions.filterOptions.useDisplayedColumnsOnly) {\r\n columnsToDownload = columnsToDownload.filter(_ => _.display === 'true');\r\n\r\n dataToDownload = dataToDownload.map(row => {\r\n row.data = row.data.filter((_, index) => columns[columnOrderCopy[index]].display === 'true');\r\n return row;\r\n });\r\n }\r\n }\r\n createCSVDownload(columnsToDownload, dataToDownload, options, downloadCSV);\r\n };\r\n\r\n setActiveIcon = iconName => {\r\n this.setState(\r\n prevState => ({\r\n showSearch: this.isSearchShown(iconName),\r\n iconActive: iconName,\r\n prevIconActive: prevState.iconActive,\r\n }),\r\n () => {\r\n const { iconActive, prevIconActive } = this.state;\r\n\r\n if (iconActive === 'filter') {\r\n this.props.setTableAction('onFilterDialogOpen');\r\n if (this.props.options.onFilterDialogOpen) {\r\n this.props.options.onFilterDialogOpen();\r\n }\r\n }\r\n if (iconActive === undefined && prevIconActive === 'filter') {\r\n this.props.setTableAction('onFilterDialogClose');\r\n if (this.props.options.onFilterDialogClose) {\r\n this.props.options.onFilterDialogClose();\r\n }\r\n }\r\n },\r\n );\r\n };\r\n\r\n isSearchShown = iconName => {\r\n let nextVal = false;\r\n if (this.state.showSearch) {\r\n if (this.state.searchText) {\r\n nextVal = true;\r\n } else {\r\n const { onSearchClose } = this.props.options;\r\n this.props.setTableAction('onSearchClose');\r\n if (onSearchClose) onSearchClose();\r\n nextVal = false;\r\n }\r\n } else if (iconName === 'search') {\r\n nextVal = this.showSearch();\r\n }\r\n return nextVal;\r\n };\r\n\r\n getActiveIcon = (styles, iconName) => {\r\n let isActive = this.state.iconActive === iconName;\r\n if (iconName === 'search') {\r\n const { showSearch, searchText } = this.state;\r\n isActive = isActive || showSearch || searchText;\r\n }\r\n return isActive ? styles.iconActive : styles.icon;\r\n };\r\n\r\n showSearch = () => {\r\n this.props.setTableAction('onSearchOpen');\r\n !!this.props.options.onSearchOpen && this.props.options.onSearchOpen();\r\n return true;\r\n };\r\n\r\n hideSearch = () => {\r\n const { onSearchClose } = this.props.options;\r\n\r\n this.props.setTableAction('onSearchClose');\r\n if (onSearchClose) onSearchClose();\r\n this.props.searchClose();\r\n\r\n this.setState(() => ({\r\n iconActive: null,\r\n showSearch: false,\r\n searchText: null,\r\n }));\r\n };\r\n\r\n handleSearch = value => {\r\n this.setState({ searchText: value });\r\n this.props.searchTextUpdate(value);\r\n };\r\n\r\n handleSearchIconClick = () => {\r\n const { showSearch, searchText } = this.state;\r\n if (showSearch && !searchText) {\r\n this.hideSearch();\r\n } else {\r\n this.setActiveIcon('search');\r\n }\r\n };\r\n\r\n render() {\r\n const {\r\n data,\r\n options,\r\n classes,\r\n columns,\r\n filterData,\r\n filterList,\r\n filterUpdate,\r\n resetFilters,\r\n toggleViewColumn,\r\n updateColumns,\r\n title,\r\n components = {},\r\n updateFilterByType,\r\n } = this.props;\r\n const { icons = {} } = components;\r\n\r\n const Tooltip = components.Tooltip || MuiTooltip;\r\n const TableViewColComponent = components.TableViewCol || TableViewCol;\r\n const TableFilterComponent = components.TableFilter || TableFilter;\r\n const SearchIconComponent = icons.SearchIcon || SearchIcon;\r\n const DownloadIconComponent = icons.DownloadIcon || DownloadIcon;\r\n const PrintIconComponent = icons.PrintIcon || PrintIcon;\r\n const ViewColumnIconComponent = icons.ViewColumnIcon || ViewColumnIcon;\r\n const FilterIconComponent = icons.FilterIcon || FilterIcon;\r\n const { search, downloadCsv, print, viewColumns, filterTable } = options.textLabels.toolbar;\r\n const { showSearch, searchText } = this.state;\r\n\r\n const filterPopoverExit = () => {\r\n this.setState({ hideFilterPopover: false });\r\n this.setActiveIcon();\r\n };\r\n\r\n const closeFilterPopover = () => {\r\n this.setState({ hideFilterPopover: true });\r\n };\r\n\r\n return (\r\n \r\n
\r\n {showSearch === true ? (\r\n options.customSearchRender ? (\r\n options.customSearchRender(searchText, this.handleSearch, this.hideSearch, options)\r\n ) : (\r\n \r\n )\r\n ) : typeof title !== 'string' ? (\r\n title\r\n ) : (\r\n
\r\n \r\n {title}\r\n \r\n
\r\n )}\r\n
\r\n
\r\n {!(options.search === false || options.search === 'false') && (\r\n \r\n (this.searchButton = el)}\r\n classes={{ root: this.getActiveIcon(classes, 'search') }}\r\n disabled={options.search === 'disabled'}\r\n onClick={this.handleSearchIconClick}>\r\n \r\n \r\n \r\n )}\r\n {!(options.download === false || options.download === 'false') && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {!(options.print === false || options.print === 'false') && (\r\n \r\n this.props.tableRef()}>\r\n \r\n {({ handlePrint }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n )}\r\n {!(options.viewColumns === false || options.viewColumns === 'false') && (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n content={\r\n \r\n }\r\n />\r\n )}\r\n {!(options.filter === false || options.filter === 'false') && (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n content={\r\n \r\n }\r\n />\r\n )}\r\n {options.customToolbar && options.customToolbar({ displayData: this.props.displayData })}\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(defaultToolbarStyles, { name: 'MUIDataTableToolbar' })(TableToolbar);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport MuiTooltip from '@material-ui/core/Tooltip';\r\n\r\nconst defaultToolbarSelectStyles = theme => ({\r\n root: {\r\n backgroundColor: theme.palette.background.default,\r\n flex: '1 1 100%',\r\n display: 'flex',\r\n position: 'relative',\r\n zIndex: 120,\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n paddingTop: typeof theme.spacing === 'function' ? theme.spacing(1) : theme.spacing.unit,\r\n paddingBottom: typeof theme.spacing === 'function' ? theme.spacing(1) : theme.spacing.unit,\r\n '@media print': {\r\n display: 'none',\r\n },\r\n },\r\n title: {\r\n paddingLeft: '26px',\r\n },\r\n iconButton: {\r\n marginRight: '24px',\r\n },\r\n deleteIcon: {},\r\n});\r\n\r\nclass TableToolbarSelect extends React.Component {\r\n static propTypes = {\r\n /** Options used to describe table */\r\n options: PropTypes.object.isRequired,\r\n /** Current row selected or not */\r\n rowSelected: PropTypes.bool,\r\n /** Callback to trigger selected rows delete */\r\n onRowsDelete: PropTypes.func,\r\n /** Extend the style applied to components */\r\n classes: PropTypes.object,\r\n };\r\n\r\n /**\r\n * @param {number[]} selectedRows Array of rows indexes that are selected, e.g. [0, 2] will select first and third rows in table\r\n */\r\n handleCustomSelectedRows = selectedRows => {\r\n if (!Array.isArray(selectedRows)) {\r\n throw new TypeError(`\"selectedRows\" must be an \"array\", but it's \"${typeof selectedRows}\"`);\r\n }\r\n\r\n if (selectedRows.some(row => typeof row !== 'number')) {\r\n throw new TypeError(`Array \"selectedRows\" must contain only numbers`);\r\n }\r\n\r\n const { options } = this.props;\r\n if (selectedRows.length > 1 && options.selectableRows === 'single') {\r\n throw new Error('Can not select more than one row when \"selectableRows\" is \"single\"');\r\n }\r\n this.props.selectRowUpdate('custom', selectedRows);\r\n };\r\n\r\n render() {\r\n const { classes, onRowsDelete, selectedRows, options, displayData, components = {} } = this.props;\r\n const textLabels = options.textLabels.selectedRows;\r\n const Tooltip = components.Tooltip || MuiTooltip;\r\n\r\n return (\r\n \r\n
\r\n \r\n {selectedRows.data.length} {textLabels.text}\r\n \r\n
\r\n {options.customToolbarSelect ? (\r\n options.customToolbarSelect(selectedRows, displayData, this.handleCustomSelectedRows)\r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(defaultToolbarSelectStyles, { name: 'MUIDataTableToolbarSelect' })(TableToolbarSelect);\r\n","/*\r\n * Default text labels.\r\n */\r\nconst getTextLabels = () => ({\r\n body: {\r\n noMatch: 'Sorry, no matching records found',\r\n toolTip: 'Sort',\r\n },\r\n pagination: {\r\n next: 'Next Page',\r\n previous: 'Previous Page',\r\n rowsPerPage: 'Rows per page:',\r\n displayRows: 'of',\r\n jumpToPage: 'Jump to Page:',\r\n },\r\n toolbar: {\r\n search: 'Search',\r\n downloadCsv: 'Download CSV',\r\n print: 'Print',\r\n viewColumns: 'View Columns',\r\n filterTable: 'Filter Table',\r\n },\r\n filter: {\r\n all: 'All',\r\n title: 'FILTERS',\r\n reset: 'RESET',\r\n },\r\n viewColumns: {\r\n title: 'Show Columns',\r\n titleAria: 'Show/Hide Table Columns',\r\n },\r\n selectedRows: {\r\n text: 'row(s) selected',\r\n delete: 'Delete',\r\n deleteAria: 'Delete Selected Rows',\r\n },\r\n});\r\n\r\nexport default getTextLabels;\r\n","import Paper from '@material-ui/core/Paper';\r\nimport MuiTable from '@material-ui/core/Table';\r\nimport MuiTooltip from '@material-ui/core/Tooltip';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport clsx from 'clsx';\r\nimport assignwith from 'lodash.assignwith';\r\nimport cloneDeep from 'lodash.clonedeep';\r\nimport find from 'lodash.find';\r\nimport isEqual from 'lodash.isequal';\r\nimport isUndefined from 'lodash.isundefined';\r\nimport merge from 'lodash.merge';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport DefaultTableBody from './components/TableBody';\r\nimport DefaultTableFilter from './components/TableFilter';\r\nimport DefaultTableFilterList from './components/TableFilterList';\r\nimport DefaultTableFooter from './components/TableFooter';\r\nimport DefaultTableHead from './components/TableHead';\r\nimport DefaultTableResize from './components/TableResize';\r\nimport DefaultTableToolbar from './components/TableToolbar';\r\nimport DefaultTableToolbarSelect from './components/TableToolbarSelect';\r\nimport getTextLabels from './textLabels';\r\nimport { buildMap, getCollatorComparator, getPageValue, sortCompare, warnDeprecated, warnInfo } from './utils';\r\nimport { DndProvider } from 'react-dnd';\r\nimport { HTML5Backend } from 'react-dnd-html5-backend';\r\n\r\nconst defaultTableStyles = theme => ({\r\n root: {},\r\n paper: {},\r\n paperResponsiveScrollFullHeightFullWidth: {\r\n position: 'absolute',\r\n },\r\n tableRoot: {\r\n outline: 'none',\r\n },\r\n responsiveBase: {\r\n overflow: 'auto',\r\n '@media print': {\r\n height: 'auto !important',\r\n },\r\n },\r\n\r\n // deprecated, but continuing support through v3.x\r\n responsiveScroll: {\r\n overflow: 'auto',\r\n height: '100%',\r\n },\r\n // deprecated, but continuing support through v3.x\r\n responsiveScrollMaxHeight: {\r\n overflow: 'auto',\r\n height: '100%',\r\n },\r\n // deprecated, but continuing support through v3.x\r\n responsiveScrollFullHeight: {\r\n height: '100%',\r\n },\r\n // deprecated, but continuing support through v3.x\r\n responsiveStacked: {\r\n overflow: 'auto',\r\n [theme.breakpoints.down('sm')]: {\r\n overflow: 'hidden',\r\n },\r\n },\r\n // deprecated, but continuing support through v3.x\r\n responsiveStackedFullWidth: {},\r\n caption: {\r\n position: 'absolute',\r\n left: '-3000px',\r\n },\r\n\r\n liveAnnounce: {\r\n border: '0',\r\n clip: 'rect(0 0 0 0)',\r\n height: '1px',\r\n margin: '-1px',\r\n overflow: 'hidden',\r\n padding: '0',\r\n position: 'absolute',\r\n width: '1px',\r\n },\r\n '@global': {\r\n '@media print': {\r\n '.datatables-noprint': {\r\n display: 'none',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst TABLE_LOAD = {\r\n INITIAL: 1,\r\n UPDATE: 2,\r\n};\r\n\r\n// Populate this list with anything that might render in the toolbar to determine if we hide the toolbar\r\nconst TOOLBAR_ITEMS = ['title', 'filter', 'search', 'print', 'download', 'viewColumns', 'customToolbar'];\r\n\r\nconst hasToolbarItem = (options, title) => {\r\n options.title = title;\r\n\r\n return !isUndefined(find(TOOLBAR_ITEMS, i => options[i]));\r\n};\r\n\r\n// Select Toolbar Placement options\r\nconst STP = {\r\n REPLACE: 'replace',\r\n ABOVE: 'above',\r\n NONE: 'none',\r\n};\r\n\r\nclass MUIDataTable extends React.Component {\r\n static propTypes = {\r\n /** Title of the table */\r\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,\r\n /** Data used to describe table */\r\n data: PropTypes.array.isRequired,\r\n /** Columns used to describe table */\r\n columns: PropTypes.PropTypes.arrayOf(\r\n PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.shape({\r\n label: PropTypes.string,\r\n name: PropTypes.string.isRequired,\r\n options: PropTypes.shape({\r\n display: PropTypes.oneOf(['true', 'false', 'excluded', 'always', true, false]),\r\n empty: PropTypes.bool,\r\n filter: PropTypes.bool,\r\n sort: PropTypes.bool,\r\n print: PropTypes.bool,\r\n searchable: PropTypes.bool,\r\n download: PropTypes.bool,\r\n viewColumns: PropTypes.bool,\r\n filterList: PropTypes.array,\r\n filterOptions: PropTypes.oneOfType([\r\n PropTypes.array,\r\n PropTypes.shape({\r\n names: PropTypes.array,\r\n logic: PropTypes.func,\r\n display: PropTypes.func,\r\n }),\r\n ]),\r\n filterType: PropTypes.oneOf(['dropdown', 'checkbox', 'multiselect', 'textField', 'custom']),\r\n customHeadRender: PropTypes.func,\r\n customBodyRender: PropTypes.func,\r\n customBodyRenderLite: PropTypes.func,\r\n customHeadLabelRender: PropTypes.func,\r\n customFilterListOptions: PropTypes.oneOfType([\r\n PropTypes.shape({\r\n render: PropTypes.func,\r\n update: PropTypes.func,\r\n }),\r\n ]),\r\n customFilterListRender: PropTypes.func,\r\n setCellProps: PropTypes.func,\r\n setCellHeaderProps: PropTypes.func,\r\n sortThirdClickReset: PropTypes.bool,\r\n sortDescFirst: PropTypes.bool,\r\n }),\r\n }),\r\n ]),\r\n ).isRequired,\r\n /** Options used to describe table */\r\n options: PropTypes.shape({\r\n caseSensitive: PropTypes.bool,\r\n columnOrder: PropTypes.array,\r\n count: PropTypes.number,\r\n confirmFilters: PropTypes.bool,\r\n consoleWarnings: PropTypes.bool,\r\n customFilterDialogFooter: PropTypes.func,\r\n customFooter: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\r\n customRowRender: PropTypes.func,\r\n customSearch: PropTypes.func,\r\n customSearchRender: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\r\n customSort: PropTypes.func,\r\n customToolbar: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\r\n customToolbarSelect: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\r\n draggableColumns: PropTypes.object,\r\n enableNestedDataAccess: PropTypes.string,\r\n expandableRows: PropTypes.bool,\r\n expandableRowsHeader: PropTypes.bool,\r\n expandableRowsOnClick: PropTypes.bool,\r\n disableToolbarSelect: PropTypes.bool,\r\n download: PropTypes.oneOf([true, false, 'true', 'false', 'disabled']),\r\n downloadOptions: PropTypes.shape({\r\n filename: PropTypes.string,\r\n separator: PropTypes.string,\r\n filterOptions: PropTypes.shape({\r\n useDisplayedColumnsOnly: PropTypes.bool,\r\n useDisplayedRowsOnly: PropTypes.bool,\r\n }),\r\n }),\r\n filter: PropTypes.oneOf([true, false, 'true', 'false', 'disabled']),\r\n filterArrayFullMatch: PropTypes.bool,\r\n filterType: PropTypes.oneOf(['dropdown', 'checkbox', 'multiselect', 'textField', 'custom']),\r\n fixedHeader: PropTypes.bool,\r\n fixedSelectColumn: PropTypes.bool,\r\n getTextLabels: PropTypes.func,\r\n isRowExpandable: PropTypes.func,\r\n isRowSelectable: PropTypes.func,\r\n jumpToPage: PropTypes.bool,\r\n onDownload: PropTypes.func,\r\n onFilterChange: PropTypes.func,\r\n onFilterChipClose: PropTypes.func,\r\n onFilterConfirm: PropTypes.func,\r\n onFilterDialogOpen: PropTypes.func,\r\n onFilterDialogClose: PropTypes.func,\r\n onRowClick: PropTypes.func,\r\n onRowsExpand: PropTypes.func,\r\n onRowExpansionChange: PropTypes.func,\r\n onRowsSelect: PropTypes.func,\r\n onRowSelectionChange: PropTypes.func,\r\n onTableChange: PropTypes.func,\r\n onTableInit: PropTypes.func,\r\n page: PropTypes.number,\r\n pagination: PropTypes.bool,\r\n print: PropTypes.oneOf([true, false, 'true', 'false', 'disabled']),\r\n searchProps: PropTypes.object,\r\n selectableRows: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['none', 'single', 'multiple'])]),\r\n selectableRowsHeader: PropTypes.bool,\r\n selectableRowsHideCheckboxes: PropTypes.bool,\r\n selectableRowsOnClick: PropTypes.bool,\r\n serverSide: PropTypes.bool,\r\n tableId: PropTypes.string,\r\n tableBodyHeight: PropTypes.string,\r\n tableBodyMaxHeight: PropTypes.string,\r\n renderExpandableRow: PropTypes.func,\r\n resizableColumns: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\r\n responsive: PropTypes.oneOf(['standard', 'vertical', 'verticalAlways', 'simple']),\r\n rowHover: PropTypes.bool,\r\n rowsExpanded: PropTypes.array,\r\n rowsPerPage: PropTypes.number,\r\n rowsPerPageOptions: PropTypes.array,\r\n rowsSelected: PropTypes.array,\r\n search: PropTypes.oneOf([true, false, 'true', 'false', 'disabled']),\r\n searchOpen: PropTypes.bool,\r\n searchPlaceholder: PropTypes.string,\r\n searchText: PropTypes.string,\r\n setFilterChipProps: PropTypes.func,\r\n setRowProps: PropTypes.func,\r\n selectToolbarPlacement: PropTypes.oneOfType([\r\n PropTypes.bool,\r\n PropTypes.oneOf([STP.REPLACE, STP.ABOVE, STP.NONE]),\r\n ]),\r\n setTableProps: PropTypes.func,\r\n sort: PropTypes.bool,\r\n sortOrder: PropTypes.object,\r\n viewColumns: PropTypes.oneOf([true, false, 'true', 'false', 'disabled']),\r\n }),\r\n /** Pass and use className to style MUIDataTable as desired */\r\n className: PropTypes.string,\r\n components: PropTypes.objectOf(PropTypes.any),\r\n };\r\n\r\n static defaultProps = {\r\n title: '',\r\n options: {},\r\n data: [],\r\n columns: [],\r\n components: {\r\n TableBody: DefaultTableBody,\r\n TableFilter: DefaultTableFilter,\r\n TableFilterList: DefaultTableFilterList,\r\n TableFooter: DefaultTableFooter,\r\n TableHead: DefaultTableHead,\r\n TableResize: DefaultTableResize,\r\n TableToolbar: DefaultTableToolbar,\r\n TableToolbarSelect: DefaultTableToolbarSelect,\r\n Tooltip: MuiTooltip,\r\n icons: {},\r\n },\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n this.tableContent = React.createRef();\r\n this.draggableHeadCellRefs = {};\r\n this.resizeHeadCellRefs = {};\r\n this.timers = {};\r\n this.setHeadResizeable = () => {};\r\n this.updateDividers = () => {};\r\n\r\n let defaultState = {\r\n activeColumn: null,\r\n announceText: null,\r\n count: 0,\r\n columns: [],\r\n expandedRows: {\r\n data: [],\r\n lookup: {},\r\n },\r\n data: [],\r\n displayData: [],\r\n filterData: [],\r\n filterList: [],\r\n page: 0,\r\n previousSelectedRow: null,\r\n rowsPerPage: 10,\r\n searchProps: {},\r\n searchText: null,\r\n selectedRows: {\r\n data: [],\r\n lookup: {},\r\n },\r\n showResponsive: false,\r\n sortOrder: {},\r\n };\r\n\r\n this.mergeDefaultOptions(props);\r\n this.state = Object.assign(defaultState, this.getInitTableOptions());\r\n this.setTableData = this.setTableData.bind(this);\r\n\r\n this.setTableData(props, TABLE_LOAD.INITIAL, true, null, true);\r\n }\r\n\r\n componentDidMount() {\r\n this.setHeadResizeable(this.resizeHeadCellRefs, this.tableRef);\r\n\r\n // When we have a search, we must reset page to view it unless on serverSide since paging is handled by the user.\r\n if (this.props.options.searchText && !this.props.options.serverSide) this.setState({ page: 0 });\r\n\r\n this.setTableInit('tableInitialized');\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (\r\n this.props.data !== prevProps.data ||\r\n this.props.columns !== prevProps.columns ||\r\n this.props.options !== prevProps.options\r\n ) {\r\n this.updateOptions(this.options, this.props);\r\n\r\n var didDataUpdate = this.props.data !== prevProps.data;\r\n if (this.props.data && prevProps.data) {\r\n didDataUpdate = didDataUpdate && this.props.data.length === prevProps.data.length;\r\n }\r\n\r\n this.setTableData(this.props, TABLE_LOAD.INITIAL, didDataUpdate, () => {\r\n this.setTableAction('propsUpdate');\r\n });\r\n }\r\n\r\n if (this.props.options.searchText !== prevProps.options.searchText && !this.props.options.serverSide) {\r\n // When we have a search, we must reset page to view it unless on serverSide since paging is handled by the user.\r\n this.setState({ page: 0 });\r\n }\r\n\r\n if (\r\n this.options.resizableColumns === true ||\r\n (this.options.resizableColumns && this.options.resizableColumns.enabled)\r\n ) {\r\n this.setHeadResizeable(this.resizeHeadCellRefs, this.tableRef);\r\n this.updateDividers();\r\n }\r\n }\r\n\r\n updateOptions(options, props) {\r\n // set backwards compatibility options\r\n if (props.options.disableToolbarSelect === true && props.options.selectToolbarPlacement === undefined) {\r\n // if deprecated option disableToolbarSelect is set and selectToolbarPlacement is default then use it\r\n props.options.selectToolbarPlacement = STP.NONE;\r\n }\r\n\r\n // provide default tableId when draggableColumns is enabled and no tableId has been passed as prop\r\n if (props.options.draggableColumns && props.options.draggableColumns.enabled === true && !props.options.tableId) {\r\n props.options.tableId = (Math.random() + '').replace(/\\./, '');\r\n }\r\n\r\n this.options = assignwith(options, props.options, (objValue, srcValue, key) => {\r\n // Merge any default options that are objects, as they will be overwritten otherwise\r\n if (key === 'textLabels' || key === 'downloadOptions') return merge(objValue, srcValue);\r\n return;\r\n });\r\n\r\n this.handleOptionDeprecation(props);\r\n }\r\n\r\n getDefaultOptions = () => ({\r\n caseSensitive: false,\r\n consoleWarnings: true,\r\n disableToolbarSelect: false,\r\n download: true,\r\n downloadOptions: {\r\n filename: 'tableDownload.csv',\r\n separator: ',',\r\n },\r\n draggableColumns: {\r\n enabled: false,\r\n transitionTime: 300,\r\n },\r\n elevation: 4,\r\n enableNestedDataAccess: '',\r\n expandableRows: false,\r\n expandableRowsHeader: true,\r\n expandableRowsOnClick: false,\r\n filter: true,\r\n filterArrayFullMatch: true,\r\n filterType: 'dropdown',\r\n fixedHeader: true,\r\n fixedSelectColumn: true,\r\n pagination: true,\r\n print: true,\r\n resizableColumns: false,\r\n responsive: 'vertical',\r\n rowHover: true,\r\n //rowsPerPage: 10,\r\n rowsPerPageOptions: [10, 15, 100],\r\n search: true,\r\n selectableRows: 'multiple',\r\n selectableRowsHideCheckboxes: false,\r\n selectableRowsOnClick: false,\r\n selectableRowsHeader: true,\r\n serverSide: false,\r\n serverSideFilterList: null,\r\n setTableProps: () => ({}),\r\n sort: true,\r\n sortFilterList: true,\r\n tableBodyHeight: 'auto',\r\n tableBodyMaxHeight: null, // if set, it will override tableBodyHeight\r\n sortOrder: {},\r\n textLabels: getTextLabels(),\r\n viewColumns: true,\r\n selectToolbarPlacement: STP.REPLACE,\r\n });\r\n\r\n warnDep = (msg, consoleWarnings) => {\r\n warnDeprecated(msg, this.options.consoleWarnings);\r\n };\r\n\r\n warnInfo = (msg, consoleWarnings) => {\r\n warnInfo(msg, this.options.consoleWarnings);\r\n };\r\n\r\n handleOptionDeprecation = props => {\r\n if (typeof this.options.selectableRows === 'boolean') {\r\n this.warnDep(\r\n 'Using a boolean for selectableRows has been deprecated. Please use string option: multiple | single | none',\r\n );\r\n this.options.selectableRows = this.options.selectableRows ? 'multiple' : 'none';\r\n }\r\n if (['standard', 'vertical', 'verticalAlways', 'simple'].indexOf(this.options.responsive) === -1) {\r\n if (\r\n [\r\n 'scrollMaxHeight',\r\n 'scrollFullHeight',\r\n 'stacked',\r\n 'stackedFullWidth',\r\n 'scrollFullHeightFullWidth',\r\n 'scroll',\r\n ].indexOf(this.options.responsive) !== -1\r\n ) {\r\n this.warnDep(\r\n this.options.responsive +\r\n ' has been deprecated, but will still work in version 3.x. Please use string option: standard | vertical | simple. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n } else {\r\n this.warnInfo(\r\n this.options.responsive +\r\n ' is not recognized as a valid input for responsive option. Please use string option: standard | vertical | simple. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n }\r\n }\r\n if (this.options.onRowsSelect) {\r\n this.warnDep(\r\n 'onRowsSelect has been renamed onRowSelectionChange. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n }\r\n if (this.options.onRowsExpand) {\r\n this.warnDep(\r\n 'onRowsExpand has been renamed onRowExpansionChange. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n }\r\n if (this.options.fixedHeaderOptions) {\r\n if (\r\n typeof this.options.fixedHeaderOptions.yAxis !== 'undefined' &&\r\n typeof this.options.fixedHeader === 'undefined'\r\n ) {\r\n this.options.fixedHeader = this.options.fixedHeaderOptions.yAxis;\r\n }\r\n if (\r\n typeof this.options.fixedHeaderOptions.xAxis !== 'undefined' &&\r\n typeof this.options.fixedSelectColumn === 'undefined'\r\n ) {\r\n this.options.fixedSelectColumn = this.options.fixedHeaderOptions.xAxis;\r\n }\r\n this.warnDep(\r\n 'fixedHeaderOptions will still work but has been deprecated in favor of fixedHeader and fixedSelectColumn. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n }\r\n if (this.options.serverSideFilterList) {\r\n this.warnDep(\r\n 'serverSideFilterList will still work but has been deprecated in favor of the confirmFilters option. See this example for details: https://github.com/gregnb/mui-datatables/blob/master/examples/serverside-filters/index.js More info here: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n }\r\n\r\n props.columns.map(c => {\r\n if (c.options && c.options.customFilterListRender) {\r\n this.warnDep(\r\n 'The customFilterListRender option has been deprecated. It is being replaced by customFilterListOptions.render (Specify customFilterListOptions: { render: Function } in column options.)',\r\n );\r\n }\r\n });\r\n\r\n if (this.options.disableToolbarSelect === true) {\r\n this.warnDep(\r\n 'disableToolbarSelect has been deprecated but will still work in version 3.x. It is being replaced by \"selectToolbarPlacement\"=\"none\". More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n }\r\n\r\n // only give this warning message in newer browsers\r\n if (Object.values) {\r\n if (Object.values(STP).indexOf(this.options.selectToolbarPlacement) === -1) {\r\n this.warnDep(\r\n 'Invalid option value for selectToolbarPlacement. Please check the documentation: https://github.com/gregnb/mui-datatables#options',\r\n );\r\n }\r\n }\r\n };\r\n\r\n /*\r\n * React currently does not support deep merge for defaultProps. Objects are overwritten\r\n */\r\n mergeDefaultOptions(props) {\r\n const defaultOptions = this.getDefaultOptions();\r\n const theProps = Object.assign({}, props);\r\n theProps.options = theProps.options || {};\r\n\r\n this.updateOptions(defaultOptions, theProps);\r\n }\r\n\r\n validateOptions(options) {\r\n if (options.serverSide && options.onTableChange === undefined) {\r\n throw Error('onTableChange callback must be provided when using serverSide option');\r\n }\r\n if (options.expandableRows && options.renderExpandableRow === undefined) {\r\n throw Error('renderExpandableRow must be provided when using expandableRows option');\r\n }\r\n if (options.rowsSelected && Array.isArray(options.rowsSelected) && options.rowsSelected.some(isNaN)) {\r\n warnInfo('When using the rowsSelected option, must be provided an array of numbers only.');\r\n }\r\n }\r\n\r\n setTableAction = action => {\r\n if (typeof this.options.onTableChange === 'function') {\r\n this.options.onTableChange(action, this.state);\r\n }\r\n };\r\n\r\n setTableInit = action => {\r\n if (typeof this.options.onTableInit === 'function') {\r\n this.options.onTableInit(action, this.state);\r\n }\r\n };\r\n\r\n getInitTableOptions() {\r\n const optionNames = ['rowsPerPage', 'page', 'rowsSelected', 'rowsPerPageOptions'];\r\n const optState = optionNames.reduce((acc, cur) => {\r\n if (this.options[cur] !== undefined) {\r\n acc[cur] = this.options[cur];\r\n }\r\n return acc;\r\n }, {});\r\n\r\n this.validateOptions(optState);\r\n return optState;\r\n }\r\n\r\n setHeadCellRef = (index, pos, el) => {\r\n this.draggableHeadCellRefs[index] = el;\r\n this.resizeHeadCellRefs[pos] = el;\r\n };\r\n\r\n // must be arrow function on local field to refer to the correct instance when passed around\r\n // assigning it as arrow function in the JSX would cause hard to track re-render errors\r\n getTableContentRef = () => this.tableContent.current;\r\n\r\n /*\r\n *  Build the source table data\r\n *\r\n * newColumns - columns from the options object.\r\n * prevColumns - columns object saved onto ths state.\r\n * newColumnOrder - columnOrder from the options object.\r\n * prevColumnOrder - columnOrder object saved onto the state.\r\n */\r\n\r\n buildColumns = (newColumns, prevColumns = [], newColumnOrder, prevColumnOrder = []) => {\r\n let columnData = [];\r\n let filterData = [];\r\n let filterList = [];\r\n let columnOrder = [];\r\n\r\n newColumns.forEach((column, colIndex) => {\r\n let columnOptions = {\r\n display: 'true',\r\n empty: false,\r\n filter: true,\r\n sort: true,\r\n print: true,\r\n searchable: true,\r\n download: true,\r\n viewColumns: true,\r\n sortCompare: null,\r\n sortThirdClickReset: false,\r\n sortDescFirst: false,\r\n };\r\n\r\n columnOrder.push(colIndex);\r\n const options = { ...column.options };\r\n\r\n if (typeof column === 'object') {\r\n if (options) {\r\n if (options.display !== undefined) {\r\n options.display = options.display.toString();\r\n }\r\n\r\n if (options.sortDirection === null || options.sortDirection) {\r\n this.warnDep(\r\n 'The sortDirection column field has been deprecated. Please use the sortOrder option on the options object. More info: https://github.com/gregnb/mui-datatables/tree/master/docs/v2_to_v3_guide.md',\r\n );\r\n }\r\n }\r\n\r\n // remember stored version of display if not overwritten\r\n if (\r\n typeof options.display === 'undefined' &&\r\n prevColumns[colIndex] &&\r\n prevColumns[colIndex].name === column.name &&\r\n prevColumns[colIndex].display\r\n ) {\r\n options.display = prevColumns[colIndex].display;\r\n }\r\n\r\n columnOptions = {\r\n name: column.name,\r\n label: column.label ? column.label : column.name,\r\n ...columnOptions,\r\n ...options,\r\n };\r\n } else {\r\n // remember stored version of display if not overwritten\r\n if (prevColumns[colIndex] && prevColumns[colIndex].display) {\r\n options.display = prevColumns[colIndex].display;\r\n }\r\n\r\n columnOptions = { ...columnOptions, ...options, name: column, label: column };\r\n }\r\n\r\n columnData.push(columnOptions);\r\n\r\n filterData[colIndex] = [];\r\n filterList[colIndex] = [];\r\n });\r\n\r\n if (Array.isArray(newColumnOrder)) {\r\n columnOrder = newColumnOrder;\r\n } else if (\r\n Array.isArray(prevColumnOrder) &&\r\n Array.isArray(newColumns) &&\r\n Array.isArray(prevColumns) &&\r\n newColumns.length === prevColumns.length\r\n ) {\r\n columnOrder = prevColumnOrder;\r\n }\r\n\r\n return { columns: columnData, filterData, filterList, columnOrder };\r\n };\r\n\r\n transformData = (columns, data) => {\r\n const { enableNestedDataAccess } = this.options;\r\n const leaf = (obj, path) =>\r\n (enableNestedDataAccess ? path.split(enableNestedDataAccess) : path.split()).reduce(\r\n (value, el) => (value ? value[el] : undefined),\r\n obj,\r\n );\r\n\r\n const transformedData = Array.isArray(data[0])\r\n ? data.map(row => {\r\n let i = -1;\r\n\r\n return columns.map(col => {\r\n if (!col.empty) i++;\r\n return col.empty ? undefined : row[i];\r\n });\r\n })\r\n : data.map(row => columns.map(col => leaf(row, col.name)));\r\n\r\n return transformedData;\r\n };\r\n\r\n setTableData(props, status, dataUpdated, callback = () => {}, fromConstructor = false) {\r\n let tableData = [];\r\n let { columns, filterData, filterList, columnOrder } = this.buildColumns(\r\n props.columns,\r\n this.state.columns,\r\n this.options.columnOrder,\r\n this.state.columnOrder,\r\n );\r\n\r\n let sortIndex = null;\r\n let sortDirection = 'none';\r\n let tableMeta;\r\n\r\n let sortOrder;\r\n if (this.options.sortOrder && this.options.sortOrder.direction && this.options.sortOrder.name) {\r\n sortOrder = Object.assign({}, this.options.sortOrder);\r\n } else {\r\n sortOrder = Object.assign({}, this.state.sortOrder);\r\n\r\n // if no sortOrder, check and see if there's a sortDirection on one of the columns (deprecation notice for this is given above)\r\n if (!sortOrder.direction) {\r\n props.columns.forEach((column, colIndex) => {\r\n if (column.options && (column.options.sortDirection === 'asc' || column.options.sortDirection === 'desc')) {\r\n sortOrder.name = column.name;\r\n sortOrder.sortDirection = column.sortDirection;\r\n }\r\n });\r\n }\r\n }\r\n\r\n const data = status === TABLE_LOAD.INITIAL ? this.transformData(columns, props.data) : props.data;\r\n let searchText = status === TABLE_LOAD.INITIAL ? this.options.searchText : null;\r\n\r\n if (typeof this.options.searchText === 'undefined' && typeof this.state.searchText !== 'undefined') {\r\n searchText = this.state.searchText;\r\n }\r\n\r\n let rowsPerPage = this.state.rowsPerPage;\r\n if (typeof this.options.rowsPerPage === 'number') {\r\n rowsPerPage = this.options.rowsPerPage;\r\n }\r\n\r\n let page = this.state.page;\r\n if (typeof this.options.page === 'number') {\r\n page = this.options.page;\r\n }\r\n\r\n columns.forEach((column, colIndex) => {\r\n for (let rowIndex = 0; rowIndex < data.length; rowIndex++) {\r\n let value = status === TABLE_LOAD.INITIAL ? data[rowIndex][colIndex] : data[rowIndex].data[colIndex];\r\n\r\n if (typeof tableData[rowIndex] === 'undefined') {\r\n tableData.push({\r\n index: status === TABLE_LOAD.INITIAL ? rowIndex : data[rowIndex].index,\r\n data: status === TABLE_LOAD.INITIAL ? data[rowIndex] : data[rowIndex].data,\r\n });\r\n }\r\n\r\n if (column.filter !== false) {\r\n if (typeof column.customBodyRender === 'function') {\r\n const rowData = tableData[rowIndex].data;\r\n tableMeta = this.getTableMeta(rowIndex, colIndex, rowData, column, data, this.state, tableData);\r\n const funcResult = column.customBodyRender(value, tableMeta);\r\n\r\n if (React.isValidElement(funcResult) && funcResult.props.value) {\r\n value = funcResult.props.value;\r\n } else if (typeof funcResult === 'string') {\r\n value = funcResult;\r\n }\r\n }\r\n\r\n if (typeof value === 'object' && !Array.isArray(value) && value !== null) {\r\n // it's extremely rare but possible to create an object without a toString method, ex: var x = Object.create(null);\r\n // so this check has to be made\r\n value = value.toString ? value.toString() : '';\r\n }\r\n\r\n if (filterData[colIndex].indexOf(value) < 0 && !Array.isArray(value)) {\r\n filterData[colIndex].push(value);\r\n } else if (Array.isArray(value)) {\r\n value.forEach(element => {\r\n let elmVal;\r\n if ((typeof element === 'object' && element !== null) || typeof element === 'function') {\r\n elmVal = element.toString ? element.toString() : '';\r\n } else {\r\n elmVal = element;\r\n }\r\n\r\n if (filterData[colIndex].indexOf(elmVal) < 0) {\r\n filterData[colIndex].push(elmVal);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (column.filterOptions) {\r\n if (Array.isArray(column.filterOptions)) {\r\n filterData[colIndex] = cloneDeep(column.filterOptions);\r\n this.warnDep(\r\n 'filterOptions must now be an object. see https://github.com/gregnb/mui-datatables/tree/master/examples/customize-filter example',\r\n );\r\n } else if (Array.isArray(column.filterOptions.names)) {\r\n filterData[colIndex] = cloneDeep(column.filterOptions.names);\r\n }\r\n }\r\n\r\n if (column.filterList) {\r\n filterList[colIndex] = cloneDeep(column.filterList);\r\n } else if (\r\n this.state.filterList &&\r\n this.state.filterList[colIndex] &&\r\n this.state.filterList[colIndex].length > 0\r\n ) {\r\n filterList[colIndex] = cloneDeep(this.state.filterList[colIndex]);\r\n }\r\n\r\n if (this.options.sortFilterList) {\r\n const comparator = getCollatorComparator();\r\n filterData[colIndex].sort(comparator);\r\n }\r\n\r\n if (column.name === sortOrder.name) {\r\n sortDirection = sortOrder.direction;\r\n sortIndex = colIndex;\r\n }\r\n });\r\n\r\n let selectedRowsData = {\r\n data: [],\r\n lookup: {},\r\n };\r\n\r\n let expandedRowsData = {\r\n data: [],\r\n lookup: {},\r\n };\r\n\r\n if (TABLE_LOAD.INITIAL) {\r\n // Multiple row selection customization\r\n if (this.options.rowsSelected && this.options.rowsSelected.length && this.options.selectableRows === 'multiple') {\r\n this.options.rowsSelected\r\n .filter(selectedRowIndex => selectedRowIndex === 0 || (Number(selectedRowIndex) && selectedRowIndex > 0))\r\n .forEach(row => {\r\n let rowPos = row;\r\n\r\n for (let cIndex = 0; cIndex < this.state.displayData.length; cIndex++) {\r\n if (this.state.displayData[cIndex].dataIndex === row) {\r\n rowPos = cIndex;\r\n break;\r\n }\r\n }\r\n\r\n selectedRowsData.data.push({ index: rowPos, dataIndex: row });\r\n selectedRowsData.lookup[row] = true;\r\n });\r\n\r\n // Single row selection customization\r\n } else if (\r\n this.options.rowsSelected &&\r\n this.options.rowsSelected.length === 1 &&\r\n this.options.selectableRows === 'single'\r\n ) {\r\n let rowPos = this.options.rowsSelected[0];\r\n\r\n for (let cIndex = 0; cIndex < this.state.displayData.length; cIndex++) {\r\n if (this.state.displayData[cIndex].dataIndex === this.options.rowsSelected[0]) {\r\n rowPos = cIndex;\r\n break;\r\n }\r\n }\r\n\r\n selectedRowsData.data.push({ index: rowPos, dataIndex: this.options.rowsSelected[0] });\r\n selectedRowsData.lookup[this.options.rowsSelected[0]] = true;\r\n } else if (\r\n this.options.rowsSelected &&\r\n this.options.rowsSelected.length > 1 &&\r\n this.options.selectableRows === 'single'\r\n ) {\r\n console.error(\r\n 'Multiple values provided for selectableRows, but selectableRows set to \"single\". Either supply only a single value or use \"multiple\".',\r\n );\r\n } else if (typeof this.options.rowsSelected === 'undefined' && dataUpdated === false) {\r\n if (this.state.selectedRows) {\r\n selectedRowsData = Object.assign({}, this.state.selectedRows);\r\n }\r\n }\r\n\r\n if (this.options.rowsExpanded && this.options.rowsExpanded.length && this.options.expandableRows) {\r\n this.options.rowsExpanded.forEach(row => {\r\n let rowPos = row;\r\n\r\n for (let cIndex = 0; cIndex < this.state.displayData.length; cIndex++) {\r\n if (this.state.displayData[cIndex].dataIndex === row) {\r\n rowPos = cIndex;\r\n break;\r\n }\r\n }\r\n\r\n expandedRowsData.data.push({ index: rowPos, dataIndex: row });\r\n expandedRowsData.lookup[row] = true;\r\n });\r\n } else if (typeof this.options.rowsExpanded === 'undefined' && dataUpdated === false && this.state.expandedRows) {\r\n expandedRowsData = Object.assign({}, this.state.expandedRows);\r\n }\r\n }\r\n\r\n if (!this.options.serverSide && sortIndex !== null) {\r\n const sortedData = this.sortTable(tableData, sortIndex, sortDirection, columns[sortIndex].sortCompare);\r\n tableData = sortedData.data;\r\n }\r\n\r\n /* set source data and display Data set source set */\r\n let stateUpdates = {\r\n columns: columns,\r\n filterData: filterData,\r\n filterList: filterList,\r\n searchText: searchText,\r\n selectedRows: selectedRowsData,\r\n expandedRows: expandedRowsData,\r\n count: this.options.count,\r\n data: tableData,\r\n sortOrder: sortOrder,\r\n rowsPerPage,\r\n page,\r\n displayData: this.getDisplayData(columns, tableData, filterList, searchText, tableMeta, props),\r\n columnOrder,\r\n };\r\n\r\n if (fromConstructor) {\r\n this.state = Object.assign({}, this.state, stateUpdates);\r\n } else {\r\n this.setState(stateUpdates, callback);\r\n }\r\n }\r\n\r\n /*\r\n * Build the table data used to display to the user (ie: after filter/search applied)\r\n */\r\n computeDisplayRow(\r\n columns,\r\n row,\r\n rowIndex,\r\n filterList,\r\n searchText,\r\n dataForTableMeta,\r\n options,\r\n props,\r\n currentTableData,\r\n ) {\r\n let isFiltered = false;\r\n let isSearchFound = false;\r\n let displayRow = [];\r\n\r\n for (let index = 0; index < row.length; index++) {\r\n let columnDisplay = row[index];\r\n let columnValue = row[index];\r\n let column = columns[index];\r\n\r\n if (column.customBodyRenderLite) {\r\n displayRow.push(column.customBodyRenderLite);\r\n } else if (column.customBodyRender) {\r\n const tableMeta = this.getTableMeta(\r\n rowIndex,\r\n index,\r\n row,\r\n column,\r\n dataForTableMeta,\r\n {\r\n ...this.state,\r\n filterList: filterList,\r\n searchText: searchText,\r\n },\r\n currentTableData,\r\n );\r\n\r\n const funcResult = column.customBodyRender(\r\n columnValue,\r\n tableMeta,\r\n this.updateDataCol.bind(null, rowIndex, index),\r\n );\r\n columnDisplay = funcResult;\r\n\r\n /* drill down to get the value of a cell */\r\n columnValue =\r\n typeof funcResult === 'string' || !funcResult\r\n ? funcResult\r\n : funcResult.props && funcResult.props.value\r\n ? funcResult.props.value\r\n : columnValue;\r\n\r\n displayRow.push(columnDisplay);\r\n } else {\r\n displayRow.push(columnDisplay);\r\n }\r\n\r\n const columnVal = columnValue === null || columnValue === undefined ? '' : columnValue.toString();\r\n\r\n const filterVal = filterList[index];\r\n const caseSensitive = options.caseSensitive;\r\n const filterType = column.filterType || options.filterType;\r\n if (filterVal.length || filterType === 'custom') {\r\n if (column.filterOptions && column.filterOptions.logic) {\r\n if (column.filterOptions.logic(columnValue, filterVal, row)) isFiltered = true;\r\n } else if (filterType === 'textField' && !this.hasSearchText(columnVal, filterVal, caseSensitive)) {\r\n isFiltered = true;\r\n } else if (\r\n filterType !== 'textField' &&\r\n Array.isArray(columnValue) === false &&\r\n filterVal.indexOf(columnValue) < 0\r\n ) {\r\n isFiltered = true;\r\n } else if (filterType !== 'textField' && Array.isArray(columnValue)) {\r\n if (options.filterArrayFullMatch) {\r\n //true if every filterVal exists in columnVal, false otherwise\r\n const isFullMatch = filterVal.every(el => {\r\n return columnValue.indexOf(el) >= 0;\r\n });\r\n //if it is not a fullMatch, filter row out\r\n if (!isFullMatch) {\r\n isFiltered = true;\r\n }\r\n } else {\r\n const isAnyMatch = filterVal.some(el => {\r\n return columnValue.indexOf(el) >= 0;\r\n });\r\n //if no value matches, filter row out\r\n if (!isAnyMatch) {\r\n isFiltered = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (\r\n searchText &&\r\n column.display !== 'excluded' &&\r\n this.hasSearchText(columnVal, searchText, caseSensitive) &&\r\n column.display !== 'false' &&\r\n column.searchable\r\n ) {\r\n isSearchFound = true;\r\n }\r\n }\r\n\r\n const { customSearch } = props.options;\r\n\r\n if (searchText && customSearch) {\r\n const customSearchResult = customSearch(searchText, row, columns);\r\n if (typeof customSearchResult !== 'boolean') {\r\n console.error('customSearch must return a boolean');\r\n } else {\r\n isSearchFound = customSearchResult;\r\n }\r\n }\r\n\r\n if (options.serverSide) {\r\n if (customSearch) {\r\n console.warn('Server-side filtering is enabled, hence custom search will be ignored.');\r\n }\r\n\r\n return displayRow;\r\n }\r\n\r\n if (isFiltered || (searchText && !isSearchFound)) return null;\r\n else return displayRow;\r\n }\r\n\r\n hasSearchText = (toSearch, toFind, caseSensitive) => {\r\n let stack = toSearch.toString();\r\n let needle = toFind.toString();\r\n\r\n if (!caseSensitive) {\r\n needle = needle.toLowerCase();\r\n stack = stack.toLowerCase();\r\n }\r\n\r\n return stack.indexOf(needle) >= 0;\r\n };\r\n\r\n updateDataCol = (row, index, value) => {\r\n this.setState(prevState => {\r\n let changedData = cloneDeep(prevState.data);\r\n let filterData = cloneDeep(prevState.filterData);\r\n\r\n const tableMeta = this.getTableMeta(\r\n row,\r\n index,\r\n row,\r\n prevState.columns[index],\r\n prevState.data,\r\n prevState,\r\n prevState.data,\r\n );\r\n const funcResult = prevState.columns[index].customBodyRender(value, tableMeta);\r\n\r\n const filterValue =\r\n React.isValidElement(funcResult) && funcResult.props.value\r\n ? funcResult.props.value\r\n : prevState['data'][row][index];\r\n\r\n const prevFilterIndex = filterData[index].indexOf(filterValue);\r\n filterData[index].splice(prevFilterIndex, 1, filterValue);\r\n\r\n changedData[row].data[index] = value;\r\n\r\n if (this.options.sortFilterList) {\r\n const comparator = getCollatorComparator();\r\n filterData[index].sort(comparator);\r\n }\r\n\r\n return {\r\n data: changedData,\r\n filterData: filterData,\r\n displayData: this.getDisplayData(\r\n prevState.columns,\r\n changedData,\r\n prevState.filterList,\r\n prevState.searchText,\r\n null,\r\n this.props,\r\n ),\r\n };\r\n });\r\n };\r\n\r\n getTableMeta = (rowIndex, colIndex, rowData, columnData, tableData, curState, currentTableData) => {\r\n const { columns, data, displayData, filterData, ...tableState } = curState;\r\n\r\n return {\r\n rowIndex: rowIndex,\r\n columnIndex: colIndex,\r\n columnData: columnData,\r\n rowData: rowData,\r\n tableData: tableData,\r\n tableState: tableState,\r\n currentTableData: currentTableData,\r\n };\r\n };\r\n\r\n getDisplayData(columns, data, filterList, searchText, tableMeta, props) {\r\n let newRows = [];\r\n const dataForTableMeta = tableMeta ? tableMeta.tableData : props.data;\r\n\r\n for (let index = 0; index < data.length; index++) {\r\n const value = data[index].data;\r\n const displayRow = this.computeDisplayRow(\r\n columns,\r\n value,\r\n index,\r\n filterList,\r\n searchText,\r\n dataForTableMeta,\r\n this.options,\r\n props,\r\n data,\r\n );\r\n\r\n if (displayRow) {\r\n newRows.push({\r\n data: displayRow,\r\n dataIndex: data[index].index,\r\n });\r\n }\r\n }\r\n return newRows;\r\n }\r\n\r\n toggleViewColumn = index => {\r\n this.setState(\r\n prevState => {\r\n const columns = cloneDeep(prevState.columns);\r\n columns[index].display = columns[index].display === 'true' ? 'false' : 'true';\r\n return {\r\n columns: columns,\r\n };\r\n },\r\n () => {\r\n this.setTableAction('viewColumnsChange');\r\n var cb = this.options.onViewColumnsChange || this.options.onColumnViewChange;\r\n\r\n if (cb) {\r\n cb(this.state.columns[index].name, this.state.columns[index].display === 'true' ? 'add' : 'remove');\r\n }\r\n },\r\n );\r\n };\r\n\r\n updateColumns = newColumns => {\r\n this.setState(\r\n prevState => {\r\n return {\r\n columns: newColumns,\r\n };\r\n },\r\n () => {\r\n this.setTableAction('viewColumnsChange');\r\n var cb = this.options.onViewColumnsChange || this.options.onColumnViewChange;\r\n\r\n if (cb) {\r\n cb(null, 'update', newColumns);\r\n }\r\n },\r\n );\r\n };\r\n\r\n getSortDirectionLabel(sortOrder) {\r\n switch (sortOrder.direction) {\r\n case 'asc':\r\n return 'ascending';\r\n case 'desc':\r\n return 'descending';\r\n case 'none':\r\n return 'none';\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n getTableProps() {\r\n const { classes } = this.props;\r\n const tableProps = this.options.setTableProps() || {};\r\n\r\n tableProps.className = clsx(classes.tableRoot, tableProps.className);\r\n\r\n return tableProps;\r\n }\r\n\r\n toggleSortColumn = index => {\r\n this.setState(\r\n prevState => {\r\n let columns = cloneDeep(prevState.columns);\r\n let data = prevState.data;\r\n let newOrder = columns[index].sortDescFirst ? 'desc' : 'asc'; // default\r\n\r\n let sequenceOrder = ['asc', 'desc'];\r\n if (columns[index].sortDescFirst) {\r\n sequenceOrder = ['desc', 'asc'];\r\n }\r\n if (columns[index].sortThirdClickReset) {\r\n sequenceOrder.push('none');\r\n }\r\n\r\n if (columns[index].name === this.state.sortOrder.name) {\r\n let pos = sequenceOrder.indexOf(this.state.sortOrder.direction);\r\n if (pos !== -1) {\r\n pos++;\r\n if (pos >= sequenceOrder.length) pos = 0;\r\n newOrder = sequenceOrder[pos];\r\n }\r\n }\r\n\r\n const newSortOrder = {\r\n name: columns[index].name,\r\n direction: newOrder,\r\n };\r\n\r\n const orderLabel = this.getSortDirectionLabel(newSortOrder);\r\n const announceText = `Table now sorted by ${columns[index].name} : ${orderLabel}`;\r\n\r\n let newState = {\r\n columns: columns,\r\n announceText: announceText,\r\n activeColumn: index,\r\n };\r\n\r\n if (this.options.serverSide) {\r\n newState = {\r\n ...newState,\r\n data: prevState.data,\r\n displayData: prevState.displayData,\r\n selectedRows: prevState.selectedRows,\r\n sortOrder: newSortOrder,\r\n };\r\n } else {\r\n const sortedData = this.sortTable(data, index, newOrder, columns[index].sortCompare);\r\n\r\n newState = {\r\n ...newState,\r\n data: sortedData.data,\r\n displayData: this.getDisplayData(\r\n columns,\r\n sortedData.data,\r\n prevState.filterList,\r\n prevState.searchText,\r\n null,\r\n this.props,\r\n ),\r\n selectedRows: sortedData.selectedRows,\r\n sortOrder: newSortOrder,\r\n previousSelectedRow: null,\r\n };\r\n }\r\n\r\n return newState;\r\n },\r\n () => {\r\n this.setTableAction('sort');\r\n\r\n if (this.options.onColumnSortChange) {\r\n this.options.onColumnSortChange(this.state.sortOrder.name, this.state.sortOrder.direction);\r\n }\r\n },\r\n );\r\n };\r\n\r\n changeRowsPerPage = rows => {\r\n const rowCount = this.options.count || this.state.displayData.length;\r\n\r\n this.setState(\r\n () => ({\r\n rowsPerPage: rows,\r\n page: getPageValue(rowCount, rows, this.state.page),\r\n }),\r\n () => {\r\n this.setTableAction('changeRowsPerPage');\r\n\r\n if (this.options.onChangeRowsPerPage) {\r\n this.options.onChangeRowsPerPage(this.state.rowsPerPage);\r\n }\r\n },\r\n );\r\n };\r\n\r\n changePage = page => {\r\n this.setState(\r\n () => ({\r\n page: page,\r\n }),\r\n () => {\r\n this.setTableAction('changePage');\r\n if (this.options.onChangePage) {\r\n this.options.onChangePage(this.state.page);\r\n }\r\n },\r\n );\r\n };\r\n\r\n searchClose = () => {\r\n this.setState(\r\n prevState => ({\r\n searchText: null,\r\n displayData: this.options.serverSide\r\n ? prevState.displayData\r\n : this.getDisplayData(prevState.columns, prevState.data, prevState.filterList, null, null, this.props),\r\n }),\r\n () => {\r\n this.setTableAction('search');\r\n if (this.options.onSearchChange) {\r\n this.options.onSearchChange(this.state.searchText);\r\n }\r\n },\r\n );\r\n };\r\n\r\n searchTextUpdate = text => {\r\n this.setState(\r\n prevState => ({\r\n searchText: text && text.length ? text : null,\r\n page: 0,\r\n displayData: this.options.serverSide\r\n ? prevState.displayData\r\n : this.getDisplayData(prevState.columns, prevState.data, prevState.filterList, text, null, this.props),\r\n }),\r\n () => {\r\n this.setTableAction('search');\r\n if (this.options.onSearchChange) {\r\n this.options.onSearchChange(this.state.searchText);\r\n }\r\n },\r\n );\r\n };\r\n\r\n resetFilters = () => {\r\n this.setState(\r\n prevState => {\r\n const filterList = prevState.columns.map(() => []);\r\n\r\n return {\r\n filterList: filterList,\r\n displayData: this.options.serverSide\r\n ? prevState.displayData\r\n : this.getDisplayData(\r\n prevState.columns,\r\n prevState.data,\r\n filterList,\r\n prevState.searchText,\r\n null,\r\n this.props,\r\n ),\r\n };\r\n },\r\n () => {\r\n this.setTableAction('resetFilters');\r\n if (this.options.onFilterChange) {\r\n this.options.onFilterChange(null, this.state.filterList, 'reset', null);\r\n }\r\n },\r\n );\r\n };\r\n\r\n updateFilterByType = (filterList, index, value, type, customUpdate) => {\r\n const filterPos = filterList[index].findIndex(filter => isEqual(filter, value));\r\n\r\n switch (type) {\r\n case 'checkbox':\r\n filterPos >= 0 ? filterList[index].splice(filterPos, 1) : filterList[index].push(value);\r\n break;\r\n case 'chip':\r\n filterPos >= 0 ? filterList[index].splice(filterPos, 1) : filterList[index].push(value);\r\n break;\r\n case 'multiselect':\r\n filterList[index] = value === '' ? [] : value;\r\n break;\r\n case 'dropdown':\r\n filterList[index] = value;\r\n break;\r\n case 'custom':\r\n if (customUpdate) {\r\n filterList = customUpdate(filterList, filterPos, index);\r\n } else {\r\n filterList[index] = value;\r\n }\r\n break;\r\n default:\r\n filterList[index] = filterPos >= 0 || value === '' ? [] : [value];\r\n }\r\n };\r\n\r\n filterUpdate = (index, value, column, type, customUpdate, next) => {\r\n this.setState(\r\n prevState => {\r\n const filterList = cloneDeep(prevState.filterList);\r\n this.updateFilterByType(filterList, index, value, type, customUpdate);\r\n\r\n return {\r\n page: 0,\r\n filterList: filterList,\r\n displayData: this.options.serverSide\r\n ? prevState.displayData\r\n : this.getDisplayData(\r\n prevState.columns,\r\n prevState.data,\r\n filterList,\r\n prevState.searchText,\r\n null,\r\n this.props,\r\n ),\r\n previousSelectedRow: null,\r\n };\r\n },\r\n () => {\r\n this.setTableAction('filterChange');\r\n if (this.options.onFilterChange) {\r\n this.options.onFilterChange(column, this.state.filterList, type, index, this.state.displayData);\r\n }\r\n next && next(this.state.filterList);\r\n },\r\n );\r\n };\r\n\r\n // Collapses or expands all expanded rows\r\n toggleAllExpandableRows = () => {\r\n let expandedRowsData = [...this.state.expandedRows.data];\r\n const { isRowExpandable } = this.options;\r\n let affecttedRows = [];\r\n\r\n if (expandedRowsData.length > 0) {\r\n // collapse all\r\n for (let ii = expandedRowsData.length - 1; ii >= 0; ii--) {\r\n let item = expandedRowsData[ii];\r\n if (!isRowExpandable || (isRowExpandable && isRowExpandable(item.dataIndex, this.state.expandedRows))) {\r\n affecttedRows.push(expandedRowsData.splice(ii, 1));\r\n }\r\n }\r\n } else {\r\n // expand all\r\n for (let ii = 0; ii < this.state.data.length; ii++) {\r\n let item = this.state.data[ii];\r\n if (!isRowExpandable || (isRowExpandable && isRowExpandable(item.dataIndex, this.state.expandedRows))) {\r\n if (this.state.expandedRows.lookup[item.index] !== true) {\r\n let newItem = {\r\n index: ii,\r\n dataIndex: item.index,\r\n };\r\n expandedRowsData.push(newItem);\r\n affecttedRows.push(newItem);\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.setState(\r\n {\r\n expandedRows: {\r\n lookup: buildMap(expandedRowsData),\r\n data: expandedRowsData,\r\n },\r\n },\r\n () => {\r\n this.setTableAction('expandRow');\r\n if (this.options.onRowExpansionChange) {\r\n this.options.onRowExpansionChange(\r\n affecttedRows,\r\n this.state.expandedRows.data,\r\n this.state.expandedRows.data.map(item => item.dataIndex),\r\n );\r\n }\r\n },\r\n );\r\n };\r\n\r\n areAllRowsExpanded = () => {\r\n return this.state.expandedRows.data.length === this.state.data.length;\r\n };\r\n\r\n updateColumnOrder = (columnOrder, columnIndex, newPosition) => {\r\n this.setState(\r\n prevState => {\r\n return {\r\n columnOrder,\r\n };\r\n },\r\n () => {\r\n this.setTableAction('columnOrderChange');\r\n if (this.options.onColumnOrderChange) {\r\n this.options.onColumnOrderChange(this.state.columnOrder, columnIndex, newPosition);\r\n }\r\n },\r\n );\r\n };\r\n\r\n selectRowDelete = () => {\r\n const { selectedRows, data, filterList } = this.state;\r\n\r\n const selectedMap = buildMap(selectedRows.data);\r\n const cleanRows = data.filter(({ index }) => !selectedMap[index]);\r\n\r\n if (this.options.onRowsDelete) {\r\n if (\r\n this.options.onRowsDelete(\r\n selectedRows,\r\n cleanRows.map(ii => ii.data),\r\n ) === false\r\n )\r\n return;\r\n }\r\n\r\n this.setTableData(\r\n {\r\n columns: this.props.columns,\r\n data: cleanRows,\r\n options: {\r\n filterList: filterList,\r\n },\r\n },\r\n TABLE_LOAD.UPDATE,\r\n true,\r\n () => {\r\n this.setTableAction('rowDelete');\r\n },\r\n );\r\n };\r\n\r\n toggleExpandRow = row => {\r\n const { dataIndex } = row;\r\n const { isRowExpandable } = this.options;\r\n let { expandedRows } = this.state;\r\n const expandedRowsData = [...expandedRows.data];\r\n let shouldCollapseExpandedRow = false;\r\n let hasRemovedRow = false;\r\n let removedRow = [];\r\n\r\n for (var cIndex = 0; cIndex < expandedRowsData.length; cIndex++) {\r\n if (expandedRowsData[cIndex].dataIndex === dataIndex) {\r\n shouldCollapseExpandedRow = true;\r\n break;\r\n }\r\n }\r\n\r\n if (shouldCollapseExpandedRow) {\r\n if ((isRowExpandable && isRowExpandable(dataIndex, expandedRows)) || !isRowExpandable) {\r\n removedRow = expandedRowsData.splice(cIndex, 1);\r\n hasRemovedRow = true;\r\n }\r\n } else {\r\n if (isRowExpandable && isRowExpandable(dataIndex, expandedRows)) expandedRowsData.push(row);\r\n else if (!isRowExpandable) expandedRowsData.push(row);\r\n }\r\n\r\n this.setState(\r\n {\r\n curExpandedRows: hasRemovedRow ? removedRow : [row],\r\n expandedRows: {\r\n lookup: buildMap(expandedRowsData),\r\n data: expandedRowsData,\r\n },\r\n },\r\n () => {\r\n this.setTableAction('rowExpansionChange');\r\n if (this.options.onRowExpansionChange || this.options.onRowsExpand) {\r\n let expandCallback = this.options.onRowExpansionChange || this.options.onRowsExpand;\r\n expandCallback(this.state.curExpandedRows, this.state.expandedRows.data);\r\n }\r\n },\r\n );\r\n };\r\n\r\n selectRowUpdate = (type, value, shiftAdjacentRows = []) => {\r\n // safety check\r\n const { selectableRows } = this.options;\r\n if (selectableRows === 'none') {\r\n return;\r\n }\r\n\r\n if (type === 'head') {\r\n const { isRowSelectable } = this.options;\r\n this.setState(\r\n prevState => {\r\n const { displayData, selectedRows: prevSelectedRows } = prevState;\r\n const selectedRowsLen = prevState.selectedRows.data.length;\r\n let isDeselect =\r\n selectedRowsLen === displayData.length || (selectedRowsLen < displayData.length && selectedRowsLen > 0);\r\n\r\n let selectedRows = displayData.reduce((arr, d, i) => {\r\n const selected = isRowSelectable ? isRowSelectable(displayData[i].dataIndex, prevSelectedRows) : true;\r\n selected && arr.push({ index: i, dataIndex: displayData[i].dataIndex });\r\n return arr;\r\n }, []);\r\n\r\n let newRows = [...selectedRows];\r\n let selectedMap = buildMap(newRows);\r\n\r\n // if the select toolbar is disabled, the rules are a little different\r\n if (this.options.selectToolbarPlacement === STP.NONE) {\r\n if (selectedRowsLen > displayData.length) {\r\n isDeselect = true;\r\n } else {\r\n for (let ii = 0; ii < displayData.length; ii++) {\r\n if (!selectedMap[displayData[ii].dataIndex]) {\r\n isDeselect = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (isDeselect) {\r\n newRows = prevState.selectedRows.data.filter(({ dataIndex }) => !selectedMap[dataIndex]);\r\n selectedMap = buildMap(newRows);\r\n }\r\n\r\n return {\r\n curSelectedRows: newRows,\r\n selectedRows: {\r\n data: newRows,\r\n lookup: selectedMap,\r\n },\r\n previousSelectedRow: null,\r\n };\r\n },\r\n () => {\r\n this.setTableAction('rowSelectionChange');\r\n if (this.options.onRowSelectionChange) {\r\n this.options.onRowSelectionChange(\r\n this.state.curSelectedRows,\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data.map(item => item.dataIndex),\r\n );\r\n } else if (this.options.onRowsSelect) {\r\n this.options.onRowsSelect(\r\n this.state.curSelectedRows,\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data.map(item => item.dataIndex),\r\n );\r\n }\r\n },\r\n );\r\n } else if (type === 'cell') {\r\n this.setState(\r\n prevState => {\r\n const { dataIndex } = value;\r\n let selectedRows = [...prevState.selectedRows.data];\r\n let rowPos = -1;\r\n\r\n for (let cIndex = 0; cIndex < selectedRows.length; cIndex++) {\r\n if (selectedRows[cIndex].dataIndex === dataIndex) {\r\n rowPos = cIndex;\r\n break;\r\n }\r\n }\r\n\r\n if (rowPos >= 0) {\r\n selectedRows.splice(rowPos, 1);\r\n\r\n // handle rows affected by shift+click\r\n if (shiftAdjacentRows.length > 0) {\r\n let shiftAdjacentMap = buildMap(shiftAdjacentRows);\r\n for (let cIndex = selectedRows.length - 1; cIndex >= 0; cIndex--) {\r\n if (shiftAdjacentMap[selectedRows[cIndex].dataIndex]) {\r\n selectedRows.splice(cIndex, 1);\r\n }\r\n }\r\n }\r\n } else if (selectableRows === 'single') {\r\n selectedRows = [value];\r\n } else {\r\n // multiple\r\n selectedRows.push(value);\r\n\r\n // handle rows affected by shift+click\r\n if (shiftAdjacentRows.length > 0) {\r\n let selectedMap = buildMap(selectedRows);\r\n shiftAdjacentRows.forEach(aRow => {\r\n if (!selectedMap[aRow.dataIndex]) {\r\n selectedRows.push(aRow);\r\n }\r\n });\r\n }\r\n }\r\n\r\n return {\r\n selectedRows: {\r\n lookup: buildMap(selectedRows),\r\n data: selectedRows,\r\n },\r\n previousSelectedRow: value,\r\n };\r\n },\r\n () => {\r\n this.setTableAction('rowSelectionChange');\r\n if (this.options.onRowSelectionChange) {\r\n this.options.onRowSelectionChange(\r\n [value],\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data.map(item => item.dataIndex),\r\n );\r\n } else if (this.options.onRowsSelect) {\r\n this.options.onRowsSelect(\r\n [value],\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data.map(item => item.dataIndex),\r\n );\r\n }\r\n },\r\n );\r\n } else if (type === 'custom') {\r\n const { displayData } = this.state;\r\n\r\n const data = value.map(row => ({ index: row, dataIndex: displayData[row].dataIndex }));\r\n const lookup = buildMap(data);\r\n\r\n this.setState(\r\n {\r\n selectedRows: { data, lookup },\r\n previousSelectedRow: null,\r\n },\r\n () => {\r\n this.setTableAction('rowSelectionChange');\r\n if (this.options.onRowSelectionChange) {\r\n this.options.onRowSelectionChange(\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data.map(item => item.dataIndex),\r\n );\r\n } else if (this.options.onRowsSelect) {\r\n this.options.onRowsSelect(\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data,\r\n this.state.selectedRows.data.map(item => item.dataIndex),\r\n );\r\n }\r\n },\r\n );\r\n }\r\n };\r\n\r\n sortTable(data, col, order, columnSortCompare = null) {\r\n let hasCustomTableSort = this.options.customSort && !columnSortCompare;\r\n let meta = { selectedRows: this.state.selectedRows }; // meta for customSort\r\n let dataSrc = hasCustomTableSort\r\n ? this.options.customSort(data, col, order || (this.options.sortDescFirst ? 'desc' : 'asc'), meta)\r\n : data;\r\n\r\n // reset the order by index\r\n let noSortData;\r\n if (order === 'none') {\r\n noSortData = data.reduce((r, i) => {\r\n r[i.index] = i;\r\n return r;\r\n }, []);\r\n }\r\n\r\n let sortedData = dataSrc.map((row, sIndex) => ({\r\n data: row.data[col],\r\n rowData: row.data,\r\n position: sIndex,\r\n rowSelected: this.state.selectedRows.lookup[row.index] ? true : false,\r\n }));\r\n\r\n if (!hasCustomTableSort) {\r\n const sortFn = columnSortCompare || sortCompare;\r\n sortedData.sort(sortFn(order));\r\n }\r\n\r\n let tableData = [];\r\n let selectedRows = [];\r\n\r\n for (let i = 0; i < sortedData.length; i++) {\r\n const row = sortedData[i];\r\n tableData.push(dataSrc[row.position]);\r\n if (row.rowSelected) {\r\n selectedRows.push({ index: i, dataIndex: dataSrc[row.position].index });\r\n }\r\n }\r\n\r\n return {\r\n data: order === 'none' ? noSortData : tableData,\r\n selectedRows: {\r\n lookup: buildMap(selectedRows),\r\n data: selectedRows,\r\n },\r\n };\r\n }\r\n\r\n render() {\r\n const {\r\n classes,\r\n className,\r\n title,\r\n components: {\r\n TableBody,\r\n TableFilterList,\r\n TableFooter,\r\n TableHead,\r\n TableResize,\r\n TableToolbar,\r\n TableToolbarSelect,\r\n DragDropBackend = HTML5Backend,\r\n },\r\n } = this.props;\r\n const {\r\n announceText,\r\n activeColumn,\r\n data,\r\n displayData,\r\n columns,\r\n page,\r\n filterData,\r\n filterList,\r\n selectedRows,\r\n previousSelectedRow,\r\n expandedRows,\r\n searchText,\r\n sortOrder,\r\n serverSideFilterList,\r\n columnOrder,\r\n } = this.state;\r\n\r\n const TableBodyComponent = TableBody || DefaultTableBody;\r\n const TableFilterListComponent = TableFilterList || DefaultTableFilterList;\r\n const TableFooterComponent = TableFooter || DefaultTableFooter;\r\n const TableHeadComponent = TableHead || DefaultTableHead;\r\n const TableResizeComponent = TableResize || DefaultTableResize;\r\n const TableToolbarComponent = TableToolbar || DefaultTableToolbar;\r\n const TableToolbarSelectComponent = TableToolbarSelect || DefaultTableToolbarSelect;\r\n\r\n const rowCount = this.state.count || displayData.length;\r\n const rowsPerPage = this.options.pagination ? this.state.rowsPerPage : displayData.length;\r\n const showToolbar = hasToolbarItem(this.options, title);\r\n const columnNames = columns.map(column => ({\r\n name: column.name,\r\n filterType: column.filterType || this.options.filterType,\r\n }));\r\n const responsiveOption = this.options.responsive;\r\n let paperClasses = `${classes.paper} ${className}`;\r\n let maxHeight = this.options.tableBodyMaxHeight;\r\n let responsiveClass;\r\n\r\n switch (responsiveOption) {\r\n // deprecated\r\n case 'scroll':\r\n responsiveClass = classes.responsiveScroll;\r\n maxHeight = '499px';\r\n break;\r\n // deprecated\r\n case 'scrollMaxHeight':\r\n responsiveClass = classes.responsiveScrollMaxHeight;\r\n maxHeight = '499px';\r\n break;\r\n // deprecated\r\n case 'scrollFullHeight':\r\n responsiveClass = classes.responsiveScrollFullHeight;\r\n maxHeight = 'none';\r\n break;\r\n // deprecated\r\n case 'scrollFullHeightFullWidth':\r\n responsiveClass = classes.responsiveScrollFullHeight;\r\n paperClasses = `${classes.paperResponsiveScrollFullHeightFullWidth} ${className}`;\r\n break;\r\n // deprecated\r\n case 'stacked':\r\n responsiveClass = classes.responsiveStacked;\r\n maxHeight = 'none';\r\n break;\r\n // deprecated\r\n case 'stackedFullWidth':\r\n responsiveClass = classes.responsiveStackedFullWidth;\r\n paperClasses = `${classes.paperResponsiveScrollFullHeightFullWidth} ${className}`;\r\n maxHeight = 'none';\r\n break;\r\n\r\n default:\r\n responsiveClass = classes.responsiveBase;\r\n break;\r\n }\r\n\r\n var tableHeightVal = {};\r\n if (maxHeight) {\r\n tableHeightVal.maxHeight = maxHeight;\r\n }\r\n if (this.options.tableBodyHeight) {\r\n tableHeightVal.height = this.options.tableBodyHeight;\r\n }\r\n\r\n const tableProps = this.options.setTableProps ? this.options.setTableProps() || {} : {};\r\n const tableClassNames = clsx(classes.tableRoot, tableProps.className);\r\n delete tableProps.className; // remove className from props to avoid the className being applied twice\r\n\r\n const dndProps = {};\r\n if (typeof window !== 'undefined') {\r\n dndProps.context = window;\r\n }\r\n\r\n return (\r\n \r\n {selectedRows.data.length > 0 && this.options.selectToolbarPlacement !== STP.NONE && (\r\n \r\n )}\r\n {(selectedRows.data.length === 0 ||\r\n [STP.ABOVE, STP.NONE].indexOf(this.options.selectToolbarPlacement) !== -1) &&\r\n showToolbar && (\r\n \r\n )}\r\n {\r\n if (c.customFilterListOptions && c.customFilterListOptions.render) return c.customFilterListOptions.render;\r\n // DEPRECATED: This option is being replaced with customFilterListOptions.render\r\n if (c.customFilterListRender) return c.customFilterListRender;\r\n\r\n return f => f;\r\n })}\r\n customFilterListUpdate={columns.map(c => {\r\n return c.customFilterListOptions && c.customFilterListOptions.update\r\n ? c.customFilterListOptions.update\r\n : null;\r\n })}\r\n filterList={filterList}\r\n filterUpdate={this.filterUpdate}\r\n columnNames={columnNames}\r\n />\r\n
\r\n {(this.options.resizableColumns === true ||\r\n (this.options.resizableColumns && this.options.resizableColumns.enabled)) && (\r\n (this.updateDividers = fn)}\r\n setResizeable={fn => (this.setHeadResizeable = fn)}\r\n options={this.props.options}\r\n tableId={this.options.tableId}\r\n />\r\n )}\r\n {(() => {\r\n const components = (\r\n (this.tableRef = el)}\r\n tabIndex={'0'}\r\n role={'grid'}\r\n className={tableClassNames}\r\n {...tableProps}>\r\n {title}\r\n \r\n \r\n {this.options.customTableBodyFooterRender\r\n ? this.options.customTableBodyFooterRender({\r\n data: displayData,\r\n count: rowCount,\r\n columns,\r\n selectedRows,\r\n selectableRows: this.options.selectableRows,\r\n })\r\n : null}\r\n \r\n );\r\n if (DragDropBackend) {\r\n return (\r\n \r\n {components}\r\n \r\n );\r\n }\r\n\r\n return components;\r\n })()}\r\n
\r\n \r\n
\r\n {announceText}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(defaultTableStyles, { name: 'MUIDataTable' })(MUIDataTable);\r\n","import React, { useEffect } from 'react';\r\nimport Grow from '@material-ui/core/Grow';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport ClearIcon from '@material-ui/icons/Clear';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nfunction debounce(func, wait, immediate) {\r\n var timeout;\r\n return function() {\r\n var context = this,\r\n args = arguments;\r\n var later = function() {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n}\r\n\r\nconst defaultStyles = theme => ({\r\n main: {\r\n display: 'flex',\r\n flex: '1 0 auto',\r\n },\r\n searchIcon: {\r\n color: theme.palette.text.secondary,\r\n marginTop: '10px',\r\n marginRight: '8px',\r\n },\r\n searchText: {\r\n flex: '0.8 0',\r\n },\r\n clearIcon: {\r\n '&:hover': {\r\n color: theme.palette.error.main,\r\n },\r\n },\r\n});\r\n\r\nclass _DebounceTableSearch extends React.Component {\r\n handleTextChangeWrapper = debouncedSearch => {\r\n return function(event) {\r\n debouncedSearch(event.target.value);\r\n };\r\n };\r\n\r\n componentDidMount() {\r\n document.addEventListener('keydown', this.onKeyDown, false);\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('keydown', this.onKeyDown, false);\r\n }\r\n\r\n onKeyDown = event => {\r\n if (event.keyCode === 27) {\r\n this.props.onHide();\r\n }\r\n };\r\n\r\n render() {\r\n const { classes, options, onHide, searchText, debounceWait } = this.props;\r\n\r\n const debouncedSearch = debounce(value => {\r\n this.props.onSearch(value);\r\n }, debounceWait);\r\n\r\n return (\r\n \r\n
\r\n \r\n (this.searchField = el)}\r\n placeholder={options.searchPlaceholder}\r\n {...(options.searchProps ? options.searchProps : {})}\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nvar DebounceTableSearch = withStyles(defaultStyles, { name: 'MUIDataTableSearch' })(_DebounceTableSearch);\r\nexport { DebounceTableSearch };\r\n\r\nexport function debounceSearchRender(debounceWait = 200) {\r\n return (searchText, handleSearch, hideSearch, options) => {\r\n return (\r\n \r\n );\r\n };\r\n}\r\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Based on Kendo UI Core expression code \n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function () {\n this._size = 0\n this._values = Object.create(null)\n}\nCache.prototype.get = function (key) {\n return this._values[key]\n}\nCache.prototype.set = function (key, value) {\n this._size >= this._maxSize && this.clear()\n if (!(key in this._values)) this._size++\n\n return (this._values[key] = value)\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\nvar config\n\nmodule.exports = {\n Cache: Cache,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: function (path) {\n var parts = normalizePath(path)\n\n return (\n setCache.get(path) ||\n setCache.set(path, function setter(obj, value) {\n var index = 0\n var len = parts.length\n var data = obj\n\n while (index < len - 1) {\n var part = parts[index]\n if (\n part === '__proto__' ||\n part === 'constructor' ||\n part === 'prototype'\n ) {\n return obj\n }\n\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n })\n )\n },\n\n getter: function (path, safe) {\n var parts = normalizePath(path)\n return (\n getCache.get(path) ||\n getCache.set(path, function getter(data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) data = data[parts[index++]]\n else return\n }\n return data\n })\n )\n },\n\n join: function (segments) {\n return segments.reduce(function (path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function (path, cb, thisArg) {\n forEach(Array.isArray(path) ? path : split(path), cb, thisArg)\n },\n}\n\nfunction normalizePath(path) {\n return (\n pathCache.get(path) ||\n pathCache.set(\n path,\n split(path).map(function (part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX)\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\n","// cheap lodash replacements\nexport function memoize(fn) {\n var result = null;\n\n var memoized = function memoized() {\n if (result == null) {\n result = fn();\n }\n\n return result;\n };\n\n return memoized;\n}\n/**\n * drop-in replacement for _.without\n */\n\nexport function without(items, item) {\n return items.filter(function (i) {\n return i !== item;\n });\n}\nexport function union(itemsA, itemsB) {\n var set = new Set();\n\n var insertItem = function insertItem(item) {\n return set.add(item);\n };\n\n itemsA.forEach(insertItem);\n itemsB.forEach(insertItem);\n var result = [];\n set.forEach(function (key) {\n return result.push(key);\n });\n return result;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { union, without } from './utils/js_utils';\nexport var EnterLeaveCounter = /*#__PURE__*/function () {\n function EnterLeaveCounter(isNodeInDocument) {\n _classCallCheck(this, EnterLeaveCounter);\n\n this.entered = [];\n this.isNodeInDocument = isNodeInDocument;\n }\n\n _createClass(EnterLeaveCounter, [{\n key: \"enter\",\n value: function enter(enteringNode) {\n var _this = this;\n\n var previousLength = this.entered.length;\n\n var isNodeEntered = function isNodeEntered(node) {\n return _this.isNodeInDocument(node) && (!node.contains || node.contains(enteringNode));\n };\n\n this.entered = union(this.entered.filter(isNodeEntered), [enteringNode]);\n return previousLength === 0 && this.entered.length > 0;\n }\n }, {\n key: \"leave\",\n value: function leave(leavingNode) {\n var previousLength = this.entered.length;\n this.entered = without(this.entered.filter(this.isNodeInDocument), leavingNode);\n return previousLength > 0 && this.entered.length === 0;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.entered = [];\n }\n }]);\n\n return EnterLeaveCounter;\n}();","import { memoize } from './utils/js_utils';\nexport var isFirefox = memoize(function () {\n return /firefox/i.test(navigator.userAgent);\n});\nexport var isSafari = memoize(function () {\n return Boolean(window.safari);\n});","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nexport var MonotonicInterpolant = /*#__PURE__*/function () {\n function MonotonicInterpolant(xs, ys) {\n _classCallCheck(this, MonotonicInterpolant);\n\n var length = xs.length; // Rearrange xs and ys so that xs is sorted\n\n var indexes = [];\n\n for (var i = 0; i < length; i++) {\n indexes.push(i);\n }\n\n indexes.sort(function (a, b) {\n return xs[a] < xs[b] ? -1 : 1;\n }); // Get consecutive differences and slopes\n\n var dys = [];\n var dxs = [];\n var ms = [];\n var dx;\n var dy;\n\n for (var _i = 0; _i < length - 1; _i++) {\n dx = xs[_i + 1] - xs[_i];\n dy = ys[_i + 1] - ys[_i];\n dxs.push(dx);\n dys.push(dy);\n ms.push(dy / dx);\n } // Get degree-1 coefficients\n\n\n var c1s = [ms[0]];\n\n for (var _i2 = 0; _i2 < dxs.length - 1; _i2++) {\n var m2 = ms[_i2];\n var mNext = ms[_i2 + 1];\n\n if (m2 * mNext <= 0) {\n c1s.push(0);\n } else {\n dx = dxs[_i2];\n var dxNext = dxs[_i2 + 1];\n var common = dx + dxNext;\n c1s.push(3 * common / ((common + dxNext) / m2 + (common + dx) / mNext));\n }\n }\n\n c1s.push(ms[ms.length - 1]); // Get degree-2 and degree-3 coefficients\n\n var c2s = [];\n var c3s = [];\n var m;\n\n for (var _i3 = 0; _i3 < c1s.length - 1; _i3++) {\n m = ms[_i3];\n var c1 = c1s[_i3];\n var invDx = 1 / dxs[_i3];\n\n var _common = c1 + c1s[_i3 + 1] - m - m;\n\n c2s.push((m - c1 - _common) * invDx);\n c3s.push(_common * invDx * invDx);\n }\n\n this.xs = xs;\n this.ys = ys;\n this.c1s = c1s;\n this.c2s = c2s;\n this.c3s = c3s;\n }\n\n _createClass(MonotonicInterpolant, [{\n key: \"interpolate\",\n value: function interpolate(x) {\n var xs = this.xs,\n ys = this.ys,\n c1s = this.c1s,\n c2s = this.c2s,\n c3s = this.c3s; // The rightmost point in the dataset should give an exact result\n\n var i = xs.length - 1;\n\n if (x === xs[i]) {\n return ys[i];\n } // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n\n\n var low = 0;\n var high = c3s.length - 1;\n var mid;\n\n while (low <= high) {\n mid = Math.floor(0.5 * (low + high));\n var xHere = xs[mid];\n\n if (xHere < x) {\n low = mid + 1;\n } else if (xHere > x) {\n high = mid - 1;\n } else {\n return ys[mid];\n }\n }\n\n i = Math.max(0, high); // Interpolate\n\n var diff = x - xs[i];\n var diffSq = diff * diff;\n return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n }\n }]);\n\n return MonotonicInterpolant;\n}();","import { isSafari, isFirefox } from './BrowserDetector';\nimport { MonotonicInterpolant } from './MonotonicInterpolant';\nvar ELEMENT_NODE = 1;\nexport function getNodeClientOffset(node) {\n var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n\n if (!el) {\n return null;\n }\n\n var _el$getBoundingClient = el.getBoundingClientRect(),\n top = _el$getBoundingClient.top,\n left = _el$getBoundingClient.left;\n\n return {\n x: left,\n y: top\n };\n}\nexport function getEventClientOffset(e) {\n return {\n x: e.clientX,\n y: e.clientY\n };\n}\n\nfunction isImageNode(node) {\n var _document$documentEle;\n\n return node.nodeName === 'IMG' && (isFirefox() || !((_document$documentEle = document.documentElement) === null || _document$documentEle === void 0 ? void 0 : _document$documentEle.contains(node)));\n}\n\nfunction getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight) {\n var dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n var dragPreviewHeight = isImage ? dragPreview.height : sourceHeight; // Work around @2x coordinate discrepancies in browsers\n\n if (isSafari() && isImage) {\n dragPreviewHeight /= window.devicePixelRatio;\n dragPreviewWidth /= window.devicePixelRatio;\n }\n\n return {\n dragPreviewWidth: dragPreviewWidth,\n dragPreviewHeight: dragPreviewHeight\n };\n}\n\nexport function getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint) {\n // The browsers will use the image intrinsic size under different conditions.\n // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n var isImage = isImageNode(dragPreview);\n var dragPreviewNode = isImage ? sourceNode : dragPreview;\n var dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n var offsetFromDragPreview = {\n x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n y: clientOffset.y - dragPreviewNodeOffsetFromClient.y\n };\n var sourceWidth = sourceNode.offsetWidth,\n sourceHeight = sourceNode.offsetHeight;\n var anchorX = anchorPoint.anchorX,\n anchorY = anchorPoint.anchorY;\n\n var _getDragPreviewSize = getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight),\n dragPreviewWidth = _getDragPreviewSize.dragPreviewWidth,\n dragPreviewHeight = _getDragPreviewSize.dragPreviewHeight;\n\n var calculateYOffset = function calculateYOffset() {\n var interpolantY = new MonotonicInterpolant([0, 0.5, 1], [// Dock to the top\n offsetFromDragPreview.y, // Align at the center\n offsetFromDragPreview.y / sourceHeight * dragPreviewHeight, // Dock to the bottom\n offsetFromDragPreview.y + dragPreviewHeight - sourceHeight]);\n var y = interpolantY.interpolate(anchorY); // Work around Safari 8 positioning bug\n\n if (isSafari() && isImage) {\n // We'll have to wait for @3x to see if this is entirely correct\n y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n }\n\n return y;\n };\n\n var calculateXOffset = function calculateXOffset() {\n // Interpolate coordinates depending on anchor point\n // If you know a simpler way to do this, let me know\n var interpolantX = new MonotonicInterpolant([0, 0.5, 1], [// Dock to the left\n offsetFromDragPreview.x, // Align at the center\n offsetFromDragPreview.x / sourceWidth * dragPreviewWidth, // Dock to the right\n offsetFromDragPreview.x + dragPreviewWidth - sourceWidth]);\n return interpolantX.interpolate(anchorX);\n }; // Force offsets if specified in the options.\n\n\n var offsetX = offsetPoint.offsetX,\n offsetY = offsetPoint.offsetY;\n var isManualOffsetX = offsetX === 0 || offsetX;\n var isManualOffsetY = offsetY === 0 || offsetY;\n return {\n x: isManualOffsetX ? offsetX : calculateXOffset(),\n y: isManualOffsetY ? offsetY : calculateYOffset()\n };\n}","export var FILE = '__NATIVE_FILE__';\nexport var URL = '__NATIVE_URL__';\nexport var TEXT = '__NATIVE_TEXT__';","var _nativeTypesConfig;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport * as NativeTypes from '../NativeTypes';\nimport { getDataFromDataTransfer } from './getDataFromDataTransfer';\nexport var nativeTypesConfig = (_nativeTypesConfig = {}, _defineProperty(_nativeTypesConfig, NativeTypes.FILE, {\n exposeProperties: {\n files: function files(dataTransfer) {\n return Array.prototype.slice.call(dataTransfer.files);\n },\n items: function items(dataTransfer) {\n return dataTransfer.items;\n }\n },\n matchesTypes: ['Files']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.URL, {\n exposeProperties: {\n urls: function urls(dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n');\n }\n },\n matchesTypes: ['Url', 'text/uri-list']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.TEXT, {\n exposeProperties: {\n text: function text(dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n }\n },\n matchesTypes: ['Text', 'text/plain']\n}), _nativeTypesConfig);","export function getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n var result = typesToTry.reduce(function (resultSoFar, typeToTry) {\n return resultSoFar || dataTransfer.getData(typeToTry);\n }, '');\n return result != null ? result : defaultValue;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nexport var NativeDragSource = /*#__PURE__*/function () {\n function NativeDragSource(config) {\n _classCallCheck(this, NativeDragSource);\n\n this.config = config;\n this.item = {};\n this.initializeExposedProperties();\n }\n\n _createClass(NativeDragSource, [{\n key: \"initializeExposedProperties\",\n value: function initializeExposedProperties() {\n var _this = this;\n\n Object.keys(this.config.exposeProperties).forEach(function (property) {\n Object.defineProperty(_this.item, property, {\n configurable: true,\n enumerable: true,\n get: function get() {\n // eslint-disable-next-line no-console\n console.warn(\"Browser doesn't allow reading \\\"\".concat(property, \"\\\" until the drop event.\"));\n return null;\n }\n });\n });\n }\n }, {\n key: \"loadDataTransfer\",\n value: function loadDataTransfer(dataTransfer) {\n var _this2 = this;\n\n if (dataTransfer) {\n var newProperties = {};\n Object.keys(this.config.exposeProperties).forEach(function (property) {\n newProperties[property] = {\n value: _this2.config.exposeProperties[property](dataTransfer, _this2.config.matchesTypes),\n configurable: true,\n enumerable: true\n };\n });\n Object.defineProperties(this.item, newProperties);\n }\n }\n }, {\n key: \"canDrag\",\n value: function canDrag() {\n return true;\n }\n }, {\n key: \"beginDrag\",\n value: function beginDrag() {\n return this.item;\n }\n }, {\n key: \"isDragging\",\n value: function isDragging(monitor, handle) {\n return handle === monitor.getSourceId();\n }\n }, {\n key: \"endDrag\",\n value: function endDrag() {// empty\n }\n }]);\n\n return NativeDragSource;\n}();","import { nativeTypesConfig } from './nativeTypesConfig';\nimport { NativeDragSource } from './NativeDragSource';\nexport function createNativeDragSource(type, dataTransfer) {\n var result = new NativeDragSource(nativeTypesConfig[type]);\n result.loadDataTransfer(dataTransfer);\n return result;\n}\nexport function matchNativeItemType(dataTransfer) {\n if (!dataTransfer) {\n return null;\n }\n\n var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n return Object.keys(nativeTypesConfig).filter(function (nativeItemType) {\n var matchesTypes = nativeTypesConfig[nativeItemType].matchesTypes;\n return matchesTypes.some(function (t) {\n return dataTransferTypes.indexOf(t) > -1;\n });\n })[0] || null;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nexport var OptionsReader = /*#__PURE__*/function () {\n function OptionsReader(globalContext) {\n _classCallCheck(this, OptionsReader);\n\n this.globalContext = globalContext;\n }\n\n _createClass(OptionsReader, [{\n key: \"window\",\n get: function get() {\n if (this.globalContext) {\n return this.globalContext;\n } else if (typeof window !== 'undefined') {\n return window;\n }\n\n return undefined;\n }\n }, {\n key: \"document\",\n get: function get() {\n if (this.window) {\n return this.window.document;\n }\n\n return undefined;\n }\n }]);\n\n return OptionsReader;\n}();","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { EnterLeaveCounter } from './EnterLeaveCounter';\nimport { isFirefox } from './BrowserDetector';\nimport { getNodeClientOffset, getEventClientOffset, getDragPreviewOffset } from './OffsetUtils';\nimport { createNativeDragSource, matchNativeItemType } from './NativeDragSources';\nimport * as NativeTypes from './NativeTypes';\nimport { OptionsReader } from './OptionsReader';\nexport var HTML5BackendImpl = /*#__PURE__*/function () {\n function HTML5BackendImpl(manager, globalContext) {\n var _this = this;\n\n _classCallCheck(this, HTML5BackendImpl);\n\n this.sourcePreviewNodes = new Map();\n this.sourcePreviewNodeOptions = new Map();\n this.sourceNodes = new Map();\n this.sourceNodeOptions = new Map();\n this.dragStartSourceIds = null;\n this.dropTargetIds = [];\n this.dragEnterTargetIds = [];\n this.currentNativeSource = null;\n this.currentNativeHandle = null;\n this.currentDragSourceNode = null;\n this.altKeyPressed = false;\n this.mouseMoveTimeoutTimer = null;\n this.asyncEndDragFrameId = null;\n this.dragOverTargetIds = null;\n\n this.getSourceClientOffset = function (sourceId) {\n var source = _this.sourceNodes.get(sourceId);\n\n return source && getNodeClientOffset(source) || null;\n };\n\n this.endDragNativeItem = function () {\n if (!_this.isDraggingNativeItem()) {\n return;\n }\n\n _this.actions.endDrag();\n\n if (_this.currentNativeHandle) {\n _this.registry.removeSource(_this.currentNativeHandle);\n }\n\n _this.currentNativeHandle = null;\n _this.currentNativeSource = null;\n };\n\n this.isNodeInDocument = function (node) {\n // Check the node either in the main document or in the current context\n return Boolean(node && _this.document && _this.document.body && document.body.contains(node));\n };\n\n this.endDragIfSourceWasRemovedFromDOM = function () {\n var node = _this.currentDragSourceNode;\n\n if (_this.isNodeInDocument(node)) {\n return;\n }\n\n if (_this.clearCurrentDragSourceNode()) {\n _this.actions.endDrag();\n }\n };\n\n this.handleTopDragStartCapture = function () {\n _this.clearCurrentDragSourceNode();\n\n _this.dragStartSourceIds = [];\n };\n\n this.handleTopDragStart = function (e) {\n if (e.defaultPrevented) {\n return;\n }\n\n var dragStartSourceIds = _this.dragStartSourceIds;\n _this.dragStartSourceIds = null;\n var clientOffset = getEventClientOffset(e); // Avoid crashing if we missed a drop event or our previous drag died\n\n if (_this.monitor.isDragging()) {\n _this.actions.endDrag();\n } // Don't publish the source just yet (see why below)\n\n\n _this.actions.beginDrag(dragStartSourceIds || [], {\n publishSource: false,\n getSourceClientOffset: _this.getSourceClientOffset,\n clientOffset: clientOffset\n });\n\n var dataTransfer = e.dataTransfer;\n var nativeType = matchNativeItemType(dataTransfer);\n\n if (_this.monitor.isDragging()) {\n if (dataTransfer && typeof dataTransfer.setDragImage === 'function') {\n // Use custom drag image if user specifies it.\n // If child drag source refuses drag but parent agrees,\n // use parent's node as drag image. Neither works in IE though.\n var sourceId = _this.monitor.getSourceId();\n\n var sourceNode = _this.sourceNodes.get(sourceId);\n\n var dragPreview = _this.sourcePreviewNodes.get(sourceId) || sourceNode;\n\n if (dragPreview) {\n var _this$getCurrentSourc = _this.getCurrentSourcePreviewNodeOptions(),\n anchorX = _this$getCurrentSourc.anchorX,\n anchorY = _this$getCurrentSourc.anchorY,\n offsetX = _this$getCurrentSourc.offsetX,\n offsetY = _this$getCurrentSourc.offsetY;\n\n var anchorPoint = {\n anchorX: anchorX,\n anchorY: anchorY\n };\n var offsetPoint = {\n offsetX: offsetX,\n offsetY: offsetY\n };\n var dragPreviewOffset = getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint);\n dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n }\n }\n\n try {\n // Firefox won't drag without setting data\n dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.setData('application/json', {});\n } catch (err) {} // IE doesn't support MIME types in setData\n // Store drag source node so we can check whether\n // it is removed from DOM and trigger endDrag manually.\n\n\n _this.setCurrentDragSourceNode(e.target); // Now we are ready to publish the drag source.. or are we not?\n\n\n var _this$getCurrentSourc2 = _this.getCurrentSourcePreviewNodeOptions(),\n captureDraggingState = _this$getCurrentSourc2.captureDraggingState;\n\n if (!captureDraggingState) {\n // Usually we want to publish it in the next tick so that browser\n // is able to screenshot the current (not yet dragging) state.\n //\n // It also neatly avoids a situation where render() returns null\n // in the same tick for the source element, and browser freaks out.\n setTimeout(function () {\n return _this.actions.publishDragSource();\n }, 0);\n } else {\n // In some cases the user may want to override this behavior, e.g.\n // to work around IE not supporting custom drag previews.\n //\n // When using a custom drag layer, the only way to prevent\n // the default drag preview from drawing in IE is to screenshot\n // the dragging state in which the node itself has zero opacity\n // and height. In this case, though, returning null from render()\n // will abruptly end the dragging, which is not obvious.\n //\n // This is the reason such behavior is strictly opt-in.\n _this.actions.publishDragSource();\n }\n } else if (nativeType) {\n // A native item (such as URL) dragged from inside the document\n _this.beginDragNativeItem(nativeType);\n } else if (dataTransfer && !dataTransfer.types && (e.target && !e.target.hasAttribute || !e.target.hasAttribute('draggable'))) {\n // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n // Just let it drag. It's a native type (URL or text) and will be picked up in\n // dragenter handler.\n return;\n } else {\n // If by this time no drag source reacted, tell browser not to drag.\n e.preventDefault();\n }\n };\n\n this.handleTopDragEndCapture = function () {\n if (_this.clearCurrentDragSourceNode()) {\n // Firefox can dispatch this event in an infinite loop\n // if dragend handler does something like showing an alert.\n // Only proceed if we have not handled it already.\n _this.actions.endDrag();\n }\n };\n\n this.handleTopDragEnterCapture = function (e) {\n _this.dragEnterTargetIds = [];\n\n var isFirstEnter = _this.enterLeaveCounter.enter(e.target);\n\n if (!isFirstEnter || _this.monitor.isDragging()) {\n return;\n }\n\n var dataTransfer = e.dataTransfer;\n var nativeType = matchNativeItemType(dataTransfer);\n\n if (nativeType) {\n // A native item (such as file or URL) dragged from outside the document\n _this.beginDragNativeItem(nativeType, dataTransfer);\n }\n };\n\n this.handleTopDragEnter = function (e) {\n var dragEnterTargetIds = _this.dragEnterTargetIds;\n _this.dragEnterTargetIds = [];\n\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n return;\n }\n\n _this.altKeyPressed = e.altKey;\n\n if (!isFirefox()) {\n // Don't emit hover in `dragenter` on Firefox due to an edge case.\n // If the target changes position as the result of `dragenter`, Firefox\n // will still happily dispatch `dragover` despite target being no longer\n // there. The easy solution is to only fire `hover` in `dragover` on FF.\n _this.actions.hover(dragEnterTargetIds, {\n clientOffset: getEventClientOffset(e)\n });\n }\n\n var canDrop = dragEnterTargetIds.some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n\n if (canDrop) {\n // IE requires this to fire dragover events\n e.preventDefault();\n\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n }\n };\n\n this.handleTopDragOverCapture = function () {\n _this.dragOverTargetIds = [];\n };\n\n this.handleTopDragOver = function (e) {\n var dragOverTargetIds = _this.dragOverTargetIds;\n _this.dragOverTargetIds = [];\n\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n // Prevent default \"drop and blow away the whole document\" action.\n e.preventDefault();\n\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = 'none';\n }\n\n return;\n }\n\n _this.altKeyPressed = e.altKey;\n\n _this.actions.hover(dragOverTargetIds || [], {\n clientOffset: getEventClientOffset(e)\n });\n\n var canDrop = (dragOverTargetIds || []).some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n\n if (canDrop) {\n // Show user-specified drop effect.\n e.preventDefault();\n\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n } else if (_this.isDraggingNativeItem()) {\n // Don't show a nice cursor but still prevent default\n // \"drop and blow away the whole document\" action.\n e.preventDefault();\n } else {\n e.preventDefault();\n\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = 'none';\n }\n }\n };\n\n this.handleTopDragLeaveCapture = function (e) {\n if (_this.isDraggingNativeItem()) {\n e.preventDefault();\n }\n\n var isLastLeave = _this.enterLeaveCounter.leave(e.target);\n\n if (!isLastLeave) {\n return;\n }\n\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n };\n\n this.handleTopDropCapture = function (e) {\n _this.dropTargetIds = [];\n e.preventDefault();\n\n if (_this.isDraggingNativeItem()) {\n var _this$currentNativeSo;\n\n (_this$currentNativeSo = _this.currentNativeSource) === null || _this$currentNativeSo === void 0 ? void 0 : _this$currentNativeSo.loadDataTransfer(e.dataTransfer);\n }\n\n _this.enterLeaveCounter.reset();\n };\n\n this.handleTopDrop = function (e) {\n var dropTargetIds = _this.dropTargetIds;\n _this.dropTargetIds = [];\n\n _this.actions.hover(dropTargetIds, {\n clientOffset: getEventClientOffset(e)\n });\n\n _this.actions.drop({\n dropEffect: _this.getCurrentDropEffect()\n });\n\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n } else {\n _this.endDragIfSourceWasRemovedFromDOM();\n }\n };\n\n this.handleSelectStart = function (e) {\n var target = e.target; // Only IE requires us to explicitly say\n // we want drag drop operation to start\n\n if (typeof target.dragDrop !== 'function') {\n return;\n } // Inputs and textareas should be selectable\n\n\n if (target.tagName === 'INPUT' || target.tagName === 'SELECT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return;\n } // For other targets, ask IE\n // to enable drag and drop\n\n\n e.preventDefault();\n target.dragDrop();\n };\n\n this.options = new OptionsReader(globalContext);\n this.actions = manager.getActions();\n this.monitor = manager.getMonitor();\n this.registry = manager.getRegistry();\n this.enterLeaveCounter = new EnterLeaveCounter(this.isNodeInDocument);\n }\n /**\n * Generate profiling statistics for the HTML5Backend.\n */\n\n\n _createClass(HTML5BackendImpl, [{\n key: \"profile\",\n value: function profile() {\n var _this$dragStartSource, _this$dragOverTargetI;\n\n return {\n sourcePreviewNodes: this.sourcePreviewNodes.size,\n sourcePreviewNodeOptions: this.sourcePreviewNodeOptions.size,\n sourceNodeOptions: this.sourceNodeOptions.size,\n sourceNodes: this.sourceNodes.size,\n dragStartSourceIds: ((_this$dragStartSource = this.dragStartSourceIds) === null || _this$dragStartSource === void 0 ? void 0 : _this$dragStartSource.length) || 0,\n dropTargetIds: this.dropTargetIds.length,\n dragEnterTargetIds: this.dragEnterTargetIds.length,\n dragOverTargetIds: ((_this$dragOverTargetI = this.dragOverTargetIds) === null || _this$dragOverTargetI === void 0 ? void 0 : _this$dragOverTargetI.length) || 0\n };\n } // public for test\n\n }, {\n key: \"setup\",\n value: function setup() {\n if (this.window === undefined) {\n return;\n }\n\n if (this.window.__isReactDndBackendSetUp) {\n throw new Error('Cannot have two HTML5 backends at the same time.');\n }\n\n this.window.__isReactDndBackendSetUp = true;\n this.addEventListeners(this.window);\n }\n }, {\n key: \"teardown\",\n value: function teardown() {\n if (this.window === undefined) {\n return;\n }\n\n this.window.__isReactDndBackendSetUp = false;\n this.removeEventListeners(this.window);\n this.clearCurrentDragSourceNode();\n\n if (this.asyncEndDragFrameId) {\n this.window.cancelAnimationFrame(this.asyncEndDragFrameId);\n }\n }\n }, {\n key: \"connectDragPreview\",\n value: function connectDragPreview(sourceId, node, options) {\n var _this2 = this;\n\n this.sourcePreviewNodeOptions.set(sourceId, options);\n this.sourcePreviewNodes.set(sourceId, node);\n return function () {\n _this2.sourcePreviewNodes.delete(sourceId);\n\n _this2.sourcePreviewNodeOptions.delete(sourceId);\n };\n }\n }, {\n key: \"connectDragSource\",\n value: function connectDragSource(sourceId, node, options) {\n var _this3 = this;\n\n this.sourceNodes.set(sourceId, node);\n this.sourceNodeOptions.set(sourceId, options);\n\n var handleDragStart = function handleDragStart(e) {\n return _this3.handleDragStart(e, sourceId);\n };\n\n var handleSelectStart = function handleSelectStart(e) {\n return _this3.handleSelectStart(e);\n };\n\n node.setAttribute('draggable', 'true');\n node.addEventListener('dragstart', handleDragStart);\n node.addEventListener('selectstart', handleSelectStart);\n return function () {\n _this3.sourceNodes.delete(sourceId);\n\n _this3.sourceNodeOptions.delete(sourceId);\n\n node.removeEventListener('dragstart', handleDragStart);\n node.removeEventListener('selectstart', handleSelectStart);\n node.setAttribute('draggable', 'false');\n };\n }\n }, {\n key: \"connectDropTarget\",\n value: function connectDropTarget(targetId, node) {\n var _this4 = this;\n\n var handleDragEnter = function handleDragEnter(e) {\n return _this4.handleDragEnter(e, targetId);\n };\n\n var handleDragOver = function handleDragOver(e) {\n return _this4.handleDragOver(e, targetId);\n };\n\n var handleDrop = function handleDrop(e) {\n return _this4.handleDrop(e, targetId);\n };\n\n node.addEventListener('dragenter', handleDragEnter);\n node.addEventListener('dragover', handleDragOver);\n node.addEventListener('drop', handleDrop);\n return function () {\n node.removeEventListener('dragenter', handleDragEnter);\n node.removeEventListener('dragover', handleDragOver);\n node.removeEventListener('drop', handleDrop);\n };\n }\n }, {\n key: \"addEventListeners\",\n value: function addEventListeners(target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.addEventListener) {\n return;\n }\n\n target.addEventListener('dragstart', this.handleTopDragStart);\n target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n target.addEventListener('dragenter', this.handleTopDragEnter);\n target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.addEventListener('dragover', this.handleTopDragOver);\n target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n target.addEventListener('drop', this.handleTopDrop);\n target.addEventListener('drop', this.handleTopDropCapture, true);\n }\n }, {\n key: \"removeEventListeners\",\n value: function removeEventListeners(target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.removeEventListener) {\n return;\n }\n\n target.removeEventListener('dragstart', this.handleTopDragStart);\n target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n target.removeEventListener('dragenter', this.handleTopDragEnter);\n target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.removeEventListener('dragover', this.handleTopDragOver);\n target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n target.removeEventListener('drop', this.handleTopDrop);\n target.removeEventListener('drop', this.handleTopDropCapture, true);\n }\n }, {\n key: \"getCurrentSourceNodeOptions\",\n value: function getCurrentSourceNodeOptions() {\n var sourceId = this.monitor.getSourceId();\n var sourceNodeOptions = this.sourceNodeOptions.get(sourceId);\n return _objectSpread({\n dropEffect: this.altKeyPressed ? 'copy' : 'move'\n }, sourceNodeOptions || {});\n }\n }, {\n key: \"getCurrentDropEffect\",\n value: function getCurrentDropEffect() {\n if (this.isDraggingNativeItem()) {\n // It makes more sense to default to 'copy' for native resources\n return 'copy';\n }\n\n return this.getCurrentSourceNodeOptions().dropEffect;\n }\n }, {\n key: \"getCurrentSourcePreviewNodeOptions\",\n value: function getCurrentSourcePreviewNodeOptions() {\n var sourceId = this.monitor.getSourceId();\n var sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId);\n return _objectSpread({\n anchorX: 0.5,\n anchorY: 0.5,\n captureDraggingState: false\n }, sourcePreviewNodeOptions || {});\n }\n }, {\n key: \"isDraggingNativeItem\",\n value: function isDraggingNativeItem() {\n var itemType = this.monitor.getItemType();\n return Object.keys(NativeTypes).some(function (key) {\n return NativeTypes[key] === itemType;\n });\n }\n }, {\n key: \"beginDragNativeItem\",\n value: function beginDragNativeItem(type, dataTransfer) {\n this.clearCurrentDragSourceNode();\n this.currentNativeSource = createNativeDragSource(type, dataTransfer);\n this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n this.actions.beginDrag([this.currentNativeHandle]);\n }\n }, {\n key: \"setCurrentDragSourceNode\",\n value: function setCurrentDragSourceNode(node) {\n var _this5 = this;\n\n this.clearCurrentDragSourceNode();\n this.currentDragSourceNode = node; // A timeout of > 0 is necessary to resolve Firefox issue referenced\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n\n var MOUSE_MOVE_TIMEOUT = 1000; // Receiving a mouse event in the middle of a dragging operation\n // means it has ended and the drag source node disappeared from DOM,\n // so the browser didn't dispatch the dragend event.\n //\n // We need to wait before we start listening for mousemove events.\n // This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n // immediately in some browsers.\n //\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n //\n\n this.mouseMoveTimeoutTimer = setTimeout(function () {\n return _this5.window && _this5.window.addEventListener('mousemove', _this5.endDragIfSourceWasRemovedFromDOM, true);\n }, MOUSE_MOVE_TIMEOUT);\n }\n }, {\n key: \"clearCurrentDragSourceNode\",\n value: function clearCurrentDragSourceNode() {\n if (this.currentDragSourceNode) {\n this.currentDragSourceNode = null;\n\n if (this.window) {\n this.window.clearTimeout(this.mouseMoveTimeoutTimer || undefined);\n this.window.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n }\n\n this.mouseMoveTimeoutTimer = null;\n return true;\n }\n\n return false;\n }\n }, {\n key: \"handleDragStart\",\n value: function handleDragStart(e, sourceId) {\n if (e.defaultPrevented) {\n return;\n }\n\n if (!this.dragStartSourceIds) {\n this.dragStartSourceIds = [];\n }\n\n this.dragStartSourceIds.unshift(sourceId);\n }\n }, {\n key: \"handleDragEnter\",\n value: function handleDragEnter(e, targetId) {\n this.dragEnterTargetIds.unshift(targetId);\n }\n }, {\n key: \"handleDragOver\",\n value: function handleDragOver(e, targetId) {\n if (this.dragOverTargetIds === null) {\n this.dragOverTargetIds = [];\n }\n\n this.dragOverTargetIds.unshift(targetId);\n }\n }, {\n key: \"handleDrop\",\n value: function handleDrop(e, targetId) {\n this.dropTargetIds.unshift(targetId);\n }\n }, {\n key: \"window\",\n get: function get() {\n return this.options.window;\n }\n }, {\n key: \"document\",\n get: function get() {\n return this.options.document;\n }\n }]);\n\n return HTML5BackendImpl;\n}();","var emptyImage;\nexport function getEmptyImage() {\n if (!emptyImage) {\n emptyImage = new Image();\n emptyImage.src = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n }\n\n return emptyImage;\n}","import { HTML5BackendImpl } from './HTML5BackendImpl';\nimport * as NativeTypes from './NativeTypes';\nexport { getEmptyImage } from './getEmptyImage';\nexport { NativeTypes };\nexport var HTML5Backend = function createBackend(manager, context) {\n return new HTML5BackendImpl(manager, context);\n};","export var INIT_COORDS = 'dnd-core/INIT_COORDS';\nexport var BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nexport var PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nexport var HOVER = 'dnd-core/HOVER';\nexport var DROP = 'dnd-core/DROP';\nexport var END_DRAG = 'dnd-core/END_DRAG';","export var strictEquality = function strictEquality(a, b) {\n return a === b;\n};\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\n\nexport function areCoordsEqual(offsetA, offsetB) {\n if (!offsetA && !offsetB) {\n return true;\n } else if (!offsetA || !offsetB) {\n return false;\n } else {\n return offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n }\n}\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\n\nexport function areArraysEqual(a, b) {\n var isEqual = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : strictEquality;\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (var i = 0; i < a.length; ++i) {\n if (!isEqual(a[i], b[i])) {\n return false;\n }\n }\n\n return true;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { INIT_COORDS, BEGIN_DRAG, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { areCoordsEqual } from '../utils/equality';\nvar initialState = {\n initialSourceClientOffset: null,\n initialClientOffset: null,\n clientOffset: null\n};\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var payload = action.payload;\n\n switch (action.type) {\n case INIT_COORDS:\n case BEGIN_DRAG:\n return {\n initialSourceClientOffset: payload.sourceClientOffset,\n initialClientOffset: payload.clientOffset,\n clientOffset: payload.clientOffset\n };\n\n case HOVER:\n if (areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n return state;\n }\n\n return _objectSpread(_objectSpread({}, state), {}, {\n clientOffset: payload.clientOffset\n });\n\n case END_DRAG:\n case DROP:\n return initialState;\n\n default:\n return state;\n }\n}","export var ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nexport var ADD_TARGET = 'dnd-core/ADD_TARGET';\nexport var REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nexport var REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\nexport function addSource(sourceId) {\n return {\n type: ADD_SOURCE,\n payload: {\n sourceId: sourceId\n }\n };\n}\nexport function addTarget(targetId) {\n return {\n type: ADD_TARGET,\n payload: {\n targetId: targetId\n }\n };\n}\nexport function removeSource(sourceId) {\n return {\n type: REMOVE_SOURCE,\n payload: {\n sourceId: sourceId\n }\n };\n}\nexport function removeTarget(targetId) {\n return {\n type: REMOVE_TARGET,\n payload: {\n targetId: targetId\n }\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// cheap lodash replacements\n\n/**\n * drop-in replacement for _.get\n * @param obj\n * @param path\n * @param defaultValue\n */\nexport function get(obj, path, defaultValue) {\n return path.split('.').reduce(function (a, c) {\n return a && a[c] ? a[c] : defaultValue || null;\n }, obj);\n}\n/**\n * drop-in replacement for _.without\n */\n\nexport function without(items, item) {\n return items.filter(function (i) {\n return i !== item;\n });\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nexport function isString(input) {\n return typeof input === 'string';\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nexport function isObject(input) {\n return _typeof(input) === 'object';\n}\n/**\n * repalcement for _.xor\n * @param itemsA\n * @param itemsB\n */\n\nexport function xor(itemsA, itemsB) {\n var map = new Map();\n\n var insertItem = function insertItem(item) {\n map.set(item, map.has(item) ? map.get(item) + 1 : 1);\n };\n\n itemsA.forEach(insertItem);\n itemsB.forEach(insertItem);\n var result = [];\n map.forEach(function (count, key) {\n if (count === 1) {\n result.push(key);\n }\n });\n return result;\n}\n/**\n * replacement for _.intersection\n * @param itemsA\n * @param itemsB\n */\n\nexport function intersection(itemsA, itemsB) {\n return itemsA.filter(function (t) {\n return itemsB.indexOf(t) > -1;\n });\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { BEGIN_DRAG, PUBLISH_DRAG_SOURCE, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { REMOVE_TARGET } from '../actions/registry';\nimport { without } from '../utils/js_utils';\nvar initialState = {\n itemType: null,\n item: null,\n sourceId: null,\n targetIds: [],\n dropResult: null,\n didDrop: false,\n isSourcePublic: null\n};\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var payload = action.payload;\n\n switch (action.type) {\n case BEGIN_DRAG:\n return _objectSpread(_objectSpread({}, state), {}, {\n itemType: payload.itemType,\n item: payload.item,\n sourceId: payload.sourceId,\n isSourcePublic: payload.isSourcePublic,\n dropResult: null,\n didDrop: false\n });\n\n case PUBLISH_DRAG_SOURCE:\n return _objectSpread(_objectSpread({}, state), {}, {\n isSourcePublic: true\n });\n\n case HOVER:\n return _objectSpread(_objectSpread({}, state), {}, {\n targetIds: payload.targetIds\n });\n\n case REMOVE_TARGET:\n if (state.targetIds.indexOf(payload.targetId) === -1) {\n return state;\n }\n\n return _objectSpread(_objectSpread({}, state), {}, {\n targetIds: without(state.targetIds, payload.targetId)\n });\n\n case DROP:\n return _objectSpread(_objectSpread({}, state), {}, {\n dropResult: payload.dropResult,\n didDrop: true,\n targetIds: []\n });\n\n case END_DRAG:\n return _objectSpread(_objectSpread({}, state), {}, {\n itemType: null,\n item: null,\n sourceId: null,\n dropResult: null,\n didDrop: false,\n isSourcePublic: null,\n targetIds: []\n });\n\n default:\n return state;\n }\n}","import { ADD_SOURCE, ADD_TARGET, REMOVE_SOURCE, REMOVE_TARGET } from '../actions/registry';\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case ADD_SOURCE:\n case ADD_TARGET:\n return state + 1;\n\n case REMOVE_SOURCE:\n case REMOVE_TARGET:\n return state - 1;\n\n default:\n return state;\n }\n}","import { intersection } from './js_utils';\nexport var NONE = [];\nexport var ALL = [];\nNONE.__IS_NONE__ = true;\nALL.__IS_ALL__ = true;\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\n\nexport function areDirty(dirtyIds, handlerIds) {\n if (dirtyIds === NONE) {\n return false;\n }\n\n if (dirtyIds === ALL || typeof handlerIds === 'undefined') {\n return true;\n }\n\n var commonIds = intersection(handlerIds, dirtyIds);\n return commonIds.length > 0;\n}","import { BEGIN_DRAG, PUBLISH_DRAG_SOURCE, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { ADD_SOURCE, ADD_TARGET, REMOVE_SOURCE, REMOVE_TARGET } from '../actions/registry';\nimport { areArraysEqual } from '../utils/equality';\nimport { NONE, ALL } from '../utils/dirtiness';\nimport { xor } from '../utils/js_utils';\nexport function reduce() {\n var _state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : NONE;\n\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case HOVER:\n break;\n\n case ADD_SOURCE:\n case ADD_TARGET:\n case REMOVE_TARGET:\n case REMOVE_SOURCE:\n return NONE;\n\n case BEGIN_DRAG:\n case PUBLISH_DRAG_SOURCE:\n case END_DRAG:\n case DROP:\n default:\n return ALL;\n }\n\n var _action$payload = action.payload,\n _action$payload$targe = _action$payload.targetIds,\n targetIds = _action$payload$targe === void 0 ? [] : _action$payload$targe,\n _action$payload$prevT = _action$payload.prevTargetIds,\n prevTargetIds = _action$payload$prevT === void 0 ? [] : _action$payload$prevT;\n var result = xor(targetIds, prevTargetIds);\n var didChange = result.length > 0 || !areArraysEqual(targetIds, prevTargetIds);\n\n if (!didChange) {\n return NONE;\n } // Check the target ids at the innermost position. If they are valid, add them\n // to the result\n\n\n var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n var innermostTargetId = targetIds[targetIds.length - 1];\n\n if (prevInnermostTargetId !== innermostTargetId) {\n if (prevInnermostTargetId) {\n result.push(prevInnermostTargetId);\n }\n\n if (innermostTargetId) {\n result.push(innermostTargetId);\n }\n }\n\n return result;\n}","export function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return state + 1;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { reduce as dragOffset } from './dragOffset';\nimport { reduce as dragOperation } from './dragOperation';\nimport { reduce as refCount } from './refCount';\nimport { reduce as dirtyHandlerIds } from './dirtyHandlerIds';\nimport { reduce as stateId } from './stateId';\nimport { get } from '../utils/js_utils';\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments.length > 1 ? arguments[1] : undefined;\n return {\n dirtyHandlerIds: dirtyHandlerIds(state.dirtyHandlerIds, {\n type: action.type,\n payload: _objectSpread(_objectSpread({}, action.payload), {}, {\n prevTargetIds: get(state, 'dragOperation.targetIds', [])\n })\n }),\n dragOffset: dragOffset(state.dragOffset, action),\n refCount: refCount(state.refCount, action),\n dragOperation: dragOperation(state.dragOperation, action),\n stateId: stateId(state.stateId)\n };\n}","import { INIT_COORDS } from '../types';\nexport function setClientOffset(clientOffset, sourceClientOffset) {\n return {\n type: INIT_COORDS,\n payload: {\n sourceClientOffset: sourceClientOffset || null,\n clientOffset: clientOffset || null\n }\n };\n}","import { invariant } from '@react-dnd/invariant';\nimport { setClientOffset } from './local/setClientOffset';\nimport { isObject } from '../../utils/js_utils';\nimport { BEGIN_DRAG, INIT_COORDS } from './types';\nvar ResetCoordinatesAction = {\n type: INIT_COORDS,\n payload: {\n clientOffset: null,\n sourceClientOffset: null\n }\n};\nexport function createBeginDrag(manager) {\n return function beginDrag() {\n var sourceIds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n publishSource: true\n };\n var _options$publishSourc = options.publishSource,\n publishSource = _options$publishSourc === void 0 ? true : _options$publishSourc,\n clientOffset = options.clientOffset,\n getSourceClientOffset = options.getSourceClientOffset;\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry(); // Initialize the coordinates using the client offset\n\n manager.dispatch(setClientOffset(clientOffset));\n verifyInvariants(sourceIds, monitor, registry); // Get the draggable source\n\n var sourceId = getDraggableSource(sourceIds, monitor);\n\n if (sourceId === null) {\n manager.dispatch(ResetCoordinatesAction);\n return;\n } // Get the source client offset\n\n\n var sourceClientOffset = null;\n\n if (clientOffset) {\n if (!getSourceClientOffset) {\n throw new Error('getSourceClientOffset must be defined');\n }\n\n verifyGetSourceClientOffsetIsFunction(getSourceClientOffset);\n sourceClientOffset = getSourceClientOffset(sourceId);\n } // Initialize the full coordinates\n\n\n manager.dispatch(setClientOffset(clientOffset, sourceClientOffset));\n var source = registry.getSource(sourceId);\n var item = source.beginDrag(monitor, sourceId);\n verifyItemIsObject(item);\n registry.pinSource(sourceId);\n var itemType = registry.getSourceType(sourceId);\n return {\n type: BEGIN_DRAG,\n payload: {\n itemType: itemType,\n item: item,\n sourceId: sourceId,\n clientOffset: clientOffset || null,\n sourceClientOffset: sourceClientOffset || null,\n isSourcePublic: !!publishSource\n }\n };\n };\n}\n\nfunction verifyInvariants(sourceIds, monitor, registry) {\n invariant(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n sourceIds.forEach(function (sourceId) {\n invariant(registry.getSource(sourceId), 'Expected sourceIds to be registered.');\n });\n}\n\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset) {\n invariant(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n}\n\nfunction verifyItemIsObject(item) {\n invariant(isObject(item), 'Item must be an object.');\n}\n\nfunction getDraggableSource(sourceIds, monitor) {\n var sourceId = null;\n\n for (var i = sourceIds.length - 1; i >= 0; i--) {\n if (monitor.canDragSource(sourceIds[i])) {\n sourceId = sourceIds[i];\n break;\n }\n }\n\n return sourceId;\n}","import { PUBLISH_DRAG_SOURCE } from './types';\nexport function createPublishDragSource(manager) {\n return function publishDragSource() {\n var monitor = manager.getMonitor();\n\n if (monitor.isDragging()) {\n return {\n type: PUBLISH_DRAG_SOURCE\n };\n }\n };\n}","export function matchesType(targetType, draggedItemType) {\n if (draggedItemType === null) {\n return targetType === null;\n }\n\n return Array.isArray(targetType) ? targetType.some(function (t) {\n return t === draggedItemType;\n }) : targetType === draggedItemType;\n}","import { invariant } from '@react-dnd/invariant';\nimport { matchesType } from '../../utils/matchesType';\nimport { HOVER } from './types';\nexport function createHover(manager) {\n return function hover(targetIdsArg) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n clientOffset = _ref.clientOffset;\n\n verifyTargetIdsIsArray(targetIdsArg);\n var targetIds = targetIdsArg.slice(0);\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n checkInvariants(targetIds, monitor, registry);\n var draggedItemType = monitor.getItemType();\n removeNonMatchingTargetIds(targetIds, registry, draggedItemType);\n hoverAllTargets(targetIds, monitor, registry);\n return {\n type: HOVER,\n payload: {\n targetIds: targetIds,\n clientOffset: clientOffset || null\n }\n };\n };\n}\n\nfunction verifyTargetIdsIsArray(targetIdsArg) {\n invariant(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.');\n}\n\nfunction checkInvariants(targetIds, monitor, registry) {\n invariant(monitor.isDragging(), 'Cannot call hover while not dragging.');\n invariant(!monitor.didDrop(), 'Cannot call hover after drop.');\n\n for (var i = 0; i < targetIds.length; i++) {\n var targetId = targetIds[i];\n invariant(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n var target = registry.getTarget(targetId);\n invariant(target, 'Expected targetIds to be registered.');\n }\n}\n\nfunction removeNonMatchingTargetIds(targetIds, registry, draggedItemType) {\n // Remove those targetIds that don't match the targetType. This\n // fixes shallow isOver which would only be non-shallow because of\n // non-matching targets.\n for (var i = targetIds.length - 1; i >= 0; i--) {\n var targetId = targetIds[i];\n var targetType = registry.getTargetType(targetId);\n\n if (!matchesType(targetType, draggedItemType)) {\n targetIds.splice(i, 1);\n }\n }\n}\n\nfunction hoverAllTargets(targetIds, monitor, registry) {\n // Finally call hover on all matching targets.\n targetIds.forEach(function (targetId) {\n var target = registry.getTarget(targetId);\n target.hover(monitor, targetId);\n });\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { DROP } from './types';\nimport { isObject } from '../../utils/js_utils';\nexport function createDrop(manager) {\n return function drop() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyInvariants(monitor);\n var targetIds = getDroppableTargets(monitor); // Multiple actions are dispatched here, which is why this doesn't return an action\n\n targetIds.forEach(function (targetId, index) {\n var dropResult = determineDropResult(targetId, index, registry, monitor);\n var action = {\n type: DROP,\n payload: {\n dropResult: _objectSpread(_objectSpread({}, options), dropResult)\n }\n };\n manager.dispatch(action);\n });\n };\n}\n\nfunction verifyInvariants(monitor) {\n invariant(monitor.isDragging(), 'Cannot call drop while not dragging.');\n invariant(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n}\n\nfunction determineDropResult(targetId, index, registry, monitor) {\n var target = registry.getTarget(targetId);\n var dropResult = target ? target.drop(monitor, targetId) : undefined;\n verifyDropResultType(dropResult);\n\n if (typeof dropResult === 'undefined') {\n dropResult = index === 0 ? {} : monitor.getDropResult();\n }\n\n return dropResult;\n}\n\nfunction verifyDropResultType(dropResult) {\n invariant(typeof dropResult === 'undefined' || isObject(dropResult), 'Drop result must either be an object or undefined.');\n}\n\nfunction getDroppableTargets(monitor) {\n var targetIds = monitor.getTargetIds().filter(monitor.canDropOnTarget, monitor);\n targetIds.reverse();\n return targetIds;\n}","import { invariant } from '@react-dnd/invariant';\nimport { END_DRAG } from './types';\nexport function createEndDrag(manager) {\n return function endDrag() {\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyIsDragging(monitor);\n var sourceId = monitor.getSourceId();\n\n if (sourceId != null) {\n var source = registry.getSource(sourceId, true);\n source.endDrag(monitor, sourceId);\n registry.unpinSource();\n }\n\n return {\n type: END_DRAG\n };\n };\n}\n\nfunction verifyIsDragging(monitor) {\n invariant(monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n}","/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function add(a, b) {\n return {\n x: a.x + b.x,\n y: a.y + b.y\n };\n}\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\n\nexport function subtract(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y\n };\n}\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\n\nexport function getSourceClientOffset(state) {\n var clientOffset = state.clientOffset,\n initialClientOffset = state.initialClientOffset,\n initialSourceClientOffset = state.initialSourceClientOffset;\n\n if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n return null;\n }\n\n return subtract(add(clientOffset, initialSourceClientOffset), initialClientOffset);\n}\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\n\nexport function getDifferenceFromInitialOffset(state) {\n var clientOffset = state.clientOffset,\n initialClientOffset = state.initialClientOffset;\n\n if (!clientOffset || !initialClientOffset) {\n return null;\n }\n\n return subtract(clientOffset, initialClientOffset);\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { matchesType } from './utils/matchesType';\nimport { getSourceClientOffset as _getSourceClientOffset, getDifferenceFromInitialOffset as _getDifferenceFromInitialOffset } from './utils/coords';\nimport { areDirty } from './utils/dirtiness';\nexport var DragDropMonitorImpl = /*#__PURE__*/function () {\n function DragDropMonitorImpl(store, registry) {\n _classCallCheck(this, DragDropMonitorImpl);\n\n this.store = store;\n this.registry = registry;\n }\n\n _createClass(DragDropMonitorImpl, [{\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n handlerIds: undefined\n };\n var handlerIds = options.handlerIds;\n invariant(typeof listener === 'function', 'listener must be a function.');\n invariant(typeof handlerIds === 'undefined' || Array.isArray(handlerIds), 'handlerIds, when specified, must be an array of strings.');\n var prevStateId = this.store.getState().stateId;\n\n var handleChange = function handleChange() {\n var state = _this.store.getState();\n\n var currentStateId = state.stateId;\n\n try {\n var canSkipListener = currentStateId === prevStateId || currentStateId === prevStateId + 1 && !areDirty(state.dirtyHandlerIds, handlerIds);\n\n if (!canSkipListener) {\n listener();\n }\n } finally {\n prevStateId = currentStateId;\n }\n };\n\n return this.store.subscribe(handleChange);\n }\n }, {\n key: \"subscribeToOffsetChange\",\n value: function subscribeToOffsetChange(listener) {\n var _this2 = this;\n\n invariant(typeof listener === 'function', 'listener must be a function.');\n var previousState = this.store.getState().dragOffset;\n\n var handleChange = function handleChange() {\n var nextState = _this2.store.getState().dragOffset;\n\n if (nextState === previousState) {\n return;\n }\n\n previousState = nextState;\n listener();\n };\n\n return this.store.subscribe(handleChange);\n }\n }, {\n key: \"canDragSource\",\n value: function canDragSource(sourceId) {\n if (!sourceId) {\n return false;\n }\n\n var source = this.registry.getSource(sourceId);\n invariant(source, 'Expected to find a valid source.');\n\n if (this.isDragging()) {\n return false;\n }\n\n return source.canDrag(this, sourceId);\n }\n }, {\n key: \"canDropOnTarget\",\n value: function canDropOnTarget(targetId) {\n // undefined on initial render\n if (!targetId) {\n return false;\n }\n\n var target = this.registry.getTarget(targetId);\n invariant(target, 'Expected to find a valid target.');\n\n if (!this.isDragging() || this.didDrop()) {\n return false;\n }\n\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n return matchesType(targetType, draggedItemType) && target.canDrop(this, targetId);\n }\n }, {\n key: \"isDragging\",\n value: function isDragging() {\n return Boolean(this.getItemType());\n }\n }, {\n key: \"isDraggingSource\",\n value: function isDraggingSource(sourceId) {\n // undefined on initial render\n if (!sourceId) {\n return false;\n }\n\n var source = this.registry.getSource(sourceId, true);\n invariant(source, 'Expected to find a valid source.');\n\n if (!this.isDragging() || !this.isSourcePublic()) {\n return false;\n }\n\n var sourceType = this.registry.getSourceType(sourceId);\n var draggedItemType = this.getItemType();\n\n if (sourceType !== draggedItemType) {\n return false;\n }\n\n return source.isDragging(this, sourceId);\n }\n }, {\n key: \"isOverTarget\",\n value: function isOverTarget(targetId) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n shallow: false\n };\n\n // undefined on initial render\n if (!targetId) {\n return false;\n }\n\n var shallow = options.shallow;\n\n if (!this.isDragging()) {\n return false;\n }\n\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n\n if (draggedItemType && !matchesType(targetType, draggedItemType)) {\n return false;\n }\n\n var targetIds = this.getTargetIds();\n\n if (!targetIds.length) {\n return false;\n }\n\n var index = targetIds.indexOf(targetId);\n\n if (shallow) {\n return index === targetIds.length - 1;\n } else {\n return index > -1;\n }\n }\n }, {\n key: \"getItemType\",\n value: function getItemType() {\n return this.store.getState().dragOperation.itemType;\n }\n }, {\n key: \"getItem\",\n value: function getItem() {\n return this.store.getState().dragOperation.item;\n }\n }, {\n key: \"getSourceId\",\n value: function getSourceId() {\n return this.store.getState().dragOperation.sourceId;\n }\n }, {\n key: \"getTargetIds\",\n value: function getTargetIds() {\n return this.store.getState().dragOperation.targetIds;\n }\n }, {\n key: \"getDropResult\",\n value: function getDropResult() {\n return this.store.getState().dragOperation.dropResult;\n }\n }, {\n key: \"didDrop\",\n value: function didDrop() {\n return this.store.getState().dragOperation.didDrop;\n }\n }, {\n key: \"isSourcePublic\",\n value: function isSourcePublic() {\n return Boolean(this.store.getState().dragOperation.isSourcePublic);\n }\n }, {\n key: \"getInitialClientOffset\",\n value: function getInitialClientOffset() {\n return this.store.getState().dragOffset.initialClientOffset;\n }\n }, {\n key: \"getInitialSourceClientOffset\",\n value: function getInitialSourceClientOffset() {\n return this.store.getState().dragOffset.initialSourceClientOffset;\n }\n }, {\n key: \"getClientOffset\",\n value: function getClientOffset() {\n return this.store.getState().dragOffset.clientOffset;\n }\n }, {\n key: \"getSourceClientOffset\",\n value: function getSourceClientOffset() {\n return _getSourceClientOffset(this.store.getState().dragOffset);\n }\n }, {\n key: \"getDifferenceFromInitialOffset\",\n value: function getDifferenceFromInitialOffset() {\n return _getDifferenceFromInitialOffset(this.store.getState().dragOffset);\n }\n }]);\n\n return DragDropMonitorImpl;\n}();","export var HandlerRole;\n\n(function (HandlerRole) {\n HandlerRole[\"SOURCE\"] = \"SOURCE\";\n HandlerRole[\"TARGET\"] = \"TARGET\";\n})(HandlerRole || (HandlerRole = {}));","var nextUniqueId = 0;\nexport function getNextUniqueId() {\n return nextUniqueId++;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { invariant } from '@react-dnd/invariant';\nexport function validateSourceContract(source) {\n invariant(typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n invariant(typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n invariant(typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\nexport function validateTargetContract(target) {\n invariant(typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n invariant(typeof target.hover === 'function', 'Expected hover to be a function.');\n invariant(typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\nexport function validateType(type, allowArray) {\n if (allowArray && Array.isArray(type)) {\n type.forEach(function (t) {\n return validateType(t, false);\n });\n return;\n }\n\n invariant(typeof type === 'string' || _typeof(type) === 'symbol', allowArray ? 'Type can only be a string, a symbol, or an array of either.' : 'Type can only be a string or a symbol.');\n}","// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nexport function rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n } // Equivalent to push, but avoids a function call.\n\n\n queue[queue.length] = task;\n}\nvar queue = []; // Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\n// @ts-ignore\n\nvar flushing = false; // `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\n\nvar requestFlush; // The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\n\nvar index = 0; // If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\n\nvar capacity = 1024; // The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\n\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index; // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n\n index = index + 1;\n queue[currentIndex].call(); // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n\n queue.length -= index;\n index = 0;\n }\n }\n\n queue.length = 0;\n index = 0;\n flushing = false;\n} // `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\n\n\nvar scope = typeof global !== 'undefined' ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver; // MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\n\nif (typeof BrowserMutationObserver === 'function') {\n requestFlush = makeRequestCallFromMutationObserver(flush); // MessageChannels are desirable because they give direct access to the HTML\n // task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n // 11-12, and in web workers in many engines.\n // Although message channels yield to any queued rendering and IO tasks, they\n // would be better than imposing the 4ms delay of timers.\n // However, they do not work reliably in Internet Explorer or Safari.\n // Internet Explorer 10 is the only browser that has setImmediate but does\n // not have MutationObservers.\n // Although setImmediate yields to the browser's renderer, it would be\n // preferrable to falling back to setTimeout since it does not have\n // the minimum 4ms penalty.\n // Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n // Desktop to a lesser extent) that renders both setImmediate and\n // MessageChannel useless for the purposes of ASAP.\n // https://github.com/kriskowal/q/issues/396\n // Timers are implemented universally.\n // We fall back to timers in workers in most engines, and in foreground\n // contexts in the following browsers.\n // However, note that even this simple case requires nuances to operate in a\n // broad spectrum of browsers.\n //\n // - Firefox 3-13\n // - Internet Explorer 6-9\n // - iPad Safari 4.3\n // - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n} // `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\n\n\nrawAsap.requestFlush = requestFlush; // To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\n\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode('');\n observer.observe(node, {\n characterData: true\n });\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n} // The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0); // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n} // This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\n\n\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer; // ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js","import { rawAsap } from './raw'; // rawAsap provides everything we need except exception management.\n// RawTasks are recycled to reduce GC churn.\n\nvar freeTasks = []; // We queue errors to ensure they are thrown in right order (FIFO).\n// Array-as-queue is good enough here, since we are just dealing with exceptions.\n\nvar pendingErrors = [];\nvar requestErrorThrow = rawAsap.makeRequestCallFromTimer(throwFirstError);\n\nfunction throwFirstError() {\n if (pendingErrors.length) {\n throw pendingErrors.shift();\n }\n}\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\n\n\nexport function asap(task) {\n var rawTask;\n\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n\n rawTask.task = task;\n rawAsap(rawTask);\n} // We wrap tasks with recyclable task objects. A task object implements\n// `call`, just like a function.\n\nvar RawTask =\n/** @class */\nfunction () {\n function RawTask() {}\n\n RawTask.prototype.call = function () {\n try {\n this.task.call();\n } catch (error) {\n if (asap.onerror) {\n // This hook exists purely for testing purposes.\n // Its name will be periodically randomized to break any code that\n // depends on its existence.\n asap.onerror(error);\n } else {\n // In a web browser, exceptions are not fatal. However, to avoid\n // slowing down the queue of pending tasks, we rethrow the error in a\n // lower priority turn.\n pendingErrors.push(error);\n requestErrorThrow();\n }\n } finally {\n this.task = null;\n freeTasks[freeTasks.length] = this;\n }\n };\n\n return RawTask;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { addSource as _addSource, addTarget as _addTarget, removeSource as _removeSource, removeTarget as _removeTarget } from './actions/registry';\nimport { getNextUniqueId } from './utils/getNextUniqueId';\nimport { HandlerRole } from './interfaces';\nimport { validateSourceContract, validateTargetContract, validateType } from './contracts';\nimport { asap } from '@react-dnd/asap';\n\nfunction getNextHandlerId(role) {\n var id = getNextUniqueId().toString();\n\n switch (role) {\n case HandlerRole.SOURCE:\n return \"S\".concat(id);\n\n case HandlerRole.TARGET:\n return \"T\".concat(id);\n\n default:\n throw new Error(\"Unknown Handler Role: \".concat(role));\n }\n}\n\nfunction parseRoleFromHandlerId(handlerId) {\n switch (handlerId[0]) {\n case 'S':\n return HandlerRole.SOURCE;\n\n case 'T':\n return HandlerRole.TARGET;\n\n default:\n invariant(false, \"Cannot parse handler ID: \".concat(handlerId));\n }\n}\n\nfunction mapContainsValue(map, searchValue) {\n var entries = map.entries();\n var isDone = false;\n\n do {\n var _entries$next = entries.next(),\n done = _entries$next.done,\n _entries$next$value = _slicedToArray(_entries$next.value, 2),\n value = _entries$next$value[1];\n\n if (value === searchValue) {\n return true;\n }\n\n isDone = !!done;\n } while (!isDone);\n\n return false;\n}\n\nexport var HandlerRegistryImpl = /*#__PURE__*/function () {\n function HandlerRegistryImpl(store) {\n _classCallCheck(this, HandlerRegistryImpl);\n\n this.types = new Map();\n this.dragSources = new Map();\n this.dropTargets = new Map();\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n this.store = store;\n }\n\n _createClass(HandlerRegistryImpl, [{\n key: \"addSource\",\n value: function addSource(type, source) {\n validateType(type);\n validateSourceContract(source);\n var sourceId = this.addHandler(HandlerRole.SOURCE, type, source);\n this.store.dispatch(_addSource(sourceId));\n return sourceId;\n }\n }, {\n key: \"addTarget\",\n value: function addTarget(type, target) {\n validateType(type, true);\n validateTargetContract(target);\n var targetId = this.addHandler(HandlerRole.TARGET, type, target);\n this.store.dispatch(_addTarget(targetId));\n return targetId;\n }\n }, {\n key: \"containsHandler\",\n value: function containsHandler(handler) {\n return mapContainsValue(this.dragSources, handler) || mapContainsValue(this.dropTargets, handler);\n }\n }, {\n key: \"getSource\",\n value: function getSource(sourceId) {\n var includePinned = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n invariant(this.isSourceId(sourceId), 'Expected a valid source ID.');\n var isPinned = includePinned && sourceId === this.pinnedSourceId;\n var source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId);\n return source;\n }\n }, {\n key: \"getTarget\",\n value: function getTarget(targetId) {\n invariant(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.dropTargets.get(targetId);\n }\n }, {\n key: \"getSourceType\",\n value: function getSourceType(sourceId) {\n invariant(this.isSourceId(sourceId), 'Expected a valid source ID.');\n return this.types.get(sourceId);\n }\n }, {\n key: \"getTargetType\",\n value: function getTargetType(targetId) {\n invariant(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.types.get(targetId);\n }\n }, {\n key: \"isSourceId\",\n value: function isSourceId(handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === HandlerRole.SOURCE;\n }\n }, {\n key: \"isTargetId\",\n value: function isTargetId(handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === HandlerRole.TARGET;\n }\n }, {\n key: \"removeSource\",\n value: function removeSource(sourceId) {\n var _this = this;\n\n invariant(this.getSource(sourceId), 'Expected an existing source.');\n this.store.dispatch(_removeSource(sourceId));\n asap(function () {\n _this.dragSources.delete(sourceId);\n\n _this.types.delete(sourceId);\n });\n }\n }, {\n key: \"removeTarget\",\n value: function removeTarget(targetId) {\n invariant(this.getTarget(targetId), 'Expected an existing target.');\n this.store.dispatch(_removeTarget(targetId));\n this.dropTargets.delete(targetId);\n this.types.delete(targetId);\n }\n }, {\n key: \"pinSource\",\n value: function pinSource(sourceId) {\n var source = this.getSource(sourceId);\n invariant(source, 'Expected an existing source.');\n this.pinnedSourceId = sourceId;\n this.pinnedSource = source;\n }\n }, {\n key: \"unpinSource\",\n value: function unpinSource() {\n invariant(this.pinnedSource, 'No source is pinned at the time.');\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n }\n }, {\n key: \"addHandler\",\n value: function addHandler(role, type, handler) {\n var id = getNextHandlerId(role);\n this.types.set(id, type);\n\n if (role === HandlerRole.SOURCE) {\n this.dragSources.set(id, handler);\n } else if (role === HandlerRole.TARGET) {\n this.dropTargets.set(id, handler);\n }\n\n return id;\n }\n }]);\n\n return HandlerRegistryImpl;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { createStore } from 'redux';\nimport { reduce } from './reducers';\nimport { createDragDropActions } from './actions/dragDrop';\nimport { DragDropMonitorImpl } from './DragDropMonitorImpl';\nimport { HandlerRegistryImpl } from './HandlerRegistryImpl';\n\nfunction makeStoreInstance(debugMode) {\n // TODO: if we ever make a react-native version of this,\n // we'll need to consider how to pull off dev-tooling\n var reduxDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__;\n return createStore(reduce, debugMode && reduxDevTools && reduxDevTools({\n name: 'dnd-core',\n instanceId: 'dnd-core'\n }));\n}\n\nexport var DragDropManagerImpl = /*#__PURE__*/function () {\n function DragDropManagerImpl() {\n var _this = this;\n\n var debugMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n _classCallCheck(this, DragDropManagerImpl);\n\n this.isSetUp = false;\n\n this.handleRefCountChange = function () {\n var shouldSetUp = _this.store.getState().refCount > 0;\n\n if (_this.backend) {\n if (shouldSetUp && !_this.isSetUp) {\n _this.backend.setup();\n\n _this.isSetUp = true;\n } else if (!shouldSetUp && _this.isSetUp) {\n _this.backend.teardown();\n\n _this.isSetUp = false;\n }\n }\n };\n\n var store = makeStoreInstance(debugMode);\n this.store = store;\n this.monitor = new DragDropMonitorImpl(store, new HandlerRegistryImpl(store));\n store.subscribe(this.handleRefCountChange);\n }\n\n _createClass(DragDropManagerImpl, [{\n key: \"receiveBackend\",\n value: function receiveBackend(backend) {\n this.backend = backend;\n }\n }, {\n key: \"getMonitor\",\n value: function getMonitor() {\n return this.monitor;\n }\n }, {\n key: \"getBackend\",\n value: function getBackend() {\n return this.backend;\n }\n }, {\n key: \"getRegistry\",\n value: function getRegistry() {\n return this.monitor.registry;\n }\n }, {\n key: \"getActions\",\n value: function getActions() {\n /* eslint-disable-next-line @typescript-eslint/no-this-alias */\n var manager = this;\n var dispatch = this.store.dispatch;\n\n function bindActionCreator(actionCreator) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var action = actionCreator.apply(manager, args);\n\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n\n var actions = createDragDropActions(this);\n return Object.keys(actions).reduce(function (boundActions, key) {\n var action = actions[key];\n boundActions[key] = bindActionCreator(action);\n return boundActions;\n }, {});\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(action) {\n this.store.dispatch(action);\n }\n }]);\n\n return DragDropManagerImpl;\n}();","import { createBeginDrag } from './beginDrag';\nimport { createPublishDragSource } from './publishDragSource';\nimport { createHover } from './hover';\nimport { createDrop } from './drop';\nimport { createEndDrag } from './endDrag';\nexport * from './types';\nexport function createDragDropActions(manager) {\n return {\n beginDrag: createBeginDrag(manager),\n publishDragSource: createPublishDragSource(manager),\n hover: createHover(manager),\n drop: createDrop(manager),\n endDrag: createEndDrag(manager)\n };\n}","import { DragDropManagerImpl } from './DragDropManagerImpl';\nexport function createDragDropManager(backendFactory, globalContext, backendOptions, debugMode) {\n var manager = new DragDropManagerImpl(debugMode);\n var backend = backendFactory(manager, globalContext, backendOptions);\n manager.receiveBackend(backend);\n return manager;\n}","import * as React from 'react';\nimport { createDragDropManager } from 'dnd-core';\n/**\n * Create the React Context\n */\n\nexport var DndContext = React.createContext({\n dragDropManager: undefined\n});\n/**\n * Creates the context object we're providing\n * @param backend\n * @param context\n */\n\nexport function createDndContext(backend, context, options, debugMode) {\n return {\n dragDropManager: createDragDropManager(backend, context, options, debugMode)\n };\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { invariant } from '@react-dnd/invariant';\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\nexport var DragSourceMonitorImpl = /*#__PURE__*/function () {\n function DragSourceMonitorImpl(manager) {\n _classCallCheck(this, DragSourceMonitorImpl);\n\n this.sourceId = null;\n this.internalMonitor = manager.getMonitor();\n }\n\n _createClass(DragSourceMonitorImpl, [{\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(sourceId) {\n this.sourceId = sourceId;\n }\n }, {\n key: \"getHandlerId\",\n value: function getHandlerId() {\n return this.sourceId;\n }\n }, {\n key: \"canDrag\",\n value: function canDrag() {\n invariant(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n\n try {\n isCallingCanDrag = true;\n return this.internalMonitor.canDragSource(this.sourceId);\n } finally {\n isCallingCanDrag = false;\n }\n }\n }, {\n key: \"isDragging\",\n value: function isDragging() {\n if (!this.sourceId) {\n return false;\n }\n\n invariant(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n\n try {\n isCallingIsDragging = true;\n return this.internalMonitor.isDraggingSource(this.sourceId);\n } finally {\n isCallingIsDragging = false;\n }\n }\n }, {\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n }\n }, {\n key: \"isDraggingSource\",\n value: function isDraggingSource(sourceId) {\n return this.internalMonitor.isDraggingSource(sourceId);\n }\n }, {\n key: \"isOverTarget\",\n value: function isOverTarget(targetId, options) {\n return this.internalMonitor.isOverTarget(targetId, options);\n }\n }, {\n key: \"getTargetIds\",\n value: function getTargetIds() {\n return this.internalMonitor.getTargetIds();\n }\n }, {\n key: \"isSourcePublic\",\n value: function isSourcePublic() {\n return this.internalMonitor.isSourcePublic();\n }\n }, {\n key: \"getSourceId\",\n value: function getSourceId() {\n return this.internalMonitor.getSourceId();\n }\n }, {\n key: \"subscribeToOffsetChange\",\n value: function subscribeToOffsetChange(listener) {\n return this.internalMonitor.subscribeToOffsetChange(listener);\n }\n }, {\n key: \"canDragSource\",\n value: function canDragSource(sourceId) {\n return this.internalMonitor.canDragSource(sourceId);\n }\n }, {\n key: \"canDropOnTarget\",\n value: function canDropOnTarget(targetId) {\n return this.internalMonitor.canDropOnTarget(targetId);\n }\n }, {\n key: \"getItemType\",\n value: function getItemType() {\n return this.internalMonitor.getItemType();\n }\n }, {\n key: \"getItem\",\n value: function getItem() {\n return this.internalMonitor.getItem();\n }\n }, {\n key: \"getDropResult\",\n value: function getDropResult() {\n return this.internalMonitor.getDropResult();\n }\n }, {\n key: \"didDrop\",\n value: function didDrop() {\n return this.internalMonitor.didDrop();\n }\n }, {\n key: \"getInitialClientOffset\",\n value: function getInitialClientOffset() {\n return this.internalMonitor.getInitialClientOffset();\n }\n }, {\n key: \"getInitialSourceClientOffset\",\n value: function getInitialSourceClientOffset() {\n return this.internalMonitor.getInitialSourceClientOffset();\n }\n }, {\n key: \"getSourceClientOffset\",\n value: function getSourceClientOffset() {\n return this.internalMonitor.getSourceClientOffset();\n }\n }, {\n key: \"getClientOffset\",\n value: function getClientOffset() {\n return this.internalMonitor.getClientOffset();\n }\n }, {\n key: \"getDifferenceFromInitialOffset\",\n value: function getDifferenceFromInitialOffset() {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n }\n }]);\n\n return DragSourceMonitorImpl;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { invariant } from '@react-dnd/invariant';\nvar isCallingCanDrop = false;\nexport var DropTargetMonitorImpl = /*#__PURE__*/function () {\n function DropTargetMonitorImpl(manager) {\n _classCallCheck(this, DropTargetMonitorImpl);\n\n this.targetId = null;\n this.internalMonitor = manager.getMonitor();\n }\n\n _createClass(DropTargetMonitorImpl, [{\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(targetId) {\n this.targetId = targetId;\n }\n }, {\n key: \"getHandlerId\",\n value: function getHandlerId() {\n return this.targetId;\n }\n }, {\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n }\n }, {\n key: \"canDrop\",\n value: function canDrop() {\n // Cut out early if the target id has not been set. This should prevent errors\n // where the user has an older version of dnd-core like in\n // https://github.com/react-dnd/react-dnd/issues/1310\n if (!this.targetId) {\n return false;\n }\n\n invariant(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor');\n\n try {\n isCallingCanDrop = true;\n return this.internalMonitor.canDropOnTarget(this.targetId);\n } finally {\n isCallingCanDrop = false;\n }\n }\n }, {\n key: \"isOver\",\n value: function isOver(options) {\n if (!this.targetId) {\n return false;\n }\n\n return this.internalMonitor.isOverTarget(this.targetId, options);\n }\n }, {\n key: \"getItemType\",\n value: function getItemType() {\n return this.internalMonitor.getItemType();\n }\n }, {\n key: \"getItem\",\n value: function getItem() {\n return this.internalMonitor.getItem();\n }\n }, {\n key: \"getDropResult\",\n value: function getDropResult() {\n return this.internalMonitor.getDropResult();\n }\n }, {\n key: \"didDrop\",\n value: function didDrop() {\n return this.internalMonitor.didDrop();\n }\n }, {\n key: \"getInitialClientOffset\",\n value: function getInitialClientOffset() {\n return this.internalMonitor.getInitialClientOffset();\n }\n }, {\n key: \"getInitialSourceClientOffset\",\n value: function getInitialSourceClientOffset() {\n return this.internalMonitor.getInitialSourceClientOffset();\n }\n }, {\n key: \"getSourceClientOffset\",\n value: function getSourceClientOffset() {\n return this.internalMonitor.getSourceClientOffset();\n }\n }, {\n key: \"getClientOffset\",\n value: function getClientOffset() {\n return this.internalMonitor.getClientOffset();\n }\n }, {\n key: \"getDifferenceFromInitialOffset\",\n value: function getDifferenceFromInitialOffset() {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n }\n }]);\n\n return DropTargetMonitorImpl;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { wrapConnectorHooks } from './wrapConnectorHooks';\nimport { isRef } from '../utils/isRef';\nimport { shallowEqual } from '@react-dnd/shallowequal';\nexport var SourceConnector = /*#__PURE__*/function () {\n function SourceConnector(backend) {\n var _this = this;\n\n _classCallCheck(this, SourceConnector);\n\n this.hooks = wrapConnectorHooks({\n dragSource: function dragSource(node, options) {\n _this.clearDragSource();\n\n _this.dragSourceOptions = options || null;\n\n if (isRef(node)) {\n _this.dragSourceRef = node;\n } else {\n _this.dragSourceNode = node;\n }\n\n _this.reconnectDragSource();\n },\n dragPreview: function dragPreview(node, options) {\n _this.clearDragPreview();\n\n _this.dragPreviewOptions = options || null;\n\n if (isRef(node)) {\n _this.dragPreviewRef = node;\n } else {\n _this.dragPreviewNode = node;\n }\n\n _this.reconnectDragPreview();\n }\n });\n this.handlerId = null; // The drop target may either be attached via ref or connect function\n\n this.dragSourceRef = null;\n this.dragSourceOptionsInternal = null; // The drag preview may either be attached via ref or connect function\n\n this.dragPreviewRef = null;\n this.dragPreviewOptionsInternal = null;\n this.lastConnectedHandlerId = null;\n this.lastConnectedDragSource = null;\n this.lastConnectedDragSourceOptions = null;\n this.lastConnectedDragPreview = null;\n this.lastConnectedDragPreviewOptions = null;\n this.backend = backend;\n }\n\n _createClass(SourceConnector, [{\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(newHandlerId) {\n if (this.handlerId === newHandlerId) {\n return;\n }\n\n this.handlerId = newHandlerId;\n this.reconnect();\n }\n }, {\n key: \"reconnect\",\n value: function reconnect() {\n this.reconnectDragSource();\n this.reconnectDragPreview();\n }\n }, {\n key: \"reconnectDragSource\",\n value: function reconnectDragSource() {\n var dragSource = this.dragSource; // if nothing has changed then don't resubscribe\n\n var didChange = this.didHandlerIdChange() || this.didConnectedDragSourceChange() || this.didDragSourceOptionsChange();\n\n if (didChange) {\n this.disconnectDragSource();\n }\n\n if (!this.handlerId) {\n return;\n }\n\n if (!dragSource) {\n this.lastConnectedDragSource = dragSource;\n return;\n }\n\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDragSource = dragSource;\n this.lastConnectedDragSourceOptions = this.dragSourceOptions;\n this.dragSourceUnsubscribe = this.backend.connectDragSource(this.handlerId, dragSource, this.dragSourceOptions);\n }\n }\n }, {\n key: \"reconnectDragPreview\",\n value: function reconnectDragPreview() {\n var dragPreview = this.dragPreview; // if nothing has changed then don't resubscribe\n\n var didChange = this.didHandlerIdChange() || this.didConnectedDragPreviewChange() || this.didDragPreviewOptionsChange();\n\n if (didChange) {\n this.disconnectDragPreview();\n }\n\n if (!this.handlerId) {\n return;\n }\n\n if (!dragPreview) {\n this.lastConnectedDragPreview = dragPreview;\n return;\n }\n\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDragPreview = dragPreview;\n this.lastConnectedDragPreviewOptions = this.dragPreviewOptions;\n this.dragPreviewUnsubscribe = this.backend.connectDragPreview(this.handlerId, dragPreview, this.dragPreviewOptions);\n }\n }\n }, {\n key: \"didHandlerIdChange\",\n value: function didHandlerIdChange() {\n return this.lastConnectedHandlerId !== this.handlerId;\n }\n }, {\n key: \"didConnectedDragSourceChange\",\n value: function didConnectedDragSourceChange() {\n return this.lastConnectedDragSource !== this.dragSource;\n }\n }, {\n key: \"didConnectedDragPreviewChange\",\n value: function didConnectedDragPreviewChange() {\n return this.lastConnectedDragPreview !== this.dragPreview;\n }\n }, {\n key: \"didDragSourceOptionsChange\",\n value: function didDragSourceOptionsChange() {\n return !shallowEqual(this.lastConnectedDragSourceOptions, this.dragSourceOptions);\n }\n }, {\n key: \"didDragPreviewOptionsChange\",\n value: function didDragPreviewOptionsChange() {\n return !shallowEqual(this.lastConnectedDragPreviewOptions, this.dragPreviewOptions);\n }\n }, {\n key: \"disconnectDragSource\",\n value: function disconnectDragSource() {\n if (this.dragSourceUnsubscribe) {\n this.dragSourceUnsubscribe();\n this.dragSourceUnsubscribe = undefined;\n }\n }\n }, {\n key: \"disconnectDragPreview\",\n value: function disconnectDragPreview() {\n if (this.dragPreviewUnsubscribe) {\n this.dragPreviewUnsubscribe();\n this.dragPreviewUnsubscribe = undefined;\n this.dragPreviewNode = null;\n this.dragPreviewRef = null;\n }\n }\n }, {\n key: \"clearDragSource\",\n value: function clearDragSource() {\n this.dragSourceNode = null;\n this.dragSourceRef = null;\n }\n }, {\n key: \"clearDragPreview\",\n value: function clearDragPreview() {\n this.dragPreviewNode = null;\n this.dragPreviewRef = null;\n }\n }, {\n key: \"connectTarget\",\n get: function get() {\n return this.dragSource;\n }\n }, {\n key: \"dragSourceOptions\",\n get: function get() {\n return this.dragSourceOptionsInternal;\n },\n set: function set(options) {\n this.dragSourceOptionsInternal = options;\n }\n }, {\n key: \"dragPreviewOptions\",\n get: function get() {\n return this.dragPreviewOptionsInternal;\n },\n set: function set(options) {\n this.dragPreviewOptionsInternal = options;\n }\n }, {\n key: \"dragSource\",\n get: function get() {\n return this.dragSourceNode || this.dragSourceRef && this.dragSourceRef.current;\n }\n }, {\n key: \"dragPreview\",\n get: function get() {\n return this.dragPreviewNode || this.dragPreviewRef && this.dragPreviewRef.current;\n }\n }]);\n\n return SourceConnector;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { shallowEqual } from '@react-dnd/shallowequal';\nimport { wrapConnectorHooks } from './wrapConnectorHooks';\nimport { isRef } from '../utils/isRef';\nexport var TargetConnector = /*#__PURE__*/function () {\n function TargetConnector(backend) {\n var _this = this;\n\n _classCallCheck(this, TargetConnector);\n\n this.hooks = wrapConnectorHooks({\n dropTarget: function dropTarget(node, options) {\n _this.clearDropTarget();\n\n _this.dropTargetOptions = options;\n\n if (isRef(node)) {\n _this.dropTargetRef = node;\n } else {\n _this.dropTargetNode = node;\n }\n\n _this.reconnect();\n }\n });\n this.handlerId = null; // The drop target may either be attached via ref or connect function\n\n this.dropTargetRef = null;\n this.dropTargetOptionsInternal = null;\n this.lastConnectedHandlerId = null;\n this.lastConnectedDropTarget = null;\n this.lastConnectedDropTargetOptions = null;\n this.backend = backend;\n }\n\n _createClass(TargetConnector, [{\n key: \"reconnect\",\n value: function reconnect() {\n // if nothing has changed then don't resubscribe\n var didChange = this.didHandlerIdChange() || this.didDropTargetChange() || this.didOptionsChange();\n\n if (didChange) {\n this.disconnectDropTarget();\n }\n\n var dropTarget = this.dropTarget;\n\n if (!this.handlerId) {\n return;\n }\n\n if (!dropTarget) {\n this.lastConnectedDropTarget = dropTarget;\n return;\n }\n\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDropTarget = dropTarget;\n this.lastConnectedDropTargetOptions = this.dropTargetOptions;\n this.unsubscribeDropTarget = this.backend.connectDropTarget(this.handlerId, dropTarget, this.dropTargetOptions);\n }\n }\n }, {\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(newHandlerId) {\n if (newHandlerId === this.handlerId) {\n return;\n }\n\n this.handlerId = newHandlerId;\n this.reconnect();\n }\n }, {\n key: \"didHandlerIdChange\",\n value: function didHandlerIdChange() {\n return this.lastConnectedHandlerId !== this.handlerId;\n }\n }, {\n key: \"didDropTargetChange\",\n value: function didDropTargetChange() {\n return this.lastConnectedDropTarget !== this.dropTarget;\n }\n }, {\n key: \"didOptionsChange\",\n value: function didOptionsChange() {\n return !shallowEqual(this.lastConnectedDropTargetOptions, this.dropTargetOptions);\n }\n }, {\n key: \"disconnectDropTarget\",\n value: function disconnectDropTarget() {\n if (this.unsubscribeDropTarget) {\n this.unsubscribeDropTarget();\n this.unsubscribeDropTarget = undefined;\n }\n }\n }, {\n key: \"clearDropTarget\",\n value: function clearDropTarget() {\n this.dropTargetRef = null;\n this.dropTargetNode = null;\n }\n }, {\n key: \"connectTarget\",\n get: function get() {\n return this.dropTarget;\n }\n }, {\n key: \"dropTargetOptions\",\n get: function get() {\n return this.dropTargetOptionsInternal;\n },\n set: function set(options) {\n this.dropTargetOptionsInternal = options;\n }\n }, {\n key: \"dropTarget\",\n get: function get() {\n return this.dropTargetNode || this.dropTargetRef && this.dropTargetRef.current;\n }\n }]);\n\n return TargetConnector;\n}();","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from 'react';\nimport { memo } from 'react';\nimport { DndContext, createDndContext } from './DndContext';\nvar refCount = 0;\n/**\n * A React component that provides the React-DnD context\n */\n\nexport var DndProvider = memo(function (_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties(_ref, [\"children\"]);\n\n var _getDndContextValue = getDndContextValue(props),\n _getDndContextValue2 = _slicedToArray(_getDndContextValue, 2),\n manager = _getDndContextValue2[0],\n isGlobalInstance = _getDndContextValue2[1]; // memoized from props\n\n /**\n * If the global context was used to store the DND context\n * then where theres no more references to it we should\n * clean it up to avoid memory leaks\n */\n\n\n React.useEffect(function () {\n if (isGlobalInstance) {\n refCount++;\n }\n\n return function () {\n if (isGlobalInstance) {\n refCount--;\n\n if (refCount === 0) {\n var context = getGlobalContext();\n context[instanceSymbol] = null;\n }\n }\n };\n }, []);\n return React.createElement(DndContext.Provider, {\n value: manager\n }, children);\n});\nDndProvider.displayName = 'DndProvider';\n\nfunction getDndContextValue(props) {\n if ('manager' in props) {\n var _manager = {\n dragDropManager: props.manager\n };\n return [_manager, false];\n }\n\n var manager = createSingletonDndContext(props.backend, props.context, props.options, props.debugMode);\n var isGlobalInstance = !props.context;\n return [manager, isGlobalInstance];\n}\n\nvar instanceSymbol = Symbol.for('__REACT_DND_CONTEXT_INSTANCE__');\n\nfunction createSingletonDndContext(backend) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getGlobalContext();\n var options = arguments.length > 2 ? arguments[2] : undefined;\n var debugMode = arguments.length > 3 ? arguments[3] : undefined;\n var ctx = context;\n\n if (!ctx[instanceSymbol]) {\n ctx[instanceSymbol] = createDndContext(backend, context, options, debugMode);\n }\n\n return ctx[instanceSymbol];\n}\n\nfunction getGlobalContext() {\n return typeof global !== 'undefined' ? global : window;\n}","import * as React from 'react';\n/*\n * A utility for rendering a drag preview image\n */\n\nexport var DragPreviewImage = React.memo(function (_ref) {\n var connect = _ref.connect,\n src = _ref.src;\n React.useEffect(function () {\n if (typeof Image === 'undefined') return;\n var connected = false;\n var img = new Image();\n img.src = src;\n\n img.onload = function () {\n connect(img);\n connected = true;\n };\n\n return function () {\n if (connected) {\n connect(null);\n }\n };\n });\n return null;\n});\nDragPreviewImage.displayName = 'DragPreviewImage';","export function registerTarget(type, target, manager) {\n var registry = manager.getRegistry();\n var targetId = registry.addTarget(type, target);\n return [targetId, function () {\n return registry.removeTarget(targetId);\n }];\n}\nexport function registerSource(type, source, manager) {\n var registry = manager.getRegistry();\n var sourceId = registry.addSource(type, source);\n return [sourceId, function () {\n return registry.removeSource(sourceId);\n }];\n}","import { cloneElement } from 'react';\nimport { invariant } from '@react-dnd/invariant';\n\nfunction setRef(ref, node) {\n if (typeof ref === 'function') {\n ref(node);\n } else {\n ref.current = node;\n }\n}\n\nexport function cloneWithRef(element, newRef) {\n var previousRef = element.ref;\n invariant(typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' + 'Please convert it to use a callback ref instead, or wrap it into a or
. ' + 'Read more: https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute');\n\n if (!previousRef) {\n // When there is no ref on the element, use the new ref directly\n return cloneElement(element, {\n ref: newRef\n });\n } else {\n return cloneElement(element, {\n ref: function ref(node) {\n setRef(previousRef, node);\n setRef(newRef, node);\n }\n });\n }\n}","import { isValidElement } from 'react';\nimport { cloneWithRef } from '../utils/cloneWithRef';\n\nfunction throwIfCompositeComponentElement(element) {\n // Custom components can no longer be wrapped directly in React DnD 2.0\n // so that we don't need to depend on findDOMNode() from react-dom.\n if (typeof element.type === 'string') {\n return;\n }\n\n var displayName = element.type.displayName || element.type.name || 'the component';\n throw new Error('Only native element nodes can now be passed to React DnD connectors.' + \"You can either wrap \".concat(displayName, \" into a
, or turn it into a \") + 'drag source or a drop target itself.');\n}\n\nfunction wrapHookToRecognizeElement(hook) {\n return function () {\n var elementOrNode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n // When passed a node, call the hook straight away.\n if (!isValidElement(elementOrNode)) {\n var node = elementOrNode;\n hook(node, options); // return the node so it can be chained (e.g. when within callback refs\n //
connectDragSource(connectDropTarget(node))}/>\n\n return node;\n } // If passed a ReactElement, clone it and attach this function as a ref.\n // This helps us achieve a neat API where user doesn't even know that refs\n // are being used under the hood.\n\n\n var element = elementOrNode;\n throwIfCompositeComponentElement(element); // When no options are passed, use the hook directly\n\n var ref = options ? function (node) {\n return hook(node, options);\n } : hook;\n return cloneWithRef(element, ref);\n };\n}\n\nexport function wrapConnectorHooks(hooks) {\n var wrappedHooks = {};\n Object.keys(hooks).forEach(function (key) {\n var hook = hooks[key]; // ref objects should be passed straight through without wrapping\n\n if (key.endsWith('Ref')) {\n wrappedHooks[key] = hooks[key];\n } else {\n var wrappedHook = wrapHookToRecognizeElement(hook);\n\n wrappedHooks[key] = function () {\n return wrappedHook;\n };\n }\n });\n return wrappedHooks;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport * as React from 'react';\nimport { shallowEqual } from '@react-dnd/shallowequal';\nimport hoistStatics from 'hoist-non-react-statics';\nimport { invariant } from '@react-dnd/invariant';\nimport { DndContext } from '../common/DndContext';\nimport { isPlainObject } from '../utils/js_utils';\nimport { isRefable, checkDecoratorArguments } from './utils';\nexport function DragLayer(collect) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n checkDecoratorArguments('DragLayer', 'collect[, options]', collect, options);\n invariant(typeof collect === 'function', 'Expected \"collect\" provided as the first argument to DragLayer to be a function that collects props to inject into the component. ', 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-layer', collect);\n invariant(isPlainObject(options), 'Expected \"options\" provided as the second argument to DragLayer to be a plain object when specified. ' + 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-layer', options);\n return function decorateLayer(DecoratedComponent) {\n var Decorated = DecoratedComponent;\n var _options$arePropsEqua = options.arePropsEqual,\n arePropsEqual = _options$arePropsEqua === void 0 ? shallowEqual : _options$arePropsEqua;\n var displayName = Decorated.displayName || Decorated.name || 'Component';\n\n var DragLayerContainer =\n /** @class */\n function () {\n var DragLayerContainer = /*#__PURE__*/function (_React$Component) {\n _inherits(DragLayerContainer, _React$Component);\n\n var _super = _createSuper(DragLayerContainer);\n\n function DragLayerContainer() {\n var _this;\n\n _classCallCheck(this, DragLayerContainer);\n\n _this = _super.apply(this, arguments);\n _this.isCurrentlyMounted = false;\n _this.ref = React.createRef();\n\n _this.handleChange = function () {\n if (!_this.isCurrentlyMounted) {\n return;\n }\n\n var nextState = _this.getCurrentState();\n\n if (!shallowEqual(nextState, _this.state)) {\n _this.setState(nextState);\n }\n };\n\n return _this;\n }\n\n _createClass(DragLayerContainer, [{\n key: \"getDecoratedComponentInstance\",\n value: function getDecoratedComponentInstance() {\n invariant(this.ref.current, 'In order to access an instance of the decorated component, it must either be a class component or use React.forwardRef()');\n return this.ref.current;\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n return !arePropsEqual(nextProps, this.props) || !shallowEqual(nextState, this.state);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.isCurrentlyMounted = true;\n this.handleChange();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.isCurrentlyMounted = false;\n\n if (this.unsubscribeFromOffsetChange) {\n this.unsubscribeFromOffsetChange();\n this.unsubscribeFromOffsetChange = undefined;\n }\n\n if (this.unsubscribeFromStateChange) {\n this.unsubscribeFromStateChange();\n this.unsubscribeFromStateChange = undefined;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(DndContext.Consumer, null, function (_ref) {\n var dragDropManager = _ref.dragDropManager;\n\n if (dragDropManager === undefined) {\n return null;\n }\n\n _this2.receiveDragDropManager(dragDropManager); // Let componentDidMount fire to initialize the collected state\n\n\n if (!_this2.isCurrentlyMounted) {\n return null;\n }\n\n return React.createElement(Decorated, Object.assign({}, _this2.props, _this2.state, {\n ref: isRefable(Decorated) ? _this2.ref : null\n }));\n });\n }\n }, {\n key: \"receiveDragDropManager\",\n value: function receiveDragDropManager(dragDropManager) {\n if (this.manager !== undefined) {\n return;\n }\n\n this.manager = dragDropManager;\n invariant(_typeof(dragDropManager) === 'object', 'Could not find the drag and drop manager in the context of %s. ' + 'Make sure to render a DndProvider component in your top-level component. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/troubleshooting#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n var monitor = this.manager.getMonitor();\n this.unsubscribeFromOffsetChange = monitor.subscribeToOffsetChange(this.handleChange);\n this.unsubscribeFromStateChange = monitor.subscribeToStateChange(this.handleChange);\n }\n }, {\n key: \"getCurrentState\",\n value: function getCurrentState() {\n if (!this.manager) {\n return {};\n }\n\n var monitor = this.manager.getMonitor();\n return collect(monitor, this.props);\n }\n }]);\n\n return DragLayerContainer;\n }(React.Component);\n\n DragLayerContainer.displayName = \"DragLayer(\".concat(displayName, \")\");\n DragLayerContainer.DecoratedComponent = DecoratedComponent;\n return DragLayerContainer;\n }();\n\n return hoistStatics(DragLayerContainer, DecoratedComponent);\n };\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { isPlainObject } from '../utils/js_utils';\nimport { getDecoratedComponent } from './utils';\nvar ALLOWED_SPEC_METHODS = ['canDrag', 'beginDrag', 'isDragging', 'endDrag'];\nvar REQUIRED_SPEC_METHODS = ['beginDrag'];\n\nvar SourceImpl = /*#__PURE__*/function () {\n function SourceImpl(spec, monitor, ref) {\n var _this = this;\n\n _classCallCheck(this, SourceImpl);\n\n this.props = null;\n\n this.beginDrag = function () {\n if (!_this.props) {\n return;\n }\n\n var item = _this.spec.beginDrag(_this.props, _this.monitor, _this.ref.current);\n\n if (process.env.NODE_ENV !== 'production') {\n invariant(isPlainObject(item), 'beginDrag() must return a plain object that represents the dragged item. ' + 'Instead received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', item);\n }\n\n return item;\n };\n\n this.spec = spec;\n this.monitor = monitor;\n this.ref = ref;\n }\n\n _createClass(SourceImpl, [{\n key: \"receiveProps\",\n value: function receiveProps(props) {\n this.props = props;\n }\n }, {\n key: \"canDrag\",\n value: function canDrag() {\n if (!this.props) {\n return false;\n }\n\n if (!this.spec.canDrag) {\n return true;\n }\n\n return this.spec.canDrag(this.props, this.monitor);\n }\n }, {\n key: \"isDragging\",\n value: function isDragging(globalMonitor, sourceId) {\n if (!this.props) {\n return false;\n }\n\n if (!this.spec.isDragging) {\n return sourceId === globalMonitor.getSourceId();\n }\n\n return this.spec.isDragging(this.props, this.monitor);\n }\n }, {\n key: \"endDrag\",\n value: function endDrag() {\n if (!this.props) {\n return;\n }\n\n if (!this.spec.endDrag) {\n return;\n }\n\n this.spec.endDrag(this.props, this.monitor, getDecoratedComponent(this.ref));\n }\n }]);\n\n return SourceImpl;\n}();\n\nexport function createSourceFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n invariant(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drag source specification to only have ' + 'some of the following keys: %s. ' + 'Instead received a specification with an unexpected \"%s\" key. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', ALLOWED_SPEC_METHODS.join(', '), key);\n invariant(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' + 'Instead received a specification with %s: %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', key, key, spec[key]);\n });\n REQUIRED_SPEC_METHODS.forEach(function (key) {\n invariant(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' + 'Instead received a specification with %s: %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', key, key, spec[key]);\n });\n return function createSource(monitor, ref) {\n return new SourceImpl(spec, monitor, ref);\n };\n}","import { invariant } from '@react-dnd/invariant';\nimport { isPlainObject } from '../utils/js_utils';\nimport { checkDecoratorArguments } from './utils';\nimport { decorateHandler } from './decorateHandler';\nimport { registerSource } from '../common/registration';\nimport { DragSourceMonitorImpl } from '../common/DragSourceMonitorImpl';\nimport { SourceConnector } from '../common/SourceConnector';\nimport { isValidType } from '../utils/isValidType';\nimport { createSourceFactory } from './createSourceFactory';\n/**\n * Decorates a component as a dragsource\n * @param type The dragsource type\n * @param spec The drag source specification\n * @param collect The props collector function\n * @param options DnD options\n */\n\nexport function DragSource(type, spec, collect) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n checkDecoratorArguments('DragSource', 'type, spec, collect[, options]', type, spec, collect, options);\n var getType = type;\n\n if (typeof type !== 'function') {\n invariant(isValidType(type), 'Expected \"type\" provided as the first argument to DragSource to be ' + 'a string, or a function that returns a string given the current props. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', type);\n\n getType = function getType() {\n return type;\n };\n }\n\n invariant(isPlainObject(spec), 'Expected \"spec\" provided as the second argument to DragSource to be ' + 'a plain object. Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', spec);\n var createSource = createSourceFactory(spec);\n invariant(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DragSource to be ' + 'a function that returns a plain object of props to inject. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', collect);\n invariant(isPlainObject(options), 'Expected \"options\" provided as the fourth argument to DragSource to be ' + 'a plain object when specified. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source', collect);\n return function decorateSource(DecoratedComponent) {\n return decorateHandler({\n containerDisplayName: 'DragSource',\n createHandler: createSource,\n registerHandler: registerSource,\n createConnector: function createConnector(backend) {\n return new SourceConnector(backend);\n },\n createMonitor: function createMonitor(manager) {\n return new DragSourceMonitorImpl(manager);\n },\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options\n });\n };\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { isPlainObject } from '../utils/js_utils';\nimport { getDecoratedComponent } from './utils';\nvar ALLOWED_SPEC_METHODS = ['canDrop', 'hover', 'drop'];\n\nvar TargetImpl = /*#__PURE__*/function () {\n function TargetImpl(spec, monitor, ref) {\n _classCallCheck(this, TargetImpl);\n\n this.props = null;\n this.spec = spec;\n this.monitor = monitor;\n this.ref = ref;\n }\n\n _createClass(TargetImpl, [{\n key: \"receiveProps\",\n value: function receiveProps(props) {\n this.props = props;\n }\n }, {\n key: \"receiveMonitor\",\n value: function receiveMonitor(monitor) {\n this.monitor = monitor;\n }\n }, {\n key: \"canDrop\",\n value: function canDrop() {\n if (!this.spec.canDrop) {\n return true;\n }\n\n return this.spec.canDrop(this.props, this.monitor);\n }\n }, {\n key: \"hover\",\n value: function hover() {\n if (!this.spec.hover || !this.props) {\n return;\n }\n\n this.spec.hover(this.props, this.monitor, getDecoratedComponent(this.ref));\n }\n }, {\n key: \"drop\",\n value: function drop() {\n if (!this.spec.drop) {\n return undefined;\n }\n\n var dropResult = this.spec.drop(this.props, this.monitor, this.ref.current);\n\n if (process.env.NODE_ENV !== 'production') {\n invariant(typeof dropResult === 'undefined' || isPlainObject(dropResult), 'drop() must either return undefined, or an object that represents the drop result. ' + 'Instead received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', dropResult);\n }\n\n return dropResult;\n }\n }]);\n\n return TargetImpl;\n}();\n\nexport function createTargetFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n invariant(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drop target specification to only have ' + 'some of the following keys: %s. ' + 'Instead received a specification with an unexpected \"%s\" key. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', ALLOWED_SPEC_METHODS.join(', '), key);\n invariant(typeof spec[key] === 'function', 'Expected %s in the drop target specification to be a function. ' + 'Instead received a specification with %s: %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', key, key, spec[key]);\n });\n return function createTarget(monitor, ref) {\n return new TargetImpl(spec, monitor, ref);\n };\n}","import { invariant } from '@react-dnd/invariant';\nimport { isPlainObject } from '../utils/js_utils';\nimport { registerTarget } from '../common/registration';\nimport { isValidType } from '../utils/isValidType';\nimport { TargetConnector } from '../common/TargetConnector';\nimport { DropTargetMonitorImpl } from '../common/DropTargetMonitorImpl';\nimport { checkDecoratorArguments } from './utils';\nimport { decorateHandler } from './decorateHandler';\nimport { createTargetFactory } from './createTargetFactory';\nexport function DropTarget(type, spec, collect) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n checkDecoratorArguments('DropTarget', 'type, spec, collect[, options]', type, spec, collect, options);\n var getType = type;\n\n if (typeof type !== 'function') {\n invariant(isValidType(type, true), 'Expected \"type\" provided as the first argument to DropTarget to be ' + 'a string, an array of strings, or a function that returns either given ' + 'the current props. Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', type);\n\n getType = function getType() {\n return type;\n };\n }\n\n invariant(isPlainObject(spec), 'Expected \"spec\" provided as the second argument to DropTarget to be ' + 'a plain object. Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', spec);\n var createTarget = createTargetFactory(spec);\n invariant(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DropTarget to be ' + 'a function that returns a plain object of props to inject. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', collect);\n invariant(isPlainObject(options), 'Expected \"options\" provided as the fourth argument to DropTarget to be ' + 'a plain object when specified. ' + 'Instead, received %s. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target', collect);\n return function decorateTarget(DecoratedComponent) {\n return decorateHandler({\n containerDisplayName: 'DropTarget',\n createHandler: createTarget,\n registerHandler: registerTarget,\n createMonitor: function createMonitor(manager) {\n return new DropTargetMonitorImpl(manager);\n },\n createConnector: function createConnector(backend) {\n return new TargetConnector(backend);\n },\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options\n });\n };\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { isFunction, noop } from '../utils/js_utils';\n/**\n * Provides a set of static methods for creating Disposables.\n * @param {Function} action Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n */\n\nvar Disposable =\n/** @class */\nfunction () {\n var Disposable = /*#__PURE__*/function () {\n function Disposable(action) {\n _classCallCheck(this, Disposable);\n\n this.isDisposed = false;\n this.action = isFunction(action) ? action : noop;\n }\n /**\n * Validates whether the given object is a disposable\n * @param {Object} Object to test whether it has a dispose method\n * @returns {Boolean} true if a disposable object, else false.\n */\n\n\n _createClass(Disposable, [{\n key: \"dispose\",\n\n /** Performs the task of cleaning up resources. */\n value: function dispose() {\n if (!this.isDisposed) {\n this.action();\n this.isDisposed = true;\n }\n }\n }], [{\n key: \"isDisposable\",\n value: function isDisposable(d) {\n return Boolean(d && isFunction(d.dispose));\n }\n }, {\n key: \"_fixup\",\n value: function _fixup(result) {\n return Disposable.isDisposable(result) ? result : Disposable.empty;\n }\n /**\n * Creates a disposable object that invokes the specified action when disposed.\n * @param {Function} dispose Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n * @return {Disposable} The disposable object that runs the given action upon disposal.\n */\n\n }, {\n key: \"create\",\n value: function create(action) {\n return new Disposable(action);\n }\n }]);\n\n return Disposable;\n }();\n /**\n * Gets the disposable that does nothing when disposed.\n */\n\n\n Disposable.empty = {\n dispose: noop\n };\n return Disposable;\n}();\n\nexport { Disposable };\n/**\n * Represents a group of disposable resources that are disposed together.\n * @constructor\n */\n\nexport var CompositeDisposable = /*#__PURE__*/function () {\n function CompositeDisposable() {\n _classCallCheck(this, CompositeDisposable);\n\n this.isDisposed = false;\n\n for (var _len = arguments.length, disposables = new Array(_len), _key = 0; _key < _len; _key++) {\n disposables[_key] = arguments[_key];\n }\n\n this.disposables = disposables;\n }\n /**\n * Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.\n * @param {Any} item Disposable to add.\n */\n\n\n _createClass(CompositeDisposable, [{\n key: \"add\",\n value: function add(item) {\n if (this.isDisposed) {\n item.dispose();\n } else {\n this.disposables.push(item);\n }\n }\n /**\n * Removes and disposes the first occurrence of a disposable from the CompositeDisposable.\n * @param {Any} item Disposable to remove.\n * @returns {Boolean} true if found; false otherwise.\n */\n\n }, {\n key: \"remove\",\n value: function remove(item) {\n var shouldDispose = false;\n\n if (!this.isDisposed) {\n var idx = this.disposables.indexOf(item);\n\n if (idx !== -1) {\n shouldDispose = true;\n this.disposables.splice(idx, 1);\n item.dispose();\n }\n }\n\n return shouldDispose;\n }\n /**\n * Disposes all disposables in the group and removes them from the group but\n * does not dispose the CompositeDisposable.\n */\n\n }, {\n key: \"clear\",\n value: function clear() {\n if (!this.isDisposed) {\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n\n this.disposables = [];\n\n for (var _i = 0; _i < len; _i++) {\n currentDisposables[_i].dispose();\n }\n }\n }\n /**\n * Disposes all disposables in the group and removes them from the group.\n */\n\n }, {\n key: \"dispose\",\n value: function dispose() {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n\n this.disposables = [];\n\n for (var _i2 = 0; _i2 < len; _i2++) {\n currentDisposables[_i2].dispose();\n }\n }\n }\n }]);\n\n return CompositeDisposable;\n}();\n/**\n * Represents a disposable resource whose underlying disposable resource can\n * be replaced by another disposable resource, causing automatic disposal of\n * the previous underlying disposable resource.\n */\n\nexport var SerialDisposable = /*#__PURE__*/function () {\n function SerialDisposable() {\n _classCallCheck(this, SerialDisposable);\n\n this.isDisposed = false;\n }\n /**\n * Gets the underlying disposable.\n * @returns {Any} the underlying disposable.\n */\n\n\n _createClass(SerialDisposable, [{\n key: \"getDisposable\",\n value: function getDisposable() {\n return this.current;\n }\n }, {\n key: \"setDisposable\",\n value: function setDisposable(value) {\n var shouldDispose = this.isDisposed;\n\n if (!shouldDispose) {\n var old = this.current;\n this.current = value;\n\n if (old) {\n old.dispose();\n }\n }\n\n if (shouldDispose && value) {\n value.dispose();\n }\n }\n /** Performs the task of cleaning up resources. */\n\n }, {\n key: \"dispose\",\n value: function dispose() {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var old = this.current;\n this.current = undefined;\n\n if (old) {\n old.dispose();\n }\n }\n }\n }]);\n\n return SerialDisposable;\n}();","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport * as React from 'react';\nimport { shallowEqual } from '@react-dnd/shallowequal';\nimport { invariant } from '@react-dnd/invariant';\nimport hoistStatics from 'hoist-non-react-statics';\nimport { DndContext } from '../common/DndContext';\nimport { isPlainObject } from '../utils/js_utils';\nimport { Disposable, CompositeDisposable, SerialDisposable } from './disposables';\nimport { isRefable } from './utils';\nexport function decorateHandler(_ref) {\n var DecoratedComponent = _ref.DecoratedComponent,\n createHandler = _ref.createHandler,\n createMonitor = _ref.createMonitor,\n createConnector = _ref.createConnector,\n registerHandler = _ref.registerHandler,\n containerDisplayName = _ref.containerDisplayName,\n getType = _ref.getType,\n collect = _ref.collect,\n options = _ref.options;\n var _options$arePropsEqua = options.arePropsEqual,\n arePropsEqual = _options$arePropsEqua === void 0 ? shallowEqual : _options$arePropsEqua;\n var Decorated = DecoratedComponent;\n var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';\n\n var DragDropContainer =\n /** @class */\n function () {\n var DragDropContainer = /*#__PURE__*/function (_React$Component) {\n _inherits(DragDropContainer, _React$Component);\n\n var _super = _createSuper(DragDropContainer);\n\n function DragDropContainer(props) {\n var _this;\n\n _classCallCheck(this, DragDropContainer);\n\n _this = _super.call(this, props);\n _this.decoratedRef = React.createRef();\n\n _this.handleChange = function () {\n var nextState = _this.getCurrentState();\n\n if (!shallowEqual(nextState, _this.state)) {\n _this.setState(nextState);\n }\n };\n\n _this.disposable = new SerialDisposable();\n\n _this.receiveProps(props);\n\n _this.dispose();\n\n return _this;\n }\n\n _createClass(DragDropContainer, [{\n key: \"getHandlerId\",\n value: function getHandlerId() {\n return this.handlerId;\n }\n }, {\n key: \"getDecoratedComponentInstance\",\n value: function getDecoratedComponentInstance() {\n invariant(this.decoratedRef.current, 'In order to access an instance of the decorated component, it must either be a class component or use React.forwardRef()');\n return this.decoratedRef.current;\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n return !arePropsEqual(nextProps, this.props) || !shallowEqual(nextState, this.state);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.disposable = new SerialDisposable();\n this.currentType = undefined;\n this.receiveProps(this.props);\n this.handleChange();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (!arePropsEqual(this.props, prevProps)) {\n this.receiveProps(this.props);\n this.handleChange();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.dispose();\n }\n }, {\n key: \"receiveProps\",\n value: function receiveProps(props) {\n if (!this.handler) {\n return;\n }\n\n this.handler.receiveProps(props);\n this.receiveType(getType(props));\n }\n }, {\n key: \"receiveType\",\n value: function receiveType(type) {\n if (!this.handlerMonitor || !this.manager || !this.handlerConnector) {\n return;\n }\n\n if (type === this.currentType) {\n return;\n }\n\n this.currentType = type;\n\n var _registerHandler = registerHandler(type, this.handler, this.manager),\n _registerHandler2 = _slicedToArray(_registerHandler, 2),\n handlerId = _registerHandler2[0],\n unregister = _registerHandler2[1];\n\n this.handlerId = handlerId;\n this.handlerMonitor.receiveHandlerId(handlerId);\n this.handlerConnector.receiveHandlerId(handlerId);\n var globalMonitor = this.manager.getMonitor();\n var unsubscribe = globalMonitor.subscribeToStateChange(this.handleChange, {\n handlerIds: [handlerId]\n });\n this.disposable.setDisposable(new CompositeDisposable(new Disposable(unsubscribe), new Disposable(unregister)));\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n this.disposable.dispose();\n\n if (this.handlerConnector) {\n this.handlerConnector.receiveHandlerId(null);\n }\n }\n }, {\n key: \"getCurrentState\",\n value: function getCurrentState() {\n if (!this.handlerConnector) {\n return {};\n }\n\n var nextState = collect(this.handlerConnector.hooks, this.handlerMonitor, this.props);\n\n if (process.env.NODE_ENV !== 'production') {\n invariant(isPlainObject(nextState), 'Expected `collect` specified as the second argument to ' + '%s for %s to return a plain object of props to inject. ' + 'Instead, received %s.', containerDisplayName, displayName, nextState);\n }\n\n return nextState;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(DndContext.Consumer, null, function (_ref2) {\n var dragDropManager = _ref2.dragDropManager;\n\n _this2.receiveDragDropManager(dragDropManager);\n\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(function () {\n var _this2$handlerConnect;\n\n return (_this2$handlerConnect = _this2.handlerConnector) === null || _this2$handlerConnect === void 0 ? void 0 : _this2$handlerConnect.reconnect();\n });\n }\n\n return React.createElement(Decorated, Object.assign({}, _this2.props, _this2.getCurrentState(), {\n // NOTE: if Decorated is a Function Component, decoratedRef will not be populated unless it's a refforwarding component.\n ref: isRefable(Decorated) ? _this2.decoratedRef : null\n }));\n });\n }\n }, {\n key: \"receiveDragDropManager\",\n value: function receiveDragDropManager(dragDropManager) {\n if (this.manager !== undefined) {\n return;\n }\n\n invariant(dragDropManager !== undefined, 'Could not find the drag and drop manager in the context of %s. ' + 'Make sure to render a DndProvider component in your top-level component. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/troubleshooting#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n\n if (dragDropManager === undefined) {\n return;\n }\n\n this.manager = dragDropManager;\n this.handlerMonitor = createMonitor(dragDropManager);\n this.handlerConnector = createConnector(dragDropManager.getBackend());\n this.handler = createHandler(this.handlerMonitor, this.decoratedRef);\n }\n }]);\n\n return DragDropContainer;\n }(React.Component);\n\n DragDropContainer.DecoratedComponent = DecoratedComponent;\n DragDropContainer.displayName = \"\".concat(containerDisplayName, \"(\").concat(displayName, \")\");\n return DragDropContainer;\n }();\n\n return hoistStatics(DragDropContainer, DecoratedComponent);\n}","export function getDecoratedComponent(instanceRef) {\n var currentRef = instanceRef.current;\n\n if (currentRef == null) {\n return null;\n } else if (currentRef.decoratedRef) {\n // go through the private field in decorateHandler to avoid the invariant hit\n return currentRef.decoratedRef.current;\n } else {\n return currentRef;\n }\n}\nexport function isClassComponent(Component) {\n return Component && Component.prototype && typeof Component.prototype.render === 'function';\n}\nexport function isRefForwardingComponent(C) {\n var _item$$$typeof;\n\n var item = C;\n return (item === null || item === void 0 ? void 0 : (_item$$$typeof = item.$$typeof) === null || _item$$$typeof === void 0 ? void 0 : _item$$$typeof.toString()) === 'Symbol(react.forward_ref)';\n}\nexport function isRefable(C) {\n return isClassComponent(C) || isRefForwardingComponent(C);\n}\nexport function checkDecoratorArguments(functionName, signature) {\n if (process.env.NODE_ENV !== 'production') {\n for (var i = 0; i < (arguments.length <= 2 ? 0 : arguments.length - 2); i++) {\n var arg = i + 2 < 2 || arguments.length <= i + 2 ? undefined : arguments[i + 2];\n\n if (arg && arg.prototype && arg.prototype.render) {\n // eslint-disable-next-line no-console\n console.error('You seem to be applying the arguments in the wrong order. ' + \"It should be \".concat(functionName, \"(\").concat(signature, \")(Component), not the other way around. \") + 'Read more: http://react-dnd.github.io/react-dnd/docs/troubleshooting#you-seem-to-be-applying-the-arguments-in-the-wrong-order');\n return;\n }\n }\n }\n}","import { useLayoutEffect, useEffect } from 'react'; // suppress the useLayoutEffect warning on server side.\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { shallowEqual } from '@react-dnd/shallowequal';\nimport { useState, useCallback } from 'react';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n/**\n *\n * @param monitor The monitor to collect state from\n * @param collect The collecting function\n * @param onUpdate A method to invoke when updates occur\n */\n\nexport function useCollector(monitor, collect, onUpdate) {\n var _useState = useState(function () {\n return collect(monitor);\n }),\n _useState2 = _slicedToArray(_useState, 2),\n collected = _useState2[0],\n setCollected = _useState2[1];\n\n var updateCollected = useCallback(function () {\n var nextValue = collect(monitor);\n\n if (!shallowEqual(collected, nextValue)) {\n setCollected(nextValue);\n\n if (onUpdate) {\n onUpdate();\n }\n }\n }, [collected, monitor, onUpdate]); // update the collected properties after the first render\n // and the components are attached to dnd-core\n\n useIsomorphicLayoutEffect(updateCollected, []);\n return [collected, updateCollected];\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport { useCollector } from './useCollector';\nexport function useMonitorOutput(monitor, collect, onCollect) {\n var _useCollector = useCollector(monitor, collect, onCollect),\n _useCollector2 = _slicedToArray(_useCollector, 2),\n collected = _useCollector2[0],\n updateCollected = _useCollector2[1];\n\n useIsomorphicLayoutEffect(function subscribeToMonitorStateChange() {\n var handlerId = monitor.getHandlerId();\n\n if (handlerId == null) {\n return undefined;\n }\n\n return monitor.subscribeToStateChange(updateCollected, {\n handlerIds: [handlerId]\n });\n }, [monitor, updateCollected]);\n return collected;\n}","import { useContext } from 'react';\nimport { invariant } from '@react-dnd/invariant';\nimport { DndContext } from '../common/DndContext';\n/**\n * A hook to retrieve the DragDropManager from Context\n */\n\nexport function useDragDropManager() {\n var _useContext = useContext(DndContext),\n dragDropManager = _useContext.dragDropManager;\n\n invariant(dragDropManager != null, 'Expected drag drop context');\n return dragDropManager;\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { useMemo } from 'react';\nimport { invariant } from '@react-dnd/invariant';\nimport { registerSource } from '../../common/registration';\nimport { useDragDropManager } from '../useDragDropManager';\nimport { DragSourceMonitorImpl } from '../../common/DragSourceMonitorImpl';\nimport { SourceConnector } from '../../common/SourceConnector';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nexport function useDragSourceMonitor() {\n var manager = useDragDropManager();\n var monitor = useMemo(function () {\n return new DragSourceMonitorImpl(manager);\n }, [manager]);\n var connector = useMemo(function () {\n return new SourceConnector(manager.getBackend());\n }, [manager]);\n return [monitor, connector];\n}\nexport function useDragHandler(spec, monitor, connector) {\n var manager = useDragDropManager();\n var handler = useMemo(function () {\n return {\n beginDrag: function beginDrag() {\n var _spec$current = spec.current,\n begin = _spec$current.begin,\n item = _spec$current.item;\n\n if (begin) {\n var beginResult = begin(monitor);\n invariant(beginResult == null || _typeof(beginResult) === 'object', 'dragSpec.begin() must either return an object, undefined, or null');\n return beginResult || item || {};\n }\n\n return item || {};\n },\n canDrag: function canDrag() {\n if (typeof spec.current.canDrag === 'boolean') {\n return spec.current.canDrag;\n } else if (typeof spec.current.canDrag === 'function') {\n return spec.current.canDrag(monitor);\n } else {\n return true;\n }\n },\n isDragging: function isDragging(globalMonitor, target) {\n var isDragging = spec.current.isDragging;\n return isDragging ? isDragging(monitor) : target === globalMonitor.getSourceId();\n },\n endDrag: function endDrag() {\n var end = spec.current.end;\n\n if (end) {\n end(monitor.getItem(), monitor);\n }\n\n connector.reconnect();\n }\n };\n }, []);\n useIsomorphicLayoutEffect(function registerHandler() {\n var _registerSource = registerSource(spec.current.item.type, handler, manager),\n _registerSource2 = _slicedToArray(_registerSource, 2),\n handlerId = _registerSource2[0],\n unregister = _registerSource2[1];\n\n monitor.receiveHandlerId(handlerId);\n connector.receiveHandlerId(handlerId);\n return unregister;\n }, []);\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { useRef, useMemo } from 'react';\nimport { invariant } from '@react-dnd/invariant';\nimport { useMonitorOutput } from './internal/useMonitorOutput';\nimport { useIsomorphicLayoutEffect } from './internal/useIsomorphicLayoutEffect';\nimport { useDragSourceMonitor, useDragHandler } from './internal/drag';\n/**\n * useDragSource hook\n * @param sourceSpec The drag source specification *\n */\n\nexport function useDrag(spec) {\n var specRef = useRef(spec);\n specRef.current = spec; // TODO: wire options into createSourceConnector\n\n invariant(spec.item != null, 'item must be defined');\n invariant(spec.item.type != null, 'item type must be defined');\n\n var _useDragSourceMonitor = useDragSourceMonitor(),\n _useDragSourceMonitor2 = _slicedToArray(_useDragSourceMonitor, 2),\n monitor = _useDragSourceMonitor2[0],\n connector = _useDragSourceMonitor2[1];\n\n useDragHandler(specRef, monitor, connector);\n var result = useMonitorOutput(monitor, specRef.current.collect || function () {\n return {};\n }, function () {\n return connector.reconnect();\n });\n var connectDragSource = useMemo(function () {\n return connector.hooks.dragSource();\n }, [connector]);\n var connectDragPreview = useMemo(function () {\n return connector.hooks.dragPreview();\n }, [connector]);\n useIsomorphicLayoutEffect(function () {\n connector.dragSourceOptions = specRef.current.options || null;\n connector.reconnect();\n }, [connector]);\n useIsomorphicLayoutEffect(function () {\n connector.dragPreviewOptions = specRef.current.previewOptions || null;\n connector.reconnect();\n }, [connector]);\n return [result, connectDragSource, connectDragPreview];\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { useMemo } from 'react';\nimport { registerTarget } from '../../common/registration';\nimport { useDragDropManager } from '../useDragDropManager';\nimport { TargetConnector } from '../../common/TargetConnector';\nimport { DropTargetMonitorImpl } from '../../common/DropTargetMonitorImpl';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nexport function useDropTargetMonitor() {\n var manager = useDragDropManager();\n var monitor = useMemo(function () {\n return new DropTargetMonitorImpl(manager);\n }, [manager]);\n var connector = useMemo(function () {\n return new TargetConnector(manager.getBackend());\n }, [manager]);\n return [monitor, connector];\n}\nexport function useDropHandler(spec, monitor, connector) {\n var manager = useDragDropManager();\n var handler = useMemo(function () {\n return {\n canDrop: function canDrop() {\n var canDrop = spec.current.canDrop;\n return canDrop ? canDrop(monitor.getItem(), monitor) : true;\n },\n hover: function hover() {\n var hover = spec.current.hover;\n\n if (hover) {\n hover(monitor.getItem(), monitor);\n }\n },\n drop: function drop() {\n var drop = spec.current.drop;\n\n if (drop) {\n return drop(monitor.getItem(), monitor);\n }\n }\n };\n }, [monitor]);\n useIsomorphicLayoutEffect(function registerHandler() {\n var _registerTarget = registerTarget(spec.current.accept, handler, manager),\n _registerTarget2 = _slicedToArray(_registerTarget, 2),\n handlerId = _registerTarget2[0],\n unregister = _registerTarget2[1];\n\n monitor.receiveHandlerId(handlerId);\n connector.receiveHandlerId(handlerId);\n return unregister;\n }, [monitor, connector]);\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { useRef, useMemo } from 'react';\nimport { invariant } from '@react-dnd/invariant';\nimport { useMonitorOutput } from './internal/useMonitorOutput';\nimport { useIsomorphicLayoutEffect } from './internal/useIsomorphicLayoutEffect';\nimport { useDropHandler, useDropTargetMonitor } from './internal/drop';\n/**\n * useDropTarget Hook\n * @param spec The drop target specification\n */\n\nexport function useDrop(spec) {\n var specRef = useRef(spec);\n specRef.current = spec;\n invariant(spec.accept != null, 'accept must be defined');\n\n var _useDropTargetMonitor = useDropTargetMonitor(),\n _useDropTargetMonitor2 = _slicedToArray(_useDropTargetMonitor, 2),\n monitor = _useDropTargetMonitor2[0],\n connector = _useDropTargetMonitor2[1];\n\n useDropHandler(specRef, monitor, connector);\n var result = useMonitorOutput(monitor, specRef.current.collect || function () {\n return {};\n }, function () {\n return connector.reconnect();\n });\n var connectDropTarget = useMemo(function () {\n return connector.hooks.dropTarget();\n }, [connector]);\n useIsomorphicLayoutEffect(function () {\n connector.dropTargetOptions = spec.options || null;\n connector.reconnect();\n }, [spec.options]);\n return [result, connectDropTarget];\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { useEffect } from 'react';\nimport { useDragDropManager } from './useDragDropManager';\nimport { useCollector } from './internal/useCollector';\n/**\n * useDragLayer Hook\n * @param collector The property collector\n */\n\nexport function useDragLayer(collect) {\n var dragDropManager = useDragDropManager();\n var monitor = dragDropManager.getMonitor();\n\n var _useCollector = useCollector(monitor, collect),\n _useCollector2 = _slicedToArray(_useCollector, 2),\n collected = _useCollector2[0],\n updateCollected = _useCollector2[1];\n\n useEffect(function () {\n return monitor.subscribeToOffsetChange(updateCollected);\n });\n useEffect(function () {\n return monitor.subscribeToStateChange(updateCollected);\n });\n return collected;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nexport function isRef(obj) {\n return (// eslint-disable-next-line no-prototype-builtins\n obj !== null && _typeof(obj) === 'object' && Object.prototype.hasOwnProperty.call(obj, 'current')\n );\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nexport function isValidType(type, allowArray) {\n return typeof type === 'string' || _typeof(type) === 'symbol' || !!allowArray && Array.isArray(type) && type.every(function (t) {\n return isValidType(t, false);\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// cheap lodash replacements\nexport function isFunction(input) {\n return typeof input === 'function';\n}\nexport function noop() {// noop\n}\n\nfunction isObjectLike(input) {\n return _typeof(input) === 'object' && input !== null;\n}\n\nexport function isPlainObject(input) {\n if (!isObjectLike(input)) {\n return false;\n }\n\n if (Object.getPrototypeOf(input) === null) {\n return true;\n }\n\n var proto = input;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(input) === proto;\n}","/** @license React v16.11.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),q=require(\"scheduler\");function u(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1)});var sb=/[\\-:]([a-z])/g;function tb(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(sb,\ntb);D[b]=new B(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(sb,tb);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(sb,tb);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0)});function ub(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}\nfunction vb(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2=b.length))throw Error(u(93));b=b[0]}c=b}null==c&&(c=\"\")}a._wrapperState={initialValue:ub(c)}}\nfunction Mb(a,b){var c=ub(b.value),d=ub(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Nb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Ob={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Pb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Qb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Pb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Rb,Sb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Ob.svg||\"innerHTML\"in a)a.innerHTML=b;else{Rb=Rb||document.createElement(\"div\");Rb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=Rb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Tb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Ub(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Vb={animationend:Ub(\"Animation\",\"AnimationEnd\"),animationiteration:Ub(\"Animation\",\"AnimationIteration\"),animationstart:Ub(\"Animation\",\"AnimationStart\"),transitionend:Ub(\"Transition\",\"TransitionEnd\")},Wb={},Xb={};\nYa&&(Xb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Vb.animationend.animation,delete Vb.animationiteration.animation,delete Vb.animationstart.animation),\"TransitionEvent\"in window||delete Vb.transitionend.transition);function Yb(a){if(Wb[a])return Wb[a];if(!Vb[a])return a;var b=Vb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Xb)return Wb[a]=b[c];return a}var Zb=Yb(\"animationend\"),$b=Yb(\"animationiteration\"),ac=Yb(\"animationstart\"),bc=Yb(\"transitionend\"),dc=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \");\nfunction ec(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function fc(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function gc(a){if(ec(a)!==a)throw Error(u(188));}\nfunction hc(a){var b=a.alternate;if(!b){b=ec(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return gc(e),a;if(f===d)return gc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function ic(a){a=hc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nvar jc,kc,lc,mc=!1,nc=[],oc=null,pc=null,qc=null,rc=new Map,sc=new Map,tc=[],uc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),vc=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\nfunction wc(a){var b=xc(a);uc.forEach(function(c){yc(c,a,b)});vc.forEach(function(c){yc(c,a,b)})}function zc(a,b,c,d){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:d}}function Ac(a,b){switch(a){case \"focus\":case \"blur\":oc=null;break;case \"dragenter\":case \"dragleave\":pc=null;break;case \"mouseover\":case \"mouseout\":qc=null;break;case \"pointerover\":case \"pointerout\":rc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":sc.delete(b.pointerId)}}\nfunction Bc(a,b,c,d,e){if(null===a||a.nativeEvent!==e)return a=zc(b,c,d,e),null!==b&&(b=Cc(b),null!==b&&kc(b)),a;a.eventSystemFlags|=d;return a}function Dc(a,b,c,d){switch(b){case \"focus\":return oc=Bc(oc,a,b,c,d),!0;case \"dragenter\":return pc=Bc(pc,a,b,c,d),!0;case \"mouseover\":return qc=Bc(qc,a,b,c,d),!0;case \"pointerover\":var e=d.pointerId;rc.set(e,Bc(rc.get(e)||null,a,b,c,d));return!0;case \"gotpointercapture\":return e=d.pointerId,sc.set(e,Bc(sc.get(e)||null,a,b,c,d)),!0}return!1}\nfunction Ec(a){var b=Fc(a.target);if(null!==b){var c=ec(b);if(null!==c)if(b=c.tag,13===b){if(b=fc(c),null!==b){a.blockedOn=b;q.unstable_runWithPriority(a.priority,function(){lc(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function Gc(a){if(null!==a.blockedOn)return!1;var b=Hc(a.topLevelType,a.eventSystemFlags,a.nativeEvent);if(null!==b){var c=Cc(b);null!==c&&kc(c);a.blockedOn=b;return!1}return!0}\nfunction Ic(a,b,c){Gc(a)&&c.delete(b)}function Jc(){for(mc=!1;0this.eventPool.length&&this.eventPool.push(a)}function Vc(a){a.eventPool=[];a.getPooled=Wc;a.release=Xc}var Yc=E.extend({animationName:null,elapsedTime:null,pseudoElement:null}),Zc=E.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),$c=E.extend({view:null,detail:null}),ad=$c.extend({relatedTarget:null});\nfunction bd(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar cd={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},ed={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},fd={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function gd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=fd[a])?!!b[a]:!1}function hd(){return gd}\nvar id=$c.extend({key:function(a){if(a.key){var b=cd[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=bd(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?ed[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:hd,charCode:function(a){return\"keypress\"===a.type?bd(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?bd(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),jd=0,kd=0,ld=!1,md=!1,nd=$c.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:hd,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=jd;jd=a.screenX;return ld?\"mousemove\"===a.type?a.screenX-\nb:0:(ld=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;var b=kd;kd=a.screenY;return md?\"mousemove\"===a.type?a.screenY-b:0:(md=!0,0)}}),od=nd.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),pd=nd.extend({dataTransfer:null}),qd=$c.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:hd}),rd=E.extend({propertyName:null,\nelapsedTime:null,pseudoElement:null}),sd=nd.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),td=[[\"blur\",\"blur\",0],[\"cancel\",\"cancel\",0],[\"click\",\"click\",0],[\"close\",\"close\",0],[\"contextmenu\",\"contextMenu\",0],[\"copy\",\"copy\",0],[\"cut\",\"cut\",0],[\"auxclick\",\"auxClick\",0],[\"dblclick\",\"doubleClick\",0],[\"dragend\",\"dragEnd\",\n0],[\"dragstart\",\"dragStart\",0],[\"drop\",\"drop\",0],[\"focus\",\"focus\",0],[\"input\",\"input\",0],[\"invalid\",\"invalid\",0],[\"keydown\",\"keyDown\",0],[\"keypress\",\"keyPress\",0],[\"keyup\",\"keyUp\",0],[\"mousedown\",\"mouseDown\",0],[\"mouseup\",\"mouseUp\",0],[\"paste\",\"paste\",0],[\"pause\",\"pause\",0],[\"play\",\"play\",0],[\"pointercancel\",\"pointerCancel\",0],[\"pointerdown\",\"pointerDown\",0],[\"pointerup\",\"pointerUp\",0],[\"ratechange\",\"rateChange\",0],[\"reset\",\"reset\",0],[\"seeked\",\"seeked\",0],[\"submit\",\"submit\",0],[\"touchcancel\",\"touchCancel\",\n0],[\"touchend\",\"touchEnd\",0],[\"touchstart\",\"touchStart\",0],[\"volumechange\",\"volumeChange\",0],[\"drag\",\"drag\",1],[\"dragenter\",\"dragEnter\",1],[\"dragexit\",\"dragExit\",1],[\"dragleave\",\"dragLeave\",1],[\"dragover\",\"dragOver\",1],[\"mousemove\",\"mouseMove\",1],[\"mouseout\",\"mouseOut\",1],[\"mouseover\",\"mouseOver\",1],[\"pointermove\",\"pointerMove\",1],[\"pointerout\",\"pointerOut\",1],[\"pointerover\",\"pointerOver\",1],[\"scroll\",\"scroll\",1],[\"toggle\",\"toggle\",1],[\"touchmove\",\"touchMove\",1],[\"wheel\",\"wheel\",1],[\"abort\",\"abort\",\n2],[Zb,\"animationEnd\",2],[$b,\"animationIteration\",2],[ac,\"animationStart\",2],[\"canplay\",\"canPlay\",2],[\"canplaythrough\",\"canPlayThrough\",2],[\"durationchange\",\"durationChange\",2],[\"emptied\",\"emptied\",2],[\"encrypted\",\"encrypted\",2],[\"ended\",\"ended\",2],[\"error\",\"error\",2],[\"gotpointercapture\",\"gotPointerCapture\",2],[\"load\",\"load\",2],[\"loadeddata\",\"loadedData\",2],[\"loadedmetadata\",\"loadedMetadata\",2],[\"loadstart\",\"loadStart\",2],[\"lostpointercapture\",\"lostPointerCapture\",2],[\"playing\",\"playing\",2],[\"progress\",\n\"progress\",2],[\"seeking\",\"seeking\",2],[\"stalled\",\"stalled\",2],[\"suspend\",\"suspend\",2],[\"timeupdate\",\"timeUpdate\",2],[bc,\"transitionEnd\",2],[\"waiting\",\"waiting\",2]],ud={},vd={},xd=0;for(;xd=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ce(c)}}\nfunction ee(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?ee(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function fe(){for(var a=window,b=be();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=be(a.document)}return b}\nfunction ge(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var he=\"$\",ie=\"/$\",je=\"$?\",ke=\"$!\",le=null,me=null;function ne(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction oe(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var pe=\"function\"===typeof setTimeout?setTimeout:void 0,qe=\"function\"===typeof clearTimeout?clearTimeout:void 0;function re(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction se(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===he||c===ke||c===je){if(0===b)return a;b--}else c===ie&&b++}a=a.previousSibling}return null}var te=Math.random().toString(36).slice(2),ue=\"__reactInternalInstance$\"+te,ve=\"__reactEventHandlers$\"+te,we=\"__reactContainere$\"+te;\nfunction Fc(a){var b=a[ue];if(b)return b;for(var c=a.parentNode;c;){if(b=c[we]||c[ue]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=se(a);null!==a;){if(c=a[ue])return c;a=se(a)}return b}a=c;c=a.parentNode}return null}function Cc(a){a=a[ue]||a[we];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function xe(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function ye(a){return a[ve]||null}var ze=null,Ae=null,Be=null;\nfunction Ce(){if(Be)return Be;var a,b=Ae,c=b.length,d,e=\"value\"in ze?ze.value:ze.textContent,f=e.length;for(a=0;a=He),Ke=String.fromCharCode(32),Le={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},Me=!1;\nfunction Ne(a,b){switch(a){case \"keyup\":return-1!==Fe.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function Oe(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var Pe=!1;function Qe(a,b){switch(a){case \"compositionend\":return Oe(b);case \"keypress\":if(32!==b.which)return null;Me=!0;return Ke;case \"textInput\":return a=b.data,a===Ke&&Me?null:a;default:return null}}\nfunction Re(a,b){if(Pe)return\"compositionend\"===a||!Ge&&Ne(a,b)?(a=Ce(),Be=Ae=ze=null,Pe=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=document.documentMode,sf={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},tf=null,uf=null,vf=null,wf=!1;\nfunction xf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(wf||null==tf||tf!==be(c))return null;c=tf;\"selectionStart\"in c&&ge(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return vf&&qf(vf,c)?null:(vf=c,a=E.getPooled(sf.select,uf,a,b),a.type=\"select\",a.target=tf,Sc(a),a)}\nvar yf={eventTypes:sf,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=xc(e);f=ja.onSelect;for(var g=0;gBf||(a.current=Af[Bf],Af[Bf]=null,Bf--)}\nfunction I(a,b){Bf++;Af[Bf]=a.current;a.current=b}var Cf={},J={current:Cf},K={current:!1},Df=Cf;function Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Ff(a){G(K,a);G(J,a)}function Gf(a){G(K,a);G(J,a)}function Hf(a,b,c){if(J.current!==Cf)throw Error(u(168));I(J,b,a);I(K,c,a)}function If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,Wa(b)||\"Unknown\",e));return n({},c,{},d)}function Jf(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||Cf;Df=J.current;I(J,b,a);I(K,K.current,a);return!0}\nfunction Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(b=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=b,G(K,a),G(J,a),I(J,b,a)):G(K,a);I(K,c,a)}\nvar Lf=q.unstable_runWithPriority,Mf=q.unstable_scheduleCallback,Nf=q.unstable_cancelCallback,Of=q.unstable_shouldYield,Pf=q.unstable_requestPaint,Qf=q.unstable_now,Rf=q.unstable_getCurrentPriorityLevel,Sf=q.unstable_ImmediatePriority,Tf=q.unstable_UserBlockingPriority,Uf=q.unstable_NormalPriority,Vf=q.unstable_LowPriority,Wf=q.unstable_IdlePriority,Xf={},Yf=void 0!==Pf?Pf:function(){},Zf=null,$f=null,ag=!1,bg=Qf(),cg=1E4>bg?Qf:function(){return Qf()-bg};\nfunction dg(){switch(Rf()){case Sf:return 99;case Tf:return 98;case Uf:return 97;case Vf:return 96;case Wf:return 95;default:throw Error(u(332));}}function eg(a){switch(a){case 99:return Sf;case 98:return Tf;case 97:return Uf;case 96:return Vf;case 95:return Wf;default:throw Error(u(332));}}function fg(a,b){a=eg(a);return Lf(a,b)}function gg(a,b,c){a=eg(a);return Mf(a,b,c)}function hg(a){null===Zf?(Zf=[a],$f=Mf(Sf,ig)):Zf.push(a);return Xf}function jg(){if(null!==$f){var a=$f;$f=null;Nf(a)}ig()}\nfunction ig(){if(!ag&&null!==Zf){ag=!0;var a=0;try{var b=Zf;fg(99,function(){for(;a=b&&(wg=!0),a.firstContext=null)}function xg(a,b){if(qg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)qg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===pg){if(null===og)throw Error(u(308));pg=b;og.dependencies={expirationTime:0,firstContext:b,responders:null}}else pg=pg.next=b}return a._currentValue}var yg=!1;\nfunction zg(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Ag(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction Bg(a,b){return{expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function Cg(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction Dg(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=zg(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=zg(a.memoizedState),e=c.updateQueue=zg(c.memoizedState)):d=a.updateQueue=Ag(e):null===e&&(e=c.updateQueue=Ag(d));null===e||d===e?Cg(d,b):null===d.lastUpdate||null===e.lastUpdate?(Cg(d,b),Cg(e,b)):(Cg(d,b),e.lastUpdate=b)}\nfunction Eg(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=zg(a.memoizedState):Fg(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function Fg(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=Ag(b));return b}\nfunction Gg(a,b,c,d,e,f){switch(c.tag){case 1:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case 3:a.effectTag=a.effectTag&-4097|64;case 0:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return n({},d,e);case 2:yg=!0}return d}\nfunction Hg(a,b,c,d,e){yg=!1;b=Fg(a,b);for(var f=b.baseState,g=null,h=0,k=b.firstUpdate,l=f;null!==k;){var m=k.expirationTime;mx?(A=r,r=null):A=r.sibling;var p=y(e,r,h[x],k);if(null===p){null===r&&(r=A);break}a&&\nr&&null===p.alternate&&b(e,r);g=f(p,g,x);null===m?l=p:m.sibling=p;m=p;r=A}if(x===h.length)return c(e,r),l;if(null===r){for(;xx?(A=r,r=null):A=r.sibling;var z=y(e,r,p.value,k);if(null===z){null===r&&(r=A);break}a&&r&&null===z.alternate&&b(e,r);g=f(z,g,x);null===m?l=z:m.sibling=z;m=z;r=A}if(p.done)return c(e,r),l;if(null===r){for(;!p.done;x++,p=h.next())p=C(e,p.value,k),null!==p&&(g=f(p,g,x),null===m?l=p:m.sibling=p,m=p);return l}for(r=d(e,r);!p.done;x++,p=h.next())p=H(r,e,x,p.value,k),null!==p&&(a&&null!==\np.alternate&&r.delete(null===p.key?x:p.key),g=f(p,g,x),null===m?l=p:m.sibling=p,m=p);a&&r.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===Ia&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Ga:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===Ia:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===Ia?f.props.children:f.props,h);d.ref=Yg(a,k,f);d.return=a;a=d;break a}else{c(a,\nk);break}else b(a,k);k=k.sibling}f.type===Ia?(d=eh(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=ch(f.type,f.key,f.props,null,a.mode,h),h.ref=Yg(a,d,f),h.return=a,a=h)}return g(a);case Ha:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=dh(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===\ntypeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=bh(f,a.mode,h),d.return=a,a=d),g(a);if(Xg(f))return z(a,d,f,h);if(Ua(f))return ta(a,d,f,h);l&&Zg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var fh=$g(!0),gh=$g(!1),hh={},ih={current:hh},jh={current:hh},kh={current:hh};function lh(a){if(a===hh)throw Error(u(174));return a}\nfunction mh(a,b){I(kh,b,a);I(jh,a,a);I(ih,hh,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Qb(null,\"\");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=Qb(b,c)}G(ih,a);I(ih,b,a)}function nh(a){G(ih,a);G(jh,a);G(kh,a)}function oh(a){lh(kh.current);var b=lh(ih.current);var c=Qb(b,a.type);b!==c&&(I(jh,a,a),I(ih,c,a))}function ph(a){jh.current===a&&(G(ih,a),G(jh,a))}var M={current:0};\nfunction qh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===je||c.data===ke))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function rh(a,b){return{responder:a,props:b}}\nvar sh=Ea.ReactCurrentDispatcher,N=Ea.ReactCurrentBatchConfig,th=0,uh=null,O=null,vh=null,wh=null,P=null,xh=null,yh=0,zh=null,Ah=0,Bh=!1,Ch=null,Gh=0;function Q(){throw Error(u(321));}function Hh(a,b){if(null===b)return!1;for(var c=0;cyh&&(yh=m,Jg(yh))):(Ig(m,k.suspenseConfig),f=k.eagerReducer===a?k.eagerState:a(f,k.action));g=k;k=k.next}while(null!==k&&k!==d);l||(h=g,e=f);of(f,b.memoizedState)||(wg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}\nfunction Rh(a){var b=Nh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,lastRenderedReducer:Ph,lastRenderedState:a};a=a.dispatch=Sh.bind(null,uh,a);return[b.memoizedState,a]}function Th(a){return Qh(Ph,a)}function Uh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===zh?(zh={lastEffect:null},zh.lastEffect=a.next=a):(b=zh.lastEffect,null===b?zh.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,zh.lastEffect=a));return a}\nfunction Vh(a,b,c,d){var e=Nh();Ah|=a;e.memoizedState=Uh(b,c,void 0,void 0===d?null:d)}function Wh(a,b,c,d){var e=Oh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Hh(d,g.deps)){Uh(0,c,f,d);return}}Ah|=a;e.memoizedState=Uh(b,c,f,d)}function Xh(a,b){return Vh(516,192,a,b)}function Yh(a,b){return Wh(516,192,a,b)}\nfunction Zh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function $h(){}function ai(a,b){Nh().memoizedState=[a,void 0===b?null:b];return a}function bi(a,b){var c=Oh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Hh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Sh(a,b,c){if(!(25>Gh))throw Error(u(301));var d=a.alternate;if(a===uh||null!==d&&d===uh)if(Bh=!0,a={expirationTime:th,suspenseConfig:null,action:c,eagerReducer:null,eagerState:null,next:null},null===Ch&&(Ch=new Map),c=Ch.get(b),void 0===c)Ch.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{var e=Pg(),f=Mg.suspense;e=Qg(e,a,f);f={expirationTime:e,suspenseConfig:f,action:c,eagerReducer:null,eagerState:null,next:null};var g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&\n(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===d||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var k=b.lastRenderedState,l=d(k,c);f.eagerReducer=d;f.eagerState=l;if(of(l,k))return}catch(m){}finally{}Rg(a,e)}}\nvar Lh={readContext:xg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useResponder:Q,useDeferredValue:Q,useTransition:Q},Jh={readContext:xg,useCallback:ai,useContext:xg,useEffect:Xh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,36,Zh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Vh(4,36,a,b)},useMemo:function(a,b){var c=Nh();b=void 0===b?null:b;a=a();c.memoizedState=\n[a,b];return a},useReducer:function(a,b,c){var d=Nh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Sh.bind(null,uh,a);return[d.memoizedState,a]},useRef:function(a){var b=Nh();a={current:a};return b.memoizedState=a},useState:Rh,useDebugValue:$h,useResponder:rh,useDeferredValue:function(a,b){var c=Rh(a),d=c[0],e=c[1];Xh(function(){q.unstable_next(function(){var c=N.suspense;N.suspense=void 0===b?null:b;try{e(a)}finally{N.suspense=\nc}})},[a,b]);return d},useTransition:function(a){var b=Rh(!1),c=b[0],d=b[1];return[ai(function(b){d(!0);q.unstable_next(function(){var c=N.suspense;N.suspense=void 0===a?null:a;try{d(!1),b()}finally{N.suspense=c}})},[a,c]),c]}},Kh={readContext:xg,useCallback:bi,useContext:xg,useEffect:Yh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Wh(4,36,Zh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Wh(4,36,a,b)},useMemo:function(a,b){var c=Oh();b=void 0===b?\nnull:b;var d=c.memoizedState;if(null!==d&&null!==b&&Hh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:Qh,useRef:function(){return Oh().memoizedState},useState:Th,useDebugValue:$h,useResponder:rh,useDeferredValue:function(a,b){var c=Th(a),d=c[0],e=c[1];Yh(function(){q.unstable_next(function(){var c=N.suspense;N.suspense=void 0===b?null:b;try{e(a)}finally{N.suspense=c}})},[a,b]);return d},useTransition:function(a){var b=Th(!1),c=b[0],d=b[1];return[bi(function(b){d(!0);q.unstable_next(function(){var c=\nN.suspense;N.suspense=void 0===a?null:a;try{d(!1),b()}finally{N.suspense=c}})},[a,c]),c]}},ci=null,di=null,ei=!1;function fi(a,b){var c=gi(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction hi(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ii(a){if(ei){var b=di;if(b){var c=b;if(!hi(a,b)){b=re(c.nextSibling);if(!b||!hi(a,b)){a.effectTag=a.effectTag&-1025|2;ei=!1;ci=a;return}fi(ci,c)}ci=a;di=re(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,ei=!1,ci=a}}function ji(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;ci=a}\nfunction ki(a){if(a!==ci)return!1;if(!ei)return ji(a),ei=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!oe(b,a.memoizedProps))for(b=di;b;)fi(a,b),b=re(b.nextSibling);ji(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(u(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===ie){if(0===b){di=re(a.nextSibling);break a}b--}else c!==he&&c!==ke&&c!==je||b++}a=a.nextSibling}di=null}}else di=ci?re(a.stateNode.nextSibling):null;return!0}\nfunction li(){di=ci=null;ei=!1}var mi=Ea.ReactCurrentOwner,wg=!1;function R(a,b,c,d){b.child=null===a?gh(b,null,c,d):fh(b,a.child,c,d)}function ni(a,b,c,d,e){c=c.render;var f=b.ref;vg(b,e);d=Ih(a,b,c,d,f,e);if(null!==a&&!wg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),oi(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction pi(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!qi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ri(a,b,g,d,e,f);a=ch(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(eb)&&Gj.set(a,b)))}}\nfunction Kj(a,b){a.expirationTimea?b:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=hg(Lj.bind(null,a));else{var b=Oj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Pg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Xf&&Nf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?hg(Lj.bind(null,a)):gg(d,Qj.bind(null,a),{timeout:10*(1073741821-b)-cg()});a.callbackNode=b}}}\nfunction Qj(a,b){Jj=0;if(b)return b=Pg(),Rj(a,b),Z(a),null;var c=Oj(a);if(0!==c){b=a.callbackNode;if((T&(oj|pj))!==S)throw Error(u(327));Sj();a===U&&c===W||Tj(a,c);if(null!==V){var d=T;T|=oj;var e=Uj(a);do try{Vj();break}catch(h){Wj(a,h)}while(1);rg();T=d;lj.current=e;if(X===rj)throw b=wj,Tj(a,c),Mj(a,c),Z(a),b;if(null===V)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=X,U=null,d){case qj:case rj:throw Error(u(345));case sj:Rj(a,2=c){a.lastPingedTime=c;Tj(a,c);break}}f=Oj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=pe(Yj.bind(null,a),e);break}Yj(a);break;case uj:Mj(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Xj(e));if(Bj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Tj(a,c);break}e=Oj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==yj?d=10*(1073741821-yj)-cg():1073741823===xj?d=0:(d=10*(1073741821-xj)-5E3,e=cg(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*kj(d/1960))-d,c=d?d=0:(e=g.busyDelayMs|0,f=cg()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10 component higher in the tree to provide a loading indicator or placeholder to display.\"+Xa(e))}X!==vj&&(X=sj);f=Ni(f,e);k=d;do{switch(k.tag){case 3:g=f;k.effectTag|=4096;k.expirationTime=b;var x=fj(k,g,b);Eg(k,x);break a;case 1:g=f;var A=k.type,p=k.stateNode;if(0===(k.effectTag&64)&&(\"function\"===typeof A.getDerivedStateFromError||null!==p&&\"function\"===typeof p.componentDidCatch&&\n(null===jj||!jj.has(p)))){k.effectTag|=4096;k.expirationTime=b;var t=ij(k,g,b);Eg(k,t);break a}}k=k.return}while(null!==k)}V=ek(V)}catch(v){b=v;continue}break}while(1)}function Uj(){var a=lj.current;lj.current=Lh;return null===a?Lh:a}function Ig(a,b){aAj&&(Aj=a)}function Zj(){for(;null!==V;)V=fk(V)}function Vj(){for(;null!==V&&!Of();)V=fk(V)}\nfunction fk(a){var b=gk(a.alternate,a,W);a.memoizedProps=a.pendingProps;null===b&&(b=ek(a));mj.current=null;return b}\nfunction ek(a){V=a;do{var b=V.alternate;a=V.return;if(0===(V.effectTag&2048)){a:{var c=b;b=V;var d=W;var e=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:L(b.type)&&Ff(b);break;case 3:nh(b);Gf(b);e=b.stateNode;e.pendingContext&&(e.context=e.pendingContext,e.pendingContext=null);(null===c||null===c.child)&&ki(b)&&Ci(b);Ii(b);break;case 5:ph(b);d=lh(kh.current);var f=b.type;if(null!==c&&null!=b.stateNode)Ji(c,b,f,e,d),c.ref!==b.ref&&(b.effectTag|=128);else if(e){var g=\nlh(ih.current);if(ki(b)){e=b;var h=e.stateNode;c=e.type;var k=e.memoizedProps,l=d;h[ue]=e;h[ve]=k;f=void 0;d=h;switch(c){case \"iframe\":case \"object\":case \"embed\":F(\"load\",d);break;case \"video\":case \"audio\":for(h=0;h\\x3c/script>\",h=k.removeChild(k.firstChild)):\"string\"===typeof k.is?h=h.createElement(l,{is:k.is}):(h=h.createElement(l),\"select\"===l&&(l=h,k.multiple?l.multiple=!0:k.size&&(l.size=k.size))):h=h.createElementNS(g,l);k=h;k[ue]=c;k[ve]=e;Hi(k,b,!1,!1);b.stateNode=k;l=f;c=e;var m=d,C=Zd(l,c);switch(l){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\nk);d=c;break;case \"video\":case \"audio\":for(d=0;de.tailExpiration&&1f&&(f=c),k>f&&(f=k),d=d.sibling;e.childExpirationTime=f}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=V.firstEffect),null!==V.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=V.firstEffect),\na.lastEffect=V.lastEffect),1a?b:a}function Yj(a){var b=dg();fg(99,ik.bind(null,a,b));return null}\nfunction ik(a,b){Sj();if((T&(oj|pj))!==S)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Xj(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=d-1);d<=a.lastPingedTime&&\n(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===U&&(V=U=null,W=0);1h&&(l=h,h=g,g=l),l=de(p,g),m=de(p,h),l&&m&&(1!==v.rangeCount||v.anchorNode!==l.node||v.anchorOffset!==l.offset||v.focusNode!==m.node||v.focusOffset!==m.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),v.removeAllRanges(),g>h?(v.addRange(t),v.extend(m.node,m.offset)):(t.setEnd(m.node,m.offset),v.addRange(t))))));t=[];for(v=p;v=v.parentNode;)1===v.nodeType&&t.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===\ntypeof p.focus&&p.focus();for(p=0;p=c)return yi(a,b,c);I(M,M.current&\n1,b);b=oi(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1,b);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return Bi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current,b);if(!d)return null}return oi(a,b,c)}wg=!1}}else wg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Ef(b,J.current);vg(b,c);e=Ih(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;Mh();if(L(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Og(b,d,g,a);e.updater=Sg;b.stateNode=e;e._reactInternalFiber=b;Wg(b,d,a,c);b=vi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;Va(e);if(1!==e._status)throw e._result;\ne=e._result;b.type=e;f=b.tag=nk(e);a=mg(e,a);switch(f){case 0:b=si(null,b,e,a,c);break;case 1:b=ui(null,b,e,a,c);break;case 11:b=ni(null,b,e,a,c);break;case 14:b=pi(null,b,e,mg(e.type,a),d,c);break;default:throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:mg(d,e),si(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:mg(d,e),ui(a,b,d,e,c);case 3:wi(b);d=b.updateQueue;if(null===d)throw Error(u(282));e=b.memoizedState;e=null!==e?e.element:\nnull;Hg(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)li(),b=oi(a,b,c);else{if(e=b.stateNode.hydrate)di=re(b.stateNode.containerInfo.firstChild),ci=b,e=ei=!0;if(e)for(c=gh(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),li();b=b.child}return b;case 5:return oh(b),null===a&&ii(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,oe(d,e)?g=null:null!==f&&oe(d,f)&&(b.effectTag|=16),ti(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=\nb.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&ii(b),null;case 13:return yi(a,b,c);case 4:return mh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=fh(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:mg(d,e),ni(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,b,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;\ne=b.pendingProps;g=b.memoizedProps;f=e.value;sg(b,f);if(null!==g){var h=g.value;f=of(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!K.current){b=oi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=Bg(c,null),l.tag=2,Dg(h,l));h.expirationTime=b&&a<=b}function Mj(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;cb||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction Nj(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Rj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction rk(a,b,c,d){var e=b.current,f=Pg(),g=Mg.suspense;f=Qg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(ec(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=Bg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);Dg(e,b);Rg(e,f);return f}function sk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function tk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime = [], b: Array = []) =>\n a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]))\n\ninterface FallbackProps {\n error: Error\n resetErrorBoundary: (...args: Array) => void\n}\n\ninterface ErrorBoundaryPropsWithComponent {\n onResetKeysChange?: (\n prevResetKeys: Array | undefined,\n resetKeys: Array | undefined,\n ) => void\n onReset?: (...args: Array) => void\n onError?: (error: Error, info: {componentStack: string}) => void\n resetKeys?: Array\n FallbackComponent: React.ComponentType\n}\n\ndeclare function FallbackRender(\n props: FallbackProps,\n): React.ReactElement<\n unknown,\n string | React.FunctionComponent | typeof React.Component\n> | null\n\ninterface ErrorBoundaryPropsWithRender {\n onResetKeysChange?: (\n prevResetKeys: Array | undefined,\n resetKeys: Array | undefined,\n ) => void\n onReset?: (...args: Array) => void\n onError?: (error: Error, info: {componentStack: string}) => void\n resetKeys?: Array\n fallbackRender: typeof FallbackRender\n}\n\ninterface ErrorBoundaryPropsWithFallback {\n onResetKeysChange?: (\n prevResetKeys: Array | undefined,\n resetKeys: Array | undefined,\n ) => void\n onReset?: (...args: Array) => void\n onError?: (error: Error, info: {componentStack: string}) => void\n resetKeys?: Array\n fallback: React.ReactElement<\n unknown,\n string | React.FunctionComponent | typeof React.Component\n > | null\n}\n\ntype ErrorBoundaryProps =\n | ErrorBoundaryPropsWithFallback\n | ErrorBoundaryPropsWithComponent\n | ErrorBoundaryPropsWithRender\n\ntype ErrorBoundaryState = {error: Error | null}\n\nconst initialState: ErrorBoundaryState = {error: null}\n\nclass ErrorBoundary extends React.Component<\n React.PropsWithRef>,\n ErrorBoundaryState\n> {\n static getDerivedStateFromError(error: Error) {\n return {error}\n }\n\n state = initialState\n updatedWithError = false\n resetErrorBoundary = (...args: Array) => {\n this.props.onReset?.(...args)\n this.reset()\n }\n\n reset() {\n this.updatedWithError = false\n this.setState(initialState)\n }\n\n componentDidCatch(error: Error, info: React.ErrorInfo) {\n this.props.onError?.(error, info)\n }\n\n componentDidMount() {\n const {error} = this.state\n\n if (error !== null) {\n this.updatedWithError = true\n }\n }\n\n componentDidUpdate(prevProps: ErrorBoundaryProps) {\n const {error} = this.state\n const {resetKeys} = this.props\n\n // There's an edge case where if the thing that triggered the error\n // happens to *also* be in the resetKeys array, we'd end up resetting\n // the error boundary immediately. This would likely trigger a second\n // error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call\n // of cDU after the error is set\n if (error !== null && !this.updatedWithError) {\n this.updatedWithError = true\n return\n }\n\n if (error !== null && changedArray(prevProps.resetKeys, resetKeys)) {\n this.props.onResetKeysChange?.(prevProps.resetKeys, resetKeys)\n this.reset()\n }\n }\n\n render() {\n const {error} = this.state\n // @ts-expect-error ts(2339) (at least one of these will be defined though, and we check for their existence)\n const {fallbackRender, FallbackComponent, fallback} = this.props\n\n if (error !== null) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary,\n }\n if (React.isValidElement(fallback)) {\n return fallback\n } else if (typeof fallbackRender === 'function') {\n return (fallbackRender as typeof FallbackRender)(props)\n } else if (FallbackComponent) {\n return \n } else {\n throw new Error(\n 'react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop',\n )\n }\n }\n\n return this.props.children\n }\n}\n\nfunction withErrorBoundary

(\n Component: React.ComponentType

,\n errorBoundaryProps: ErrorBoundaryProps,\n): React.ComponentType

{\n const Wrapped: React.ComponentType

= props => {\n return (\n \n \n \n )\n }\n\n // Format for display in DevTools\n const name = Component.displayName || Component.name || 'Unknown'\n Wrapped.displayName = `withErrorBoundary(${name})`\n\n return Wrapped\n}\n\nfunction useErrorHandler

(\n givenError?: P | null | undefined,\n): React.Dispatch> {\n const [error, setError] = React.useState

(null)\n if (givenError) throw givenError\n if (error) throw error\n return setError\n}\n\nexport {ErrorBoundary, withErrorBoundary, useErrorHandler}\nexport type {\n FallbackProps,\n ErrorBoundaryPropsWithComponent,\n ErrorBoundaryPropsWithRender,\n ErrorBoundaryPropsWithFallback,\n ErrorBoundaryProps,\n}\n\n/*\neslint\n @typescript-eslint/no-throw-literal: \"off\",\n @typescript-eslint/prefer-nullish-coalescing: \"off\"\n*/\n","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a)\n , arrB = isArray(b)\n , i\n , length\n , key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length)\n return false;\n\n for (i = length; i-- !== 0;)\n if (!hasProp.call(b, keys[i])) return false;\n // end fast-deep-equal\n\n // start react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element && b instanceof Element)\n return a === b;\n\n // custom handling for React\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n }\n // end react-fast-compare\n\n // fast-deep-equal index.js 2.0.1\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message && error.message.match(/stack|recursion/i)) || (error.number === -2146828260)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/** @license React v16.12.0\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.suspense_list\"):\n60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.fundamental\"):60117,w=b?Symbol.for(\"react.responder\"):60118,x=b?Symbol.for(\"react.scope\"):60119;function y(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function z(a){return y(a)===m}\nexports.typeOf=y;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===v||a.$$typeof===w||a.$$typeof===x)};exports.isAsyncMode=function(a){return z(a)||y(a)===l};exports.isConcurrentMode=z;exports.isContextConsumer=function(a){return y(a)===k};exports.isContextProvider=function(a){return y(a)===h};\nexports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return y(a)===n};exports.isFragment=function(a){return y(a)===e};exports.isLazy=function(a){return y(a)===t};exports.isMemo=function(a){return y(a)===r};exports.isPortal=function(a){return y(a)===d};exports.isProfiler=function(a){return y(a)===g};exports.isStrictMode=function(a){return y(a)===f};exports.isSuspense=function(a){return y(a)===p};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*! For license information please see index.js.LICENSE.txt */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define(\"lib\",[\"react\",\"react-dom\"],t):\"object\"==typeof exports?exports.lib=t(require(\"react\"),require(\"react-dom\")):e.lib=t(e.react,e[\"react-dom\"])}(\"undefined\"!=typeof self?self:this,(function(e,t){return function(){\"use strict\";var n={655:function(e,t,n){n.r(t),n.d(t,{__extends:function(){return o},__assign:function(){return i},__rest:function(){return a},__decorate:function(){return l},__param:function(){return c},__metadata:function(){return u},__awaiter:function(){return s},__generator:function(){return f},__createBinding:function(){return d},__exportStar:function(){return p},__values:function(){return h},__read:function(){return y},__spread:function(){return v},__spreadArrays:function(){return b},__spreadArray:function(){return m},__await:function(){return w},__asyncGenerator:function(){return g},__asyncDelegator:function(){return _},__asyncValues:function(){return P},__makeTemplateObject:function(){return O},__importStar:function(){return x},__importDefault:function(){return j},__classPrivateFieldGet:function(){return T},__classPrivateFieldSet:function(){return E}});var r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function o(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var i=function(){return(i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;l--)(o=e[l])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function c(e,t){return function(n,r){t(n,r,e)}}function u(e,t){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function s(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function l(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,l)}c((r=r.apply(e,t||[])).next())}))}function f(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function y(e,t){var n=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function v(){for(var e=[],t=0;t1||l(e,t)}))})}function l(e,t){try{(n=o[e](t)).value instanceof w?Promise.resolve(n.value.v).then(c,u):s(i[0][2],n)}catch(e){s(i[0][3],e)}var n}function c(e){l(\"next\",e)}function u(e){l(\"throw\",e)}function s(e,t){e(t),i.shift(),i.length&&l(i[0][0],i[0][1])}}function _(e){var t,n;return t={},r(\"next\"),r(\"throw\",(function(e){throw e})),r(\"return\"),t[Symbol.iterator]=function(){return this},t;function r(r,o){t[r]=e[r]?function(t){return(n=!n)?{value:w(e[r](t)),done:\"return\"===r}:o?o(t):t}:o}}function P(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=h(e),t={},r(\"next\"),r(\"throw\"),r(\"return\"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,o){!function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)}(r,o,(t=e[n](t)).done,t.value)}))}}}function O(e,t){return Object.defineProperty?Object.defineProperty(e,\"raw\",{value:t}):e.raw=t,e}var S=Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t};function x(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)\"default\"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&d(t,e,n);return S(t,e),t}function j(e){return e&&e.__esModule?e:{default:e}}function T(e,t,n,r){if(\"a\"===n&&!r)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof t?e!==t||!r:!t.has(e))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===n?r:\"a\"===n?r.call(e):r?r.value:t.get(e)}function E(e,t,n,r,o){if(\"m\"===r)throw new TypeError(\"Private method is not writable\");if(\"a\"===r&&!o)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof t?e!==t||!o:!t.has(e))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===r?o.call(e,n):o?o.value=n:t.set(e,n),n}},297:function(t){t.exports=e},268:function(e){e.exports=t}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return n[e](i,i.exports,o),i.exports}o.d=function(e,t){for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var i={};return function(){var e=i;Object.defineProperty(e,\"__esModule\",{value:!0}),e.useReactToPrint=e.PrintContextConsumer=void 0;var t=o(655),n=o(297),r=o(268),a=Object.prototype.hasOwnProperty.call(n,\"createContext\"),l=Object.prototype.hasOwnProperty.call(n,\"useMemo\")&&Object.prototype.hasOwnProperty.call(n,\"useCallback\"),c=a?n.createContext({}):null;e.PrintContextConsumer=c?c.Consumer:function(){return null};var u={copyStyles:!0,pageStyle:\"@page { size: auto; margin: 0mm; } @media print { body { -webkit-print-color-adjust: exact; } }\",removeAfterPrint:!1,suppressErrors:!1},s=function(e){function o(){var n=null!==e&&e.apply(this,arguments)||this;return n.startPrint=function(e){var t=n.props,r=t.onAfterPrint,o=t.onPrintError,i=t.print,a=t.suppressErrors,l=t.documentTitle;setTimeout((function(){if(e.contentWindow){if(e.contentWindow.focus(),i)i(e).then(n.handleRemoveIframe).catch((function(e){o?o(\"print\",e):a||console.error(\"An error was thrown by the specified `print` function\",e)}));else if(e.contentWindow.print){var t=document.title;l&&(document.title=l),e.contentWindow.print(),l&&(document.title=t),r&&r()}else a||console.error(\"Printing for this browser is not currently possible: the browser does not have a `print` method available for iframes.\");n.handleRemoveIframe()}else a||console.error(\"Printing failed because the `contentWindow` of the print iframe did not load. This is possibly an error with `react-to-print`. Please file an issue: https://github.com/gregnb/react-to-print/issues/\")}),500)},n.triggerPrint=function(e){var t=n.props,r=t.onBeforePrint,o=t.onPrintError;if(r){var i=r();i&&\"function\"==typeof i.then?i.then((function(){n.startPrint(e)})).catch((function(e){o&&o(\"onBeforePrint\",e)})):n.startPrint(e)}else n.startPrint(e)},n.handleClick=function(){var e=n.props,t=e.onBeforeGetContent,r=e.onPrintError;if(t){var o=t();o&&\"function\"==typeof o.then?o.then(n.handlePrint).catch((function(e){r&&r(\"onBeforeGetContent\",e)})):n.handlePrint()}else n.handlePrint()},n.handlePrint=function(){var e=n.props,o=e.bodyClass,i=e.content,a=e.copyStyles,l=e.fonts,c=e.pageStyle,u=e.suppressErrors,s=i();if(void 0!==s)if(null!==s){var f=document.createElement(\"iframe\");f.style.position=\"absolute\",f.style.top=\"-1000px\",f.style.left=\"-1000px\",f.id=\"printWindow\",f.title=\"Print Window\";var d=r.findDOMNode(s);if(d){var p=d instanceof Text,h=document.querySelectorAll(\"link[rel='stylesheet']\"),y=p?[]:d.querySelectorAll(\"img\");n.linkTotal=h.length+y.length,n.linksLoaded=[],n.linksErrored=[],n.fontsLoaded=[],n.fontsErrored=[];var v=function(e,t){t?n.linksLoaded.push(e):(u||console.error('\"react-to-print\" was unable to load a linked node. It may be invalid. \"react-to-print\" will continue attempting to print the page. The linked node that errored was:',e),n.linksErrored.push(e)),n.linksLoaded.length+n.linksErrored.length+n.fontsLoaded.length+n.fontsErrored.length===n.linkTotal&&n.triggerPrint(f)};f.onload=function(){var e,r,i,s;f.onload=null;var h=f.contentDocument||(null===(r=f.contentWindow)||void 0===r?void 0:r.document);if(h){h.body.appendChild(d.cloneNode(!0)),l&&((null===(i=f.contentDocument)||void 0===i?void 0:i.fonts)&&(null===(s=f.contentWindow)||void 0===s?void 0:s.FontFace)?l.forEach((function(e){var t=new FontFace(e.family,e.source);f.contentDocument.fonts.add(t),t.loaded.then((function(e){n.fontsLoaded.push(e)})).catch((function(e){n.fontsErrored.push(t),u||console.error('\"react-to-print\" was unable to load a font. \"react-to-print\" will continue attempting to print the page. The font that failed to load is:',t,\"The error from loading the font is:\",e)}))})):u||console.error('\"react-to-print\" is not able to load custom fonts because the browser does not support the FontFace API'));var b=\"function\"==typeof c?c():c;if(\"string\"!=typeof b)u||console.error('\"react-to-print\" expected a \"string\" from `pageStyle` but received \"'+typeof b+'\". Styles from `pageStyle` will not be applied.');else{var m=h.createElement(\"style\");m.appendChild(h.createTextNode(b)),h.head.appendChild(m)}if(o&&(e=h.body.classList).add.apply(e,t.__spreadArray([],t.__read(o.split(\" \")))),!p){for(var w=h.querySelectorAll(\"canvas\"),g=d.querySelectorAll(\"canvas\"),_=0,P=w.length;_ tag with an empty \"src\" attribute. It will not attempt to pre-load it. The is:',S)}var T=\"input\",E=d.querySelectorAll(T),k=h.querySelectorAll(T);for(_=0;_ tag with an empty \"href\" attribute. In addition to being invalid HTML, this can cause problems in many browsers, and so the was not loaded. The is:',L),v(L,!0)}}0!==n.linkTotal&&a||n.triggerPrint(f)},n.handleRemoveIframe(!0),document.body.appendChild(f)}else u||console.error('\"react-to-print\" could not locate the DOM node corresponding with the `content` prop')}else u||console.error('There is nothing to print because the \"content\" prop returned \"null\". Please ensure \"content\" is renderable before allowing \"react-to-print\" to be called.');else u||console.error('For \"react-to-print\" to work only Class based components can be printed.')},n.handleRemoveIframe=function(e){var t=n.props.removeAfterPrint;if(e||t){var r=document.getElementById(\"printWindow\");r&&document.body.removeChild(r)}},n}return t.__extends(o,e),o.prototype.render=function(){var e=this.props,t=e.children,r=e.suppressErrors,o=e.trigger;if(o)return n.cloneElement(o(),{onClick:this.handleClick});if(!c)return r||console.error('\"react-to-print\" requires React ^16.3.0 to be able to use \"PrintContext\"'),null;var i={handlePrint:this.handleClick};return n.createElement(c.Provider,{value:i},t)},o.defaultProps=u,o}(n.Component);e.default=s,e.useReactToPrint=l?function(e){var r=n.useMemo((function(){return new s(t.__assign(t.__assign({},u),e))}),[e]);return n.useCallback((function(){return r.handleClick()}),[r])}:function(e){e.suppressErrors||console.warn('\"react-to-print\" requires React ^16.8.0 to be able to use \"useReactToPrint\"')}}(),i}()}));","/** @license React v16.11.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var h=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113;n&&Symbol.for(\"react.suspense_list\");\nvar z=n?Symbol.for(\"react.memo\"):60115,aa=n?Symbol.for(\"react.lazy\"):60116;n&&Symbol.for(\"react.fundamental\");n&&Symbol.for(\"react.responder\");n&&Symbol.for(\"react.scope\");var A=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction B(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cP.length&&P.push(a)}\nfunction S(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+T(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var l=0;l 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","/** @license React v0.17.0\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout,A=window.requestAnimationFrame,B=window.cancelAnimationFrame;\"undefined\"!==typeof console&&(\"function\"!==typeof A&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),\"function\"!==typeof B&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"));if(\"object\"===typeof w&&\n\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var C=x.now();exports.unstable_now=function(){return x.now()-C}}var D=!1,E=null,F=-1,G=5,H=0;k=function(){return exports.unstable_now()>=H};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125L(n,c))void 0!==r&&0>L(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>L(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function L(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var O=[],P=[],Q=1,R=null,S=3,T=!1,U=!1,V=!1;\nfunction W(a){for(var b=M(P);null!==b;){if(null===b.callback)N(P);else if(b.startTime<=a)N(P),b.sortIndex=b.expirationTime,K(O,b);else break;b=M(P)}}function X(a){V=!1;W(a);if(!U)if(null!==M(O))U=!0,f(Y);else{var b=M(P);null!==b&&g(X,b.startTime-a)}}\nfunction Y(a,b){U=!1;V&&(V=!1,h());T=!0;var c=S;try{W(b);for(R=M(O);null!==R&&(!(R.expirationTime>b)||a&&!k());){var d=R.callback;if(null!==d){R.callback=null;S=R.priorityLevel;var e=d(R.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?R.callback=e:R===M(O)&&N(O);W(b)}else N(O);R=M(O)}if(null!==R)var m=!0;else{var n=M(P);null!==n&&g(X,n.startTime-b);m=!1}return m}finally{R=null,S=c,T=!1}}\nfunction Z(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var aa=l;exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=S;S=a;try{return b()}finally{S=c}};\nexports.unstable_next=function(a){switch(S){case 1:case 2:case 3:var b=3;break;default:b=S}var c=S;S=b;try{return a()}finally{S=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,K(P,a),null===M(O)&&a===M(P)&&(V?h():V=!0,g(X,e-d))):(a.sortIndex=c,K(O,a),U||T||(U=!0,f(Y)));return a};exports.unstable_cancelCallback=function(a){a.callback=null};\nexports.unstable_wrapCallback=function(a){var b=S;return function(){var c=S;S=b;try{return a.apply(this,arguments)}finally{S=c}}};exports.unstable_getCurrentPriorityLevel=function(){return S};exports.unstable_shouldYield=function(){var a=exports.unstable_now();W(a);var b=M(O);return b!==R&&null!==R&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\nfunction mapKeys(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n}\n\nmodule.exports = mapKeys;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nmodule.exports = snakeCase;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _getRequireWildcardCache(e) {\n if (\"function\" != typeof WeakMap) return null;\n var r = new WeakMap(),\n t = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {\n return e ? t : r;\n })(e);\n}\nfunction _interopRequireWildcard(e, r) {\n if (!r && e && e.__esModule) return e;\n if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return {\n \"default\": e\n };\n var t = _getRequireWildcardCache(r);\n if (t && t.has(e)) return t.get(e);\n var n = {\n __proto__: null\n },\n a = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) {\n var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;\n i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];\n }\n return n[\"default\"] = e, t && t.set(e, n), n;\n}\nmodule.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","import React from 'react';\nexport var ReactReduxContext = React.createContext(null);\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nvar CLEARED = null;\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n var batch = getBatch(); // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n\n var current = [];\n var next = [];\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n batch(function () {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n });\n },\n get: function get() {\n return next;\n },\n subscribe: function subscribe(listener) {\n var isSubscribed = true;\n if (next === current) next = current.slice();\n next.push(listener);\n return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub) {\n this.store = store;\n this.parentSub = parentSub;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n this.handleChangeWrapper = this.handleChangeWrapper.bind(this);\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.handleChangeWrapper = function handleChangeWrapper() {\n if (this.onStateChange) {\n this.onStateChange();\n }\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.handleChangeWrapper) : this.store.subscribe(this.handleChangeWrapper);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import React, { useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport Subscription from '../utils/Subscription';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = new Subscription(store);\n subscription.onStateChange = subscription.notifyNestedSubs;\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useEffect(function () {\n var subscription = contextValue.subscription;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nProvider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n};\nexport default Provider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { useContext, useMemo, useEffect, useLayoutEffect, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n}; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect because we want\n// `connect` to perform sync updates to a ref to save the latest props after\n// a render is actually committed to the DOM.\n\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n invariant(renderCountProp === undefined, \"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n invariant(!withRef, 'withRef is removed. To access the wrapped instance, use a ref on the connected component');\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n invariant(storeKey === 'store', 'storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production') {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var forwardedRef = props.forwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, [\"forwardedRef\"]);\n\n return [props.context, forwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n forwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer(React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context\n\n var didStoreComeFromProps = Boolean(props.store);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n invariant(didStoreComeFromProps || didStoreComeFromContext, \"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n var store = props.store || contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var subscription = new Subscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffect(function () {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n }); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffect(function () {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n latestStoreState: latestStoreState,\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n }, [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: forwardedRef\n }));\n }, [forwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return React.createElement(Connect, _extends({}, props, {\n forwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, {}, stateProps, {}, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","import { useContext } from 'react';\nimport invariant from 'invariant';\nimport { ReactReduxContext } from '../components/Context';\n/**\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\n * hook that you should usually not need to call directly.\n *\n * @returns {any} the value of the `ReactReduxContext`\n *\n * @example\n *\n * import React from 'react'\n * import { useReduxContext } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const { store } = useReduxContext()\n * return

{store.getState()}
\n * }\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n invariant(contextValue, 'could not find react-redux context value; please ensure the component is wrapped in a ');\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\n * Hook factory, which creates a `useStore` hook bound to a given context.\n *\n * @param {Function} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useStore` hook bound to the specified context.\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\n * A hook to access the redux store.\n *\n * @returns {any} the redux store\n *\n * @example\n *\n * import React from 'react'\n * import { useStore } from 'react-redux'\n *\n * export const ExampleComponent = () => {\n * const store = useStore()\n * return
{store.getState()}
\n * }\n */\n\nexport var useStore = createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\n *\n * @param {Function} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useDispatch` hook bound to the specified context.\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\n * A hook to access the redux `dispatch` function.\n *\n * @returns {any|function} redux store's `dispatch` function\n *\n * @example\n *\n * import React, { useCallback } from 'react'\n * import { useDispatch } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const dispatch = useDispatch()\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\n * return (\n *
\n * {value}\n * \n *
\n * )\n * }\n */\n\nexport var useDispatch = createDispatchHook();","import { useReducer, useRef, useEffect, useMemo, useLayoutEffect, useContext } from 'react';\nimport invariant from 'invariant';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport Subscription from '../utils/Subscription';\nimport { ReactReduxContext } from '../components/Context'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return new Subscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestSelectedState = useRef();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || latestSubscriptionCallbackError.current) {\n selectedState = selector(store.getState());\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n var errorMessage = \"An error occured while selecting the store state: \" + err.message + \".\";\n\n if (latestSubscriptionCallbackError.current) {\n errorMessage += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\nOriginal stack trace:\";\n }\n\n throw new Error(errorMessage);\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newSelectedState = latestSelector.current(store.getState());\n\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = newSelectedState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender({});\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\n * Hook factory, which creates a `useSelector` hook bound to a given context.\n *\n * @param {Function} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useSelector` hook bound to the specified context.\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n invariant(selector, \"You must pass a selector to useSelectors\");\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n return useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n };\n}\n/**\n * A hook to access the redux store's state. This hook takes a selector function\n * as an argument. The selector is called with the store state.\n *\n * This hook takes an optional equality comparison function as the second parameter\n * that allows you to customize the way the selected state is compared to determine\n * whether the component needs to be re-rendered.\n *\n * @param {Function} selector the selector function\n * @param {Function=} equalityFn the function that will be used to determine equality\n *\n * @returns {any} the selected state\n *\n * @example\n *\n * import React from 'react'\n * import { useSelector } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const counter = useSelector(state => state.counter)\n * return
{counter}
\n * }\n */\n\nexport var useSelector = createSelectorHook();","import Provider from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport { ReactReduxContext } from './components/Context';\nimport connect from './connect/connect';\nimport { useDispatch, createDispatchHook } from './hooks/useDispatch';\nimport { useSelector, createSelectorHook } from './hooks/useSelector';\nimport { useStore, createStoreHook } from './hooks/useStore';\nimport { setBatch } from './utils/batch';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport shallowEqual from './utils/shallowEqual';\nsetBatch(batch);\nexport { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, createDispatchHook, useSelector, createSelectorHook, useStore, createStoreHook, shallowEqual };","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport gud from 'gud';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + gud() + '__';\n\n var Provider =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer =\n /*#__PURE__*/\n function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(Context).history;\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n return path\n ? matchPath(useLocation().pathname, path)\n : useContext(Context).match;\n}\n","/**\n * This action type will be dispatched when your history\n * receives a location change.\n */\nexport var LOCATION_CHANGE = '@@router/LOCATION_CHANGE';\nexport var onLocationChanged = function onLocationChanged(location, action) {\n var isFirstRendering = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n return {\n type: LOCATION_CHANGE,\n payload: {\n location: location,\n action: action,\n isFirstRendering: isFirstRendering\n }\n };\n};\n/**\n * This action type will be dispatched by the history actions below.\n * If you're writing a middleware to watch for navigation events, be sure to\n * look for actions of this type.\n */\n\nexport var CALL_HISTORY_METHOD = '@@router/CALL_HISTORY_METHOD';\n\nvar updateLocation = function updateLocation(method) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return {\n type: CALL_HISTORY_METHOD,\n payload: {\n method: method,\n args: args\n }\n };\n };\n};\n/**\n * These actions correspond to the history API.\n * The associated routerMiddleware will capture these events before they get to\n * your reducer and reissue them as the matching function on your history.\n */\n\n\nexport var push = updateLocation('push');\nexport var replace = updateLocation('replace');\nexport var go = updateLocation('go');\nexport var goBack = updateLocation('goBack');\nexport var goForward = updateLocation('goForward');\nexport var routerActions = {\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward\n};","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { matchPath } from \"react-router\";\n\nvar createSelectors = function createSelectors(structure) {\n var getIn = structure.getIn,\n toJS = structure.toJS;\n\n var isRouter = function isRouter(value) {\n return value != null && _typeof(value) === 'object' && getIn(value, ['location']) && getIn(value, ['action']);\n };\n\n var getRouter = function getRouter(state) {\n var router = toJS(getIn(state, ['router']));\n\n if (!isRouter(router)) {\n throw 'Could not find router reducer in state tree, it must be mounted under \"router\"';\n }\n\n return router;\n };\n\n var getLocation = function getLocation(state) {\n return toJS(getIn(getRouter(state), ['location']));\n };\n\n var getAction = function getAction(state) {\n return toJS(getIn(getRouter(state), ['action']));\n };\n\n var getSearch = function getSearch(state) {\n return toJS(getIn(getRouter(state), ['location', 'search']));\n };\n\n var getHash = function getHash(state) {\n return toJS(getIn(getRouter(state), ['location', 'hash']));\n }; // It only makes sense to recalculate the `matchPath` whenever the pathname\n // of the location changes. That's why `createMatchSelector` memoizes\n // the latest result based on the location's pathname.\n\n\n var createMatchSelector = function createMatchSelector(path) {\n var lastPathname = null;\n var lastMatch = null;\n return function (state) {\n var _ref = getLocation(state) || {},\n pathname = _ref.pathname;\n\n if (pathname === lastPathname) {\n return lastMatch;\n }\n\n lastPathname = pathname;\n var match = matchPath(pathname, path);\n\n if (!match || !lastMatch || match.url !== lastMatch.url) {\n lastMatch = match;\n }\n\n return lastMatch;\n };\n };\n\n return {\n getLocation: getLocation,\n getAction: getAction,\n getRouter: getRouter,\n getSearch: getSearch,\n getHash: getHash,\n createMatchSelector: createMatchSelector\n };\n};\n\nexport default createSelectors;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect, ReactReduxContext } from 'react-redux';\nimport { Router } from 'react-router';\nimport { onLocationChanged as _onLocationChanged } from './actions';\nimport createSelectors from './selectors';\n\nvar createConnectedRouter = function createConnectedRouter(structure) {\n var _createSelectors = createSelectors(structure),\n getLocation = _createSelectors.getLocation;\n /*\n * ConnectedRouter listens to a history object passed from props.\n * When history is changed, it dispatches action to redux store.\n * Then, store will pass props to component to render.\n * This creates uni-directional flow from history->store->router->components.\n */\n\n\n var ConnectedRouter =\n /*#__PURE__*/\n function (_PureComponent) {\n _inherits(ConnectedRouter, _PureComponent);\n\n function ConnectedRouter(props) {\n var _this;\n\n _classCallCheck(this, ConnectedRouter);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ConnectedRouter).call(this, props));\n var store = props.store,\n history = props.history,\n onLocationChanged = props.onLocationChanged;\n _this.inTimeTravelling = false; // Subscribe to store changes to check if we are in time travelling\n\n _this.unsubscribe = store.subscribe(function () {\n // Extract store's location\n var _getLocation = getLocation(store.getState()),\n pathnameInStore = _getLocation.pathname,\n searchInStore = _getLocation.search,\n hashInStore = _getLocation.hash; // Extract history's location\n\n\n var _history$location = history.location,\n pathnameInHistory = _history$location.pathname,\n searchInHistory = _history$location.search,\n hashInHistory = _history$location.hash; // If we do time travelling, the location in store is changed but location in history is not changed\n\n if (pathnameInHistory !== pathnameInStore || searchInHistory !== searchInStore || hashInHistory !== hashInStore) {\n _this.inTimeTravelling = true; // Update history's location to match store's location\n\n history.push({\n pathname: pathnameInStore,\n search: searchInStore,\n hash: hashInStore\n });\n }\n });\n\n var handleLocationChange = function handleLocationChange(location, action) {\n var isFirstRendering = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n // Dispatch onLocationChanged except when we're in time travelling\n if (!_this.inTimeTravelling) {\n onLocationChanged(location, action, isFirstRendering);\n } else {\n _this.inTimeTravelling = false;\n }\n }; // Listen to history changes\n\n\n _this.unlisten = history.listen(handleLocationChange); // Dispatch a location change action for the initial location.\n // This makes it backward-compatible with react-router-redux.\n // But, we add `isFirstRendering` to `true` to prevent double-rendering.\n\n handleLocationChange(history.location, history.action, true);\n return _this;\n }\n\n _createClass(ConnectedRouter, [{\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.unlisten();\n this.unsubscribe();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n history = _this$props.history,\n children = _this$props.children;\n return React.createElement(Router, {\n history: history\n }, children);\n }\n }]);\n\n return ConnectedRouter;\n }(PureComponent);\n\n ConnectedRouter.propTypes = {\n store: PropTypes.shape({\n getState: PropTypes.func.isRequired,\n subscribe: PropTypes.func.isRequired\n }).isRequired,\n history: PropTypes.shape({\n action: PropTypes.string.isRequired,\n listen: PropTypes.func.isRequired,\n location: PropTypes.object.isRequired,\n push: PropTypes.func.isRequired\n }).isRequired,\n basename: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n onLocationChanged: PropTypes.func.isRequired\n };\n\n var mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n onLocationChanged: function onLocationChanged(location, action, isFirstRendering) {\n return dispatch(_onLocationChanged(location, action, isFirstRendering));\n }\n };\n };\n\n var ConnectedRouterWithContext = function ConnectedRouterWithContext(props) {\n var Context = props.context || ReactReduxContext;\n\n if (Context == null) {\n throw 'Please upgrade to react-redux v6';\n }\n\n return React.createElement(Context.Consumer, null, function (_ref) {\n var store = _ref.store;\n return React.createElement(ConnectedRouter, _extends({\n store: store\n }, props));\n });\n };\n\n ConnectedRouterWithContext.propTypes = {\n context: PropTypes.object\n };\n return connect(null, mapDispatchToProps)(ConnectedRouterWithContext);\n};\n\nexport default createConnectedRouter;","import { LOCATION_CHANGE } from './actions';\n\nvar createConnectRouter = function createConnectRouter(structure) {\n var fromJS = structure.fromJS,\n merge = structure.merge;\n\n var createRouterReducer = function createRouterReducer(history) {\n var initialRouterState = fromJS({\n location: history.location,\n action: history.action\n });\n /*\n * This reducer will update the state with the most recent location history\n * has transitioned to.\n */\n\n return function () {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialRouterState;\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n type = _ref.type,\n payload = _ref.payload;\n\n if (type === LOCATION_CHANGE) {\n var location = payload.location,\n action = payload.action,\n isFirstRendering = payload.isFirstRendering; // Don't update the state ref for the first rendering\n // to prevent the double-rendering issue on initilization\n\n return isFirstRendering ? state : merge(state, {\n location: fromJS(location),\n action: action\n });\n }\n\n return state;\n };\n };\n\n return createRouterReducer;\n};\n\nexport default createConnectRouter;","/* Code from github.com/erikras/redux-form by Erik Rasmussen */\nvar getIn = function getIn(state, path) {\n if (!state) {\n return state;\n }\n\n var length = path.length;\n\n if (!length) {\n return undefined;\n }\n\n var result = state;\n\n for (var i = 0; i < length && !!result; ++i) {\n result = result[path[i]];\n }\n\n return result;\n};\n\nexport default getIn;","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport getIn from './getIn';\nvar structure = {\n fromJS: function fromJS(value) {\n return value;\n },\n getIn: getIn,\n merge: function merge(state, payload) {\n return _objectSpread({}, state, payload);\n },\n toJS: function toJS(value) {\n return value;\n }\n};\nexport default structure;","import createConnectedRouter from \"./ConnectedRouter\";\nimport createConnectRouter from \"./reducer\";\nimport createSelectors from \"./selectors\";\nimport plainStructure from \"./structure/plain\";\nexport { LOCATION_CHANGE, CALL_HISTORY_METHOD, onLocationChanged, push, replace, go, goBack, goForward, routerActions } from \"./actions\";\nexport { default as routerMiddleware } from \"./middleware\";\nexport var ConnectedRouter =\n/*#__PURE__*/\ncreateConnectedRouter(plainStructure);\nexport var connectRouter =\n/*#__PURE__*/\ncreateConnectRouter(plainStructure);\n\nvar _createSelectors =\n/*#__PURE__*/\ncreateSelectors(plainStructure),\n getLocation = _createSelectors.getLocation,\n getAction = _createSelectors.getAction,\n getHash = _createSelectors.getHash,\n getSearch = _createSelectors.getSearch,\n createMatchSelector = _createSelectors.createMatchSelector;\n\nexport { getLocation, getAction, getHash, getSearch, createMatchSelector };","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export function isObject(x: any): x is Object {\n return x !== null && typeof x === 'object';\n}\n","export function isFunction(x: any): x is Function {\n return typeof x === 'function';\n}\n","export interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n new(errors: any[]): UnsubscriptionError;\n}\n\nconst UnsubscriptionErrorImpl = (() => {\n function UnsubscriptionErrorImpl(this: any, errors: any[]) {\n Error.call(this);\n this.message = errors ?\n `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n\n return UnsubscriptionErrorImpl;\n})();\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = UnsubscriptionErrorImpl as any;","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic } from './types';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY: Subscription = (function(empty: any) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n * @type {boolean}\n */\n public closed: boolean = false;\n\n /** @internal */\n protected _parentOrParents: Subscription | Subscription[] = null;\n /** @internal */\n private _subscriptions: SubscriptionLike[] = null;\n\n /**\n * @param {function(): void} [unsubscribe] A function describing how to\n * perform the disposal of resources when the `unsubscribe` method is called.\n */\n constructor(unsubscribe?: () => void) {\n if (unsubscribe) {\n (this as any)._ctorUnsubscribe = true;\n (this as any)._unsubscribe = unsubscribe;\n }\n }\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[];\n\n if (this.closed) {\n return;\n }\n\n let { _parentOrParents, _ctorUnsubscribe, _unsubscribe, _subscriptions } = (this as any);\n\n this.closed = true;\n this._parentOrParents = null;\n // null out _subscriptions first so any child subscriptions that attempt\n // to remove themselves from this subscription will noop\n this._subscriptions = null;\n\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n } else if (_parentOrParents !== null) {\n for (let index = 0; index < _parentOrParents.length; ++index) {\n const parent = _parentOrParents[index];\n parent.remove(this);\n }\n }\n\n if (isFunction(_unsubscribe)) {\n // It's only possible to null _unsubscribe - to release the reference to\n // any teardown function passed in the constructor - if the property was\n // actually assigned in the constructor, as there are some classes that\n // are derived from Subscriber (which derives from Subscription) that\n // implement an _unsubscribe method as a mechanism for obtaining\n // unsubscription notifications and some of those subscribers are\n // recycled. Also, in some of those subscribers, _unsubscribe switches\n // from a prototype method to an instance property - see notifyNext in\n // RetryWhenSubscriber.\n if (_ctorUnsubscribe) {\n (this as any)._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n\n if (isArray(_subscriptions)) {\n let index = -1;\n let len = _subscriptions.length;\n\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n } catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n } else {\n errors.push(e);\n }\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n\n /**\n * Adds a tear down to be called during the unsubscribe() of this\n * Subscription. Can also be used to add a child subscription.\n *\n * If the tear down being added is a subscription that is already\n * unsubscribed, is the same reference `add` is being called on, or is\n * `Subscription.EMPTY`, it will not be added.\n *\n * If this subscription is already in an `closed` state, the passed\n * tear down logic will be executed immediately.\n *\n * When a parent subscription is unsubscribed, any child subscriptions that were added to it are also unsubscribed.\n *\n * @param {TeardownLogic} teardown The additional logic to execute on\n * teardown.\n * @return {Subscription} Returns the Subscription used or created to be\n * added to the inner subscriptions list. This Subscription can be used with\n * `remove()` to remove the passed teardown logic from the inner subscriptions\n * list.\n */\n add(teardown: TeardownLogic): Subscription {\n let subscription = (teardown);\n\n if (!teardown) {\n return Subscription.EMPTY;\n }\n\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(<(() => void)>teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n // This also covers the case where `subscription` is `Subscription.EMPTY`, which is always in `closed` state.\n return subscription;\n } else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n } else if (!(subscription instanceof Subscription)) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n\n // Add `this` as parent of `subscription` if that's not already the case.\n let { _parentOrParents } = subscription;\n if (_parentOrParents === null) {\n // If we don't have a parent, then set `subscription._parents` to\n // the `this`, which is the common case that we optimize for.\n subscription._parentOrParents = this;\n } else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n // The `subscription` already has `this` as a parent.\n return subscription;\n }\n // If there's already one parent, but not multiple, allocate an\n // Array to store the rest of the parent Subscriptions.\n subscription._parentOrParents = [_parentOrParents, this];\n } else if (_parentOrParents.indexOf(this) === -1) {\n // Only add `this` to the _parentOrParents list if it's not already there.\n _parentOrParents.push(this);\n } else {\n // The `subscription` already has `this` as a parent.\n return subscription;\n }\n\n // Optimize for the common case when adding the first subscription.\n const subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n } else {\n subscriptions.push(subscription);\n }\n\n return subscription;\n }\n\n /**\n * Removes a Subscription from the internal list of subscriptions that will\n * unsubscribe during the unsubscribe process of this Subscription.\n * @param {Subscription} subscription The subscription to remove.\n * @return {void}\n */\n remove(subscription: Subscription): void {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n}\n\nfunction flattenUnsubscriptionErrors(errors: any[]) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action\n */\nexport class Action extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n","import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AsyncAction extends Action {\n\n public id: any;\n public state: T;\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, id?: any, delay: number = 0): any {\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(scheduler: AsyncScheduler, id: any, delay: number = 0): any {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n clearInterval(id);\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, delay: number): any {\n let errored: boolean = false;\n let errorValue: any = undefined;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n\n const id = this.id;\n const scheduler = this.scheduler;\n const actions = scheduler.actions;\n const index = actions.indexOf(this);\n\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n\n if (index !== -1) {\n actions.splice(index, 1);\n }\n\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { QueueScheduler } from './QueueScheduler';\nimport { SchedulerAction } from '../types';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class QueueAction extends AsyncAction {\n\n constructor(protected scheduler: QueueScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n\n public execute(state: T, delay: number): any {\n return (delay > 0 || this.closed) ?\n super.execute(state, delay) :\n this._execute(state, delay) ;\n }\n\n protected requestAsyncId(scheduler: QueueScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Otherwise flush the scheduler starting with this action.\n return scheduler.flush(this);\n }\n}\n","import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}\n */\nexport class Scheduler implements SchedulerLike {\n\n /**\n * Note: the extra arrow function wrapper is to make testing by overriding\n * Date.now easier.\n * @nocollapse\n */\n public static now: () => number = () => Date.now();\n\n constructor(private SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.SchedulerAction(this, work).schedule(state, delay);\n }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport class AsyncScheduler extends Scheduler {\n public static delegate?: Scheduler;\n public actions: Array> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @deprecated internal use only\n */\n public active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @deprecated internal use only\n */\n public scheduled: any = undefined;\n\n constructor(SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n super(SchedulerAction, () => {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.now();\n } else {\n return now();\n }\n });\n }\n\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n } else {\n return super.schedule(work, delay, state);\n }\n }\n\n public flush(action: AsyncAction): void {\n\n const {actions} = this;\n\n if (this.active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this.active = true;\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift()); // exhaust the scheduler queue\n\n this.active = false;\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\n\n/**\n *\n * Queue Scheduler\n *\n * Put every next task on a queue, instead of executing it immediately\n *\n * `queue` scheduler, when used with delay, behaves the same as {@link asyncScheduler} scheduler.\n *\n * When used without delay, it schedules given task synchronously - executes it right when\n * it is scheduled. However when called recursively, that is when inside the scheduled task,\n * another task is scheduled with queue scheduler, instead of executing immediately as well,\n * that task will be put on a queue and wait for current one to finish.\n *\n * This means that when you execute task with `queue` scheduler, you are sure it will end\n * before any other task scheduled with that scheduler will start.\n *\n * ## Examples\n * Schedule recursively first, then do something\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(() => {\n * queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue\n *\n * console.log('first');\n * });\n *\n * // Logs:\n * // \"first\"\n * // \"second\"\n * ```\n *\n * Reschedule itself recursively\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(function(state) {\n * if (state !== 0) {\n * console.log('before', state);\n * this.schedule(state - 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * console.log('after', state);\n * }\n * }, 0, 3);\n *\n * // In scheduler that runs recursively, you would expect:\n * // \"before\", 3\n * // \"before\", 2\n * // \"before\", 1\n * // \"after\", 1\n * // \"after\", 2\n * // \"after\", 3\n *\n * // But with queue it logs:\n * // \"before\", 3\n * // \"after\", 3\n * // \"before\", 2\n * // \"after\", 2\n * // \"before\", 1\n * // \"after\", 1\n * ```\n */\nexport const queueScheduler = new QueueScheduler(QueueAction);\n\n/**\n * @deprecated renamed. Use {@link queueScheduler}\n */\nexport const queue = queueScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\n\nexport class QueueScheduler extends AsyncScheduler {\n}\n","let _enable_super_gross_mode_that_will_cause_bad_things = false;\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like what Promise contructor should used to create Promises\n */\nexport const config = {\n /**\n * The promise constructor used by default for methods such as\n * {@link toPromise} and {@link forEach}\n */\n Promise: undefined as PromiseConstructorLike,\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BY TIME\n * FOR MIGRATION REASONS.\n */\n set useDeprecatedSynchronousErrorHandling(value: boolean) {\n if (value) {\n const error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n } else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n","/**\n * Throws an error on another job so that it's picked up by the runtime's\n * uncaught error handling mechanism.\n * @param err the error to throw\n */\nexport function hostReportError(err: any) {\n setTimeout(() => { throw err; }, 0);\n}","import { Observer } from './types';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\n\nexport const empty: Observer = {\n closed: true,\n next(value: any): void { /* noop */},\n error(err: any): void {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n },\n complete(): void { /*noop*/ }\n};\n","/** @deprecated do not use, this is no longer checked by RxJS internals */\nexport const rxSubscriber = (() =>\n typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random())();\n\n/**\n * @deprecated use rxSubscriber instead\n */\nexport const $$rxSubscriber = rxSubscriber;\n","import { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Observer, PartialObserver, TeardownLogic } from './types';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nexport class Subscriber extends Subscription implements Observer {\n\n [rxSubscriberSymbol]() { return this; }\n\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n * @return {Subscriber} A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n */\n static create(next?: (x?: T) => void,\n error?: (e?: any) => void,\n complete?: () => void): Subscriber {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n\n /** @internal */ syncErrorValue: any = null;\n /** @internal */ syncErrorThrown: boolean = false;\n /** @internal */ syncErrorThrowable: boolean = false;\n\n protected isStopped: boolean = false;\n protected destination: PartialObserver | Subscriber; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n * defined Observer or a `next` callback function.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n */\n constructor(destinationOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n destinationOrNext.add(this);\n } else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, > destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, <((value: T) => void)> destinationOrNext, error, complete);\n break;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n this.destination.error(err);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.destination.complete();\n this.unsubscribe();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribeAndRecycle(): Subscriber {\n const { _parentOrParents } = this;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SafeSubscriber extends Subscriber {\n\n private _context: any;\n\n constructor(private _parentSubscriber: Subscriber,\n observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n let next: ((value: T) => void);\n let context: any = this;\n\n if (isFunction(observerOrNext)) {\n next = (<((value: T) => void)> observerOrNext);\n } else if (observerOrNext) {\n next = (> observerOrNext).next;\n error = (> observerOrNext).error;\n complete = (> observerOrNext).complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(<() => void> context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n\n next(value?: T): void {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n } else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n\n error(err?: any): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n const { useDeprecatedSynchronousErrorHandling } = config;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n } else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n } else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n } else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n }\n\n complete(): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n } else {\n this.unsubscribe();\n }\n }\n }\n\n private __tryOrUnsub(fn: Function, value?: any): void {\n try {\n fn.call(this._context, value);\n } catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n }\n }\n\n private __tryOrSetError(parent: Subscriber, fn: Function, value?: any): boolean {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n } else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n }\n\n /** @internal This is an internal implementation detail, do not use. */\n _unsubscribe(): void {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n","export function identity(x: T): T {\n return x;\n}\n","import { noop } from './noop';\nimport { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function pipe(): UnaryFunction;\nexport function pipe(fn1: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction, fn9: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction, fn9: UnaryFunction, ...fns: UnaryFunction[]): UnaryFunction;\n/* tslint:enable:max-line-length */\n\nexport function pipe(...fns: Array>): UnaryFunction {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray(fns: Array>): UnaryFunction {\n if (fns.length === 0) {\n return identity as UnaryFunction;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction) => fn(prev), input as any);\n };\n}\n","import { Operator } from './Operator';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, PartialObserver, Subscribable } from './types';\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { iif } from './observable/iif';\nimport { throwError } from './observable/throwError';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nexport class Observable implements Subscribable {\n\n /** Internal implementation detail, do not use directly. */\n public _isScalar: boolean = false;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n source: Observable;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n operator: Operator;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new cold Observable by calling the Observable constructor\n * @static true\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new cold observable\n * @nocollapse\n * @deprecated use new Observable() instead\n */\n static create: Function = (subscribe?: (subscriber: Subscriber) => TeardownLogic) => {\n return new Observable(subscribe);\n }\n\n /**\n * Creates a new Observable, with this Observable as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param {Operator} operator the operator defining the operation to take on the observable\n * @return {Observable} a new observable with the Operator applied\n */\n lift(operator: Operator): Observable {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observer?: PartialObserver): Subscription;\n /** @deprecated Use an observer instead of a complete callback */\n subscribe(next: null | undefined, error: null | undefined, complete: () => void): Subscription;\n /** @deprecated Use an observer instead of an error callback */\n subscribe(next: null | undefined, error: (error: any) => void, complete?: () => void): Subscription;\n /** @deprecated Use an observer instead of a complete callback */\n subscribe(next: (value: T) => void, error: null | undefined, complete: () => void): Subscription;\n subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided, all errors will\n * be left uncaught.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of Observer,\n * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * ## Example\n * ### Subscribe with an Observer\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Subscribe with functions\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Cancel a subscription\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe(\n * num => console.log(num),\n * undefined,\n * () => {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * );\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // \"unsubscribed!\" after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {ISubscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscription {\n\n const { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n\n if (operator) {\n sink.add(operator.call(sink, this.source));\n } else {\n sink.add(\n this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink)\n );\n }\n\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n\n return sink;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _trySubscribe(sink: Subscriber): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n\n /**\n * @method forEach\n * @param {Function} next a handler for each value emitted by the observable\n * @param {PromiseConstructor} [promiseCtor] a constructor function used to instantiate the Promise\n * @return {Promise} a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n // Must be declared in a separate statement to avoid a ReferenceError when\n // accessing subscription below in the closure due to Temporal Dead Zone.\n let subscription: Subscription;\n subscription = this.subscribe((value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n }) as Promise;\n }\n\n /** @internal This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): TeardownLogic {\n const { source } = this;\n return source && source.subscribe(subscriber);\n }\n\n // `if` and `throw` are special snow flakes, the compiler sees them as reserved words. Deprecated in\n // favor of iif and throwError functions.\n /**\n * @nocollapse\n * @deprecated In favor of iif creation function: import { iif } from 'rxjs';\n */\n static if: typeof iif;\n /**\n * @nocollapse\n * @deprecated In favor of throwError creation function: import { throwError } from 'rxjs';\n */\n static throw: typeof throwError;\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable;\n pipe
(op1: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction, op9: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction, op9: OperatorFunction, ...operations: OperatorFunction[]): Observable<{}>;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ### Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { map, filter, scan } from 'rxjs/operators';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x))\n * ```\n */\n pipe(...operations: OperatorFunction[]): Observable {\n if (operations.length === 0) {\n return this as any;\n }\n\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n toPromise(this: Observable): Promise;\n toPromise(this: Observable, PromiseCtor: typeof Promise): Promise;\n toPromise(this: Observable, PromiseCtor: PromiseConstructorLike): Promise;\n /* tslint:enable:max-line-length */\n\n toPromise(promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: any;\n this.subscribe((x: T) => value = x, (err: any) => reject(err), () => resolve(value));\n }) as Promise;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n\n return promiseCtor;\n}\n","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nimport { PartialObserver } from '../types';\n\nexport function toSubscriber(\n nextOrObserver?: PartialObserver | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscriber {\n\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return (> nextOrObserver);\n }\n\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n\n return new Subscriber(nextOrObserver, error, complete);\n}\n","import { Subscriber } from '../Subscriber';\nimport { Subject } from '../Subject';\n\n/**\n * Determines whether the ErrorObserver is closed or stopped or has a\n * destination that is closed or stopped - in which case errors will\n * need to be reported via a different mechanism.\n * @param observer the observer\n */\nexport function canReportError(observer: Subscriber | Subject): boolean {\n while (observer) {\n const { closed, destination, isStopped } = observer as any;\n if (closed || isStopped) {\n return false;\n } else if (destination && destination instanceof Subscriber) {\n observer = destination;\n } else {\n observer = null;\n }\n }\n return true;\n}\n","export interface ObjectUnsubscribedError extends Error {\n}\n\nexport interface ObjectUnsubscribedErrorCtor {\n new(): ObjectUnsubscribedError;\n}\n\nconst ObjectUnsubscribedErrorImpl = (() => {\n function ObjectUnsubscribedErrorImpl(this: any) {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n\n ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);\n\n return ObjectUnsubscribedErrorImpl;\n})();\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = ObjectUnsubscribedErrorImpl as any;","import { Subject } from './Subject';\nimport { Observer } from './types';\nimport { Subscription } from './Subscription';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SubjectSubscription extends Subscription {\n closed: boolean = false;\n\n constructor(public subject: Subject, public subscriber: Observer) {\n super();\n }\n\n unsubscribe() {\n if (this.closed) {\n return;\n }\n\n this.closed = true;\n\n const subject = this.subject;\n const observers = subject.observers;\n\n this.subject = null;\n\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n\n const subscriberIndex = observers.indexOf(this.subscriber);\n\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n","import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\n\n/**\n * @class SubjectSubscriber\n */\nexport class SubjectSubscriber extends Subscriber {\n constructor(protected destination: Subject) {\n super(destination);\n }\n}\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n *\n * @class Subject\n */\nexport class Subject extends Observable implements SubscriptionLike {\n\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n\n observers: Observer[] = [];\n\n closed = false;\n\n isStopped = false;\n\n hasError = false;\n\n thrownError: any = null;\n\n constructor() {\n super();\n }\n\n /**@nocollapse\n * @deprecated use new Subject() instead\n */\n static create: Function = (destination: Observer, source: Observable): AnonymousSubject => {\n return new AnonymousSubject(destination, source);\n }\n\n lift(operator: Operator): Observable {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n\n next(value?: T) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n\n error(err: any) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _trySubscribe(subscriber: Subscriber): TeardownLogic {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else {\n return super._trySubscribe(subscriber);\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n } else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n } else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create customize Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable {\n const observable = new Observable();\n (observable).source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject\n */\nexport class AnonymousSubject extends Subject {\n constructor(protected destination?: Observer, source?: Observable) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n\n error(err: any) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n } else {\n return Subscription.EMPTY;\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\n\n/**\n * Subscribes to an ArrayLike with a subscriber\n * @param array The array or array-like to subscribe to\n */\nexport const subscribeToArray = (array: ArrayLike) => (subscriber: Subscriber) => {\n for (let i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n};\n","export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n\n/**\n * @deprecated use {@link iterator} instead\n */\nexport const $$iterator = iterator;\n","/**\n * Tests to see if the object is an ES2015 (ES6) Promise\n * @see {@link https://www.ecma-international.org/ecma-262/6.0/#sec-promise-objects}\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike {\n return !!value && typeof (value).subscribe !== 'function' && typeof (value as any).then === 'function';\n}\n","import { ObservableInput } from '../types';\nimport { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { Subscription } from '../Subscription';\nimport { Subscriber } from '../Subscriber';\n\nexport const subscribeTo = (result: ObservableInput): (subscriber: Subscriber) => Subscription | void => {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result as any);\n } else if (isArrayLike(result)) {\n return subscribeToArray(result);\n } else if (isPromise(result)) {\n return subscribeToPromise(result as Promise);\n } else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result as any);\n } else {\n const value = isObject(result) ? 'an invalid object' : `'${result}'`;\n const msg = `You provided ${value} where a stream was expected.`\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n","import { Subscriber } from '../Subscriber';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\n/**\n * Subscribes to an object that implements Symbol.observable with the given\n * Subscriber.\n * @param obj An object that implements Symbol.observable\n */\nexport const subscribeToObservable = (obj: any) => (subscriber: Subscriber) => {\n const obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n // Should be caught by observable subscribe function error handling.\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n } else {\n return obs.subscribe(subscriber);\n }\n};\n","import { Subscriber } from '../Subscriber';\nimport { hostReportError } from './hostReportError';\n\nexport const subscribeToPromise = (promise: PromiseLike) => (subscriber: Subscriber) => {\n promise.then(\n (value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n },\n (err: any) => subscriber.error(err)\n )\n .then(null, hostReportError);\n return subscriber;\n};\n","import { Subscriber } from '../Subscriber';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\n\nexport const subscribeToIterable = (iterable: Iterable) => (subscriber: Subscriber) => {\n const iterator = (iterable as any)[Symbol_iterator]();\n\n do {\n let item: IteratorResult;\n try {\n item = iterator.next();\n } catch (err) {\n subscriber.error(err);\n return subscriber;\n }\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n\n // Finalize the iterator if it happens to be a Generator\n if (typeof iterator.return === 'function') {\n subscriber.add(() => {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n\n return subscriber;\n};\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport function scheduleArray(input: ArrayLike, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n let i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { ObservableInput, SchedulerLike, Observable } from 'rxjs';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\n\n/**\n * Converts from a common {@link ObservableInput} type to an observable where subscription and emissions\n * are scheduled on the provided scheduler.\n *\n * @see from\n * @see of\n *\n * @param input The observable, array, promise, iterable, etc you would like to schedule\n * @param scheduler The scheduler to use to schedule the subscription and emissions from\n * the returned observable.\n */\nexport function scheduled(input: ObservableInput, scheduler: SchedulerLike): Observable {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n } else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n } else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n } else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n","import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable {\n return input && typeof input[Symbol_observable] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { InteropObservable, SchedulerLike, Subscribable } from '../types';\n\nexport function scheduleObservable(input: InteropObservable, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => {\n const observable: Subscribable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next(value) { sub.add(scheduler.schedule(() => subscriber.next(value))); },\n error(err) { sub.add(scheduler.schedule(() => subscriber.error(err))); },\n complete() { sub.add(scheduler.schedule(() => subscriber.complete())); },\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport function schedulePromise(input: PromiseLike, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => input.then(\n value => {\n sub.add(scheduler.schedule(() => {\n subscriber.next(value);\n sub.add(scheduler.schedule(() => subscriber.complete()));\n }));\n },\n err => {\n sub.add(scheduler.schedule(() => subscriber.error(err)));\n }\n )));\n return sub;\n });\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\n\nexport function scheduleIterable(input: Iterable, scheduler: SchedulerLike) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(subscriber => {\n const sub = new Subscription();\n let iterator: Iterator;\n sub.add(() => {\n // Finalize generators\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(() => {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n let value: T;\n let done: boolean;\n try {\n const result = iterator.next();\n value = result.value;\n done = result.done;\n } catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n } else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { scheduled } from '../scheduled/scheduled';\n\nexport function from>(input: O): Observable>;\n/** @deprecated use {@link scheduled} instead. */\nexport function from>(input: O, scheduler: SchedulerLike): Observable>;\n\n/**\n * Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object.\n *\n * Converts almost anything to an Observable.\n *\n * ![](from.png)\n *\n * `from` converts various other objects and data types into Observables. It also converts a Promise, an array-like, or an\n * iterable\n * object into an Observable that emits the items in that promise, array, or iterable. A String, in this context, is treated\n * as an array of characters. Observable-like objects (contains a function named with the ES2015 Symbol for Observable) can also be\n * converted through this operator.\n *\n * ## Examples\n *\n * ### Converts an array to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n *\n * const array = [10, 20, 30];\n * const result = from(array);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 10\n * // 20\n * // 30\n * ```\n *\n * ---\n *\n * ### Convert an infinite iterable (from a generator) to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * function* generateDoubles(seed) {\n * let i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * const iterator = generateDoubles(3);\n * const result = from(iterator).pipe(take(10));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 3\n * // 6\n * // 12\n * // 24\n * // 48\n * // 96\n * // 192\n * // 384\n * // 768\n * // 1536\n * ```\n *\n * ---\n *\n * ### With async scheduler\n *\n * ```ts\n * import { from, asyncScheduler } from 'rxjs';\n *\n * console.log('start');\n *\n * const array = [10, 20, 30];\n * const result = from(array, asyncScheduler);\n *\n * result.subscribe(x => console.log(x));\n *\n * console.log('end');\n *\n * // Logs:\n * // start\n * // end\n * // 10\n * // 20\n * // 30\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n *\n * @param {ObservableInput} A subscription object, a Promise, an Observable-like,\n * an Array, an iterable, or an array-like object to be converted.\n * @param {SchedulerLike} An optional {@link SchedulerLike} on which to schedule the emission of values.\n * @return {Observable}\n * @name from\n * @owner Observable\n */\nexport function from(input: ObservableInput, scheduler?: SchedulerLike): Observable {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n } else {\n return scheduled(input, scheduler);\n }\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * The same Observable instance returned by any call to {@link empty} without a\n * `scheduler`. It is preferrable to use this over `empty()`.\n */\nexport const EMPTY = new Observable(subscriber => subscriber.complete());\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * Just emits 'complete', and nothing else.\n * \n *\n * ![](empty.png)\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the complete notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n * ### Emit the number 7, then complete\n * ```ts\n * import { empty } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * const result = empty().pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * ### Map and flatten only odd numbers to the sequence 'a', 'b', 'c'\n * ```ts\n * import { empty, interval, of } from 'rxjs';\n * import { mergeMap } from 'rxjs/operators';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : empty()),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval eg(0,1,2,3,...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1 print abc\n * // if x % 2 is not equal to 1 nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link never}\n * @see {@link of}\n * @see {@link throwError}\n *\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @return An \"empty\" Observable: emits only the complete\n * notification.\n * @deprecated Deprecated in favor of using {@link EMPTY} constant, or {@link scheduled} (e.g. `scheduled([], scheduler)`)\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable(subscriber => scheduler.schedule(() => subscriber.complete()));\n}\n","import { PartialObserver } from './types';\nimport { Observable } from './Observable';\nimport { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { deprecate } from 'util';\n\n// TODO: When this enum is removed, replace it with a type alias. See #4556.\n/**\n * @deprecated NotificationKind is deprecated as const enums are not compatible with isolated modules. Use a string literal instead.\n */\nexport enum NotificationKind {\n NEXT = 'N',\n ERROR = 'E',\n COMPLETE = 'C',\n}\n\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n *\n * @class Notification\n */\nexport class Notification {\n hasValue: boolean;\n\n constructor(public kind: 'N' | 'E' | 'C', public value?: T, public error?: any) {\n this.hasValue = kind === 'N';\n }\n\n /**\n * Delivers to the given `observer` the value wrapped by this Notification.\n * @param {Observer} observer\n * @return\n */\n observe(observer: PartialObserver): any {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n }\n\n /**\n * Given some {@link Observer} callbacks, deliver the value represented by the\n * current Notification to the correctly corresponding callback.\n * @param {function(value: T): void} next An Observer `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n do(next: (value: T) => void, error?: (err: any) => void, complete?: () => void): any {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n }\n\n /**\n * Takes an Observer or its individual callback functions, and calls `observe`\n * or `do` methods accordingly.\n * @param {Observer|function(value: T): void} nextOrObserver An Observer or\n * the `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n accept(nextOrObserver: PartialObserver | ((value: T) => void), error?: (err: any) => void, complete?: () => void) {\n if (nextOrObserver && typeof (>nextOrObserver).next === 'function') {\n return this.observe(>nextOrObserver);\n } else {\n return this.do(<(value: T) => void>nextOrObserver, error, complete);\n }\n }\n\n /**\n * Returns a simple Observable that just delivers the notification represented\n * by this Notification instance.\n * @return {any}\n */\n toObservable(): Observable {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n }\n\n private static completeNotification: Notification = new Notification('C');\n private static undefinedValueNotification: Notification = new Notification('N', undefined);\n\n /**\n * A shortcut to create a Notification instance of the type `next` from a\n * given value.\n * @param {T} value The `next` value.\n * @return {Notification} The \"next\" Notification representing the\n * argument.\n * @nocollapse\n */\n static createNext(value: T): Notification {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n }\n\n /**\n * A shortcut to create a Notification instance of the type `error` from a\n * given error.\n * @param {any} [err] The `error` error.\n * @return {Notification} The \"error\" Notification representing the\n * argument.\n * @nocollapse\n */\n static createError(err?: any): Notification {\n return new Notification('E', undefined, err);\n }\n\n /**\n * A shortcut to create a Notification instance of the type `complete`.\n * @return {Notification} The valueless \"complete\" Notification.\n * @nocollapse\n */\n static createComplete(): Notification {\n return Notification.completeNotification;\n }\n}\n","import { SchedulerLike } from '../types';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && typeof (value).schedule === 'function';\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\n\nexport function fromArray(input: ArrayLike, scheduler?: SchedulerLike) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n } else {\n return scheduleArray(input, scheduler);\n }\n}\n","import { SchedulerLike } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { Observable } from '../Observable';\nimport { scheduleArray } from '../scheduled/scheduleArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, scheduler: SchedulerLike):\n Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, scheduler: SchedulerLike):\n Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, i: T9, scheduler: SchedulerLike):\n Observable;\nexport function of(...args: (T | SchedulerLike)[]): Observable;\n\n// TODO(benlesh): Update the typings for this when we can switch to TS 3.x\nexport function of(a: T): Observable;\nexport function of(a: T, b: T2): Observable;\nexport function of(a: T, b: T2, c: T3): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7):\n Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8):\n Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, i: T9):\n Observable;\nexport function of(...args: T[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * Each argument becomes a `next` notification.\n *\n * ![](of.png)\n *\n * Unlike {@link from}, it does not do any flattening and emits each argument in whole\n * as a separate `next` notification.\n *\n * ## Examples\n *\n * Emit the values `10, 20, 30`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of(10, 20, 30)\n * .subscribe(\n * next => console.log('next:', next),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'next: 10'\n * // 'next: 20'\n * // 'next: 30'\n *\n * ```\n *\n * Emit the array `[1,2,3]`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of([1,2,3])\n * .subscribe(\n * next => console.log('next:', next),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'next: [1,2,3]'\n * ```\n *\n * @see {@link from}\n * @see {@link range}\n *\n * @param {...T} values A comma separated list of arguments you want to be emitted\n * @return {Observable} An Observable that emits the arguments\n * described above and then completes.\n * @method of\n * @owner Observable\n */\n\nexport function of(...args: Array): Observable {\n let scheduler = args[args.length - 1] as SchedulerLike;\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args as T[], scheduler);\n } else {\n return fromArray(args as T[]);\n }\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits an error notification.\n *\n * Just emits 'error', and nothing else.\n * \n *\n * ![](throw.png)\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the error notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n * ### Emit the number 7, then emit an error\n * ```ts\n * import { throwError, concat, of } from 'rxjs';\n *\n * const result = concat(of(7), throwError(new Error('oops!')));\n * result.subscribe(x => console.log(x), e => console.error(e));\n *\n * // Logs:\n * // 7\n * // Error: oops!\n * ```\n *\n * ---\n *\n * ### Map and flatten numbers to the sequence 'a', 'b', 'c', but throw an error for 2\n * ```ts\n * import { throwError, interval, of } from 'rxjs';\n * import { mergeMap } from 'rxjs/operators';\n *\n * interval(1000).pipe(\n * mergeMap(x => x === 2\n * ? throwError('Twos are bad')\n * : of('a', 'b', 'c')\n * ),\n * ).subscribe(x => console.log(x), e => console.error(e));\n *\n * // Logs:\n * // a\n * // b\n * // c\n * // a\n * // b\n * // c\n * // Twos are bad\n * ```\n *\n * @see {@link Observable}\n * @see {@link empty}\n * @see {@link never}\n * @see {@link of}\n *\n * @param {any} error The particular Error to pass to the error notification.\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} to use for scheduling\n * the emission of the error notification.\n * @return {Observable} An error Observable: emits only the error notification\n * using the given error argument.\n * @static true\n * @name throwError\n * @owner Observable\n */\nexport function throwError(error: any, scheduler?: SchedulerLike): Observable {\n if (!scheduler) {\n return new Observable(subscriber => subscriber.error(error));\n } else {\n return new Observable(subscriber => scheduler.schedule(dispatch, 0, { error, subscriber }));\n }\n}\n\ninterface DispatchArg {\n error: any;\n subscriber: Subscriber;\n}\n\nfunction dispatch({ error, subscriber }: DispatchArg) {\n subscriber.error(error);\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Notification } from '../Notification';\nimport { MonoTypeOperatorFunction, PartialObserver, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n *\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * Ensure a specific scheduler is used, from outside of an Observable.\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * ## Example\n * Ensure values in subscribe are called just before browser repaint.\n * ```ts\n * import { interval } from 'rxjs';\n * import { observeOn } from 'rxjs/operators';\n *\n * const intervals = interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n * intervals.pipe(\n * observeOn(animationFrameScheduler), // ...but we will observe on animationFrame\n * ) // scheduler to ensure smooth animation.\n * .subscribe(val => {\n * someDiv.style.height = val + 'px';\n * });\n * ```\n *\n * @see {@link delay}\n *\n * @param {SchedulerLike} scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return {Observable} Observable that emits the same notifications as the source Observable,\n * but with provided scheduler.\n *\n * @method observeOn\n * @owner Observable\n */\nexport function observeOn(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction {\n return function observeOnOperatorFunction(source: Observable): Observable {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\n\nexport class ObserveOnOperator implements Operator {\n constructor(private scheduler: SchedulerLike, private delay: number = 0) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ObserveOnSubscriber extends Subscriber {\n /** @nocollapse */\n static dispatch(this: SchedulerAction, arg: ObserveOnMessage) {\n const { notification, destination } = arg;\n notification.observe(destination);\n this.unsubscribe();\n }\n\n constructor(destination: Subscriber,\n private scheduler: SchedulerLike,\n private delay: number = 0) {\n super(destination);\n }\n\n private scheduleMessage(notification: Notification): void {\n const destination = this.destination as Subscription;\n destination.add(this.scheduler.schedule(\n ObserveOnSubscriber.dispatch,\n this.delay,\n new ObserveOnMessage(notification, this.destination)\n ));\n }\n\n protected _next(value: T): void {\n this.scheduleMessage(Notification.createNext(value));\n }\n\n protected _error(err: any): void {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n }\n}\n\nexport class ObserveOnMessage {\n constructor(public notification: Notification,\n public destination: PartialObserver) {\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.\n *\n * ![](map.png)\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * ## Example\n * Map every click to the clientX position of that click\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const positions = clicks.pipe(map(ev => ev.clientX));\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nexport function map(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction {\n return function mapOperation(source: Observable): Observable {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\n\nexport class MapOperator implements Operator {\n constructor(private project: (value: T, index: number) => R, private thisArg: any) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass MapSubscriber extends Subscriber {\n count: number = 0;\n private thisArg: any;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => R,\n thisArg: any) {\n super(destination);\n this.thisArg = thisArg || this;\n }\n\n // NOTE: This looks unoptimized, but it's actually purposefully NOT\n // using try/catch optimizations.\n protected _next(value: T) {\n let result: R;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","/** @prettier */\nimport { Subscription } from './Subscription';\nimport { Subscriber } from './Subscriber';\nimport { Observable } from './Observable';\nimport { subscribeTo } from './util/subscribeTo';\n\ninterface SimpleOuterSubscriberLike {\n /**\n * A handler for inner next notifications from the inner subscription\n * @param innerValue the value nexted by the inner producer\n */\n notifyNext(innerValue: T): void;\n /**\n * A handler for inner error notifications from the inner subscription\n * @param err the error from the inner producer\n */\n notifyError(err: any): void;\n /**\n * A handler for inner complete notifications from the inner subscription.\n */\n notifyComplete(): void;\n}\n\nexport class SimpleInnerSubscriber extends Subscriber {\n constructor(private parent: SimpleOuterSubscriberLike) {\n super();\n }\n\n protected _next(value: T): void {\n this.parent.notifyNext(value);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete();\n this.unsubscribe();\n }\n}\n\nexport class ComplexInnerSubscriber extends Subscriber {\n constructor(private parent: ComplexOuterSubscriber, public outerValue: T, public outerIndex: number) {\n super();\n }\n\n protected _next(value: R): void {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n\nexport class SimpleOuterSubscriber extends Subscriber implements SimpleOuterSubscriberLike {\n notifyNext(innerValue: R): void {\n this.destination.next(innerValue);\n }\n\n notifyError(err: any): void {\n this.destination.error(err);\n }\n\n notifyComplete(): void {\n this.destination.complete();\n }\n}\n\n/**\n * DO NOT USE (formerly \"OuterSubscriber\")\n * TODO: We want to refactor this and remove it. It is retaining values it shouldn't for long\n * periods of time.\n */\nexport class ComplexOuterSubscriber extends Subscriber {\n /**\n * @param _outerValue Used by: bufferToggle, delayWhen, windowToggle\n * @param innerValue Used by: subclass default, combineLatest, race, bufferToggle, windowToggle, withLatestFrom\n * @param _outerIndex Used by: combineLatest, race, withLatestFrom\n * @param _innerSub Used by: delayWhen\n */\n notifyNext(_outerValue: T, innerValue: R, _outerIndex: number, _innerSub: ComplexInnerSubscriber): void {\n this.destination.next(innerValue);\n }\n\n notifyError(error: any): void {\n this.destination.error(error);\n }\n\n /**\n * @param _innerSub Used by: race, bufferToggle, delayWhen, windowToggle, windowWhen\n */\n notifyComplete(_innerSub: ComplexInnerSubscriber): void {\n this.destination.complete();\n }\n}\n\nexport function innerSubscribe(result: any, innerSubscriber: Subscriber): Subscription | undefined {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber) as Subscription;\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function mergeMap>(project: (value: T, index: number) => O, concurrent?: number): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function mergeMap>(project: (value: T, index: number) => O, resultSelector: undefined, concurrent?: number): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function mergeMap>(project: (value: T, index: number) => O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R, concurrent?: number): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.\n *\n * ![](mergeMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * ## Example\n * Map and flatten each letter to an Observable ticking every 1 second\n * ```ts\n * import { of, interval } from 'rxjs';\n * import { mergeMap, map } from 'rxjs/operators';\n *\n * const letters = of('a', 'b', 'c');\n * const result = letters.pipe(\n * mergeMap(x => interval(1000).pipe(map(i => x+i))),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional deprecated `resultSelector`) to each item\n * emitted by the source Observable and merging the results of the Observables\n * obtained from this transformation.\n */\nexport function mergeMap>(\n project: (value: T, index: number) => O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Number.POSITIVE_INFINITY\n): OperatorFunction|R> {\n if (typeof resultSelector === 'function') {\n // DEPRECATED PATH\n return (source: Observable) => source.pipe(\n mergeMap((a, i) => from(project(a, i)).pipe(\n map((b: any, ii: number) => resultSelector(a, b, i, ii)),\n ), concurrent)\n );\n } else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return (source: Observable) => source.lift(new MergeMapOperator(project, concurrent));\n}\n\nexport class MergeMapOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput,\n private concurrent: number = Number.POSITIVE_INFINITY) {\n }\n\n call(observer: Subscriber, source: any): any {\n return source.subscribe(new MergeMapSubscriber(\n observer, this.project, this.concurrent\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class MergeMapSubscriber extends SimpleOuterSubscriber {\n private hasCompleted: boolean = false;\n private buffer: T[] = [];\n private active: number = 0;\n protected index: number = 0;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput,\n private concurrent: number = Number.POSITIVE_INFINITY) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n } else {\n this.buffer.push(value);\n }\n }\n\n protected _tryNext(value: T) {\n let result: ObservableInput;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.active++;\n this._innerSub(result);\n }\n\n private _innerSub(ish: ObservableInput): void {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(ish, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n this.destination.next!(innerValue);\n }\n\n notifyComplete(): void {\n const buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift()!);\n } else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete!();\n }\n }\n}\n\n/**\n * @deprecated renamed. Use {@link mergeMap}\n */\nexport const flatMap = mergeMap;","let nextHandle = 1;\nconst RESOLVED = (() => Promise.resolve())();\nconst activeHandles: { [key: number]: any } = {};\n\n/**\n * Finds the handle in the list of active handles, and removes it.\n * Returns `true` if found, `false` otherwise. Used both to clear\n * Immediate scheduled tasks, and to identify if a task should be scheduled.\n */\nfunction findAndClearHandle(handle: number): boolean {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\n\n/**\n * Helper functions to schedule and unschedule microtasks.\n */\nexport const Immediate = {\n setImmediate(cb: () => void): number {\n const handle = nextHandle++;\n activeHandles[handle] = true;\n RESOLVED.then(() => findAndClearHandle(handle) && cb());\n return handle;\n },\n\n clearImmediate(handle: number): void {\n findAndClearHandle(handle);\n },\n};\n\n/**\n * Used for internal testing purposes only. Do not export from library.\n */\nexport const TestTools = {\n pending() {\n return Object.keys(activeHandles).length;\n }\n};\n","import { Immediate } from '../util/Immediate';\nimport { AsyncAction } from './AsyncAction';\nimport { AsapScheduler } from './AsapScheduler';\nimport { SchedulerAction } from '../types';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AsapAction extends AsyncAction {\n\n constructor(protected scheduler: AsapScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If a microtask has already been scheduled, don't schedule another\n // one. If a microtask hasn't been scheduled yet, schedule one now. Return\n // the current scheduled microtask id.\n return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(\n scheduler.flush.bind(scheduler, null)\n ));\n }\n protected recycleAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue is empty, cancel the requested microtask and\n // set the scheduled flag to undefined so the next AsapAction will schedule\n // its own.\n if (scheduler.actions.length === 0) {\n Immediate.clearImmediate(id);\n scheduler.scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AsapScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n\n this.active = true;\n this.scheduled = undefined;\n\n const {actions} = this;\n let error: any;\n let index: number = -1;\n let count: number = actions.length;\n action = action || actions.shift();\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this.active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\n\n/**\n *\n * Asap Scheduler\n *\n * Perform task as fast as it can be performed asynchronously\n *\n * `asap` scheduler behaves the same as {@link asyncScheduler} scheduler when you use it to delay task\n * in time. If however you set delay to `0`, `asap` will wait for current synchronously executing\n * code to end and then it will try to execute given task as fast as possible.\n *\n * `asap` scheduler will do its best to minimize time between end of currently executing code\n * and start of scheduled task. This makes it best candidate for performing so called \"deferring\".\n * Traditionally this was achieved by calling `setTimeout(deferredTask, 0)`, but that technique involves\n * some (although minimal) unwanted delay.\n *\n * Note that using `asap` scheduler does not necessarily mean that your task will be first to process\n * after currently executing code. In particular, if some task was also scheduled with `asap` before,\n * that task will execute first. That being said, if you need to schedule task asynchronously, but\n * as soon as possible, `asap` scheduler is your best bet.\n *\n * ## Example\n * Compare async and asap scheduler<\n * ```ts\n * import { asapScheduler, asyncScheduler } from 'rxjs';\n *\n * asyncScheduler.schedule(() => console.log('async')); // scheduling 'async' first...\n * asapScheduler.schedule(() => console.log('asap'));\n *\n * // Logs:\n * // \"asap\"\n * // \"async\"\n * // ... but 'asap' goes first!\n * ```\n */\nexport const asapScheduler = new AsapScheduler(AsapAction);\n\n/**\n * @deprecated renamed. Use {@link asapScheduler}\n */\nexport const asap = asapScheduler;\n","import { SchedulerLike, SchedulerAction } from '../types';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { asap } from '../scheduler/asap';\nimport { isNumeric } from '../util/isNumeric';\n\nexport interface DispatchArg {\n source: Observable;\n subscriber: Subscriber;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport class SubscribeOnObservable extends Observable {\n /** @nocollapse */\n static create(source: Observable, delay: number = 0, scheduler: SchedulerLike = asap): Observable {\n return new SubscribeOnObservable(source, delay, scheduler);\n }\n\n /** @nocollapse */\n static dispatch(this: SchedulerAction, arg: DispatchArg): Subscription {\n const { source, subscriber } = arg;\n return this.add(source.subscribe(subscriber));\n }\n\n constructor(public source: Observable,\n private delayTime: number = 0,\n private scheduler: SchedulerLike = asap) {\n super();\n if (!isNumeric(delayTime) || delayTime < 0) {\n this.delayTime = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n this.scheduler = asap;\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n const delay = this.delayTime;\n const source = this.source;\n const scheduler = this.scheduler;\n\n return scheduler.schedule>(SubscribeOnObservable.dispatch, delay, {\n source, subscriber\n });\n }\n}\n","import { isArray } from './isArray';\n\nexport function isNumeric(val: any): val is number | string {\n // parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n // subtraction forces infinities to NaN\n // adding 1 corrects loss of precision from parseFloat (#15100)\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { SubscribeOnObservable } from '../observable/SubscribeOnObservable';\nimport { MonoTypeOperatorFunction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Asynchronously subscribes Observers to this Observable on the specified {@link SchedulerLike}.\n *\n * With `subscribeOn` you can decide what type of scheduler a specific Observable will be using when it is subscribed to.\n *\n * Schedulers control the speed and order of emissions to observers from an Observable stream.\n *\n * ![](subscribeOn.png)\n *\n * ## Example\n * Given the following code:\n * ```javascript\n * import { of, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3, 4);\n * const b = of(5, 6, 7, 8, 9);\n * merge(a, b).subscribe(console.log);\n * ```\n *\n * Both Observable `a` and `b` will emit their values directly and synchronously once they are subscribed to.\n * This will result in the output of `1 2 3 4 5 6 7 8 9`.\n *\n * But if we instead us the `subscribeOn` operator declaring that we want to use the {@link asyncScheduler} for values emited by Observable `a`:\n * ```javascript\n * import { of, merge, asyncScheduler } from 'rxjs';\n * import { subscribeOn } from 'rxjs/operators';\n *\n * const a = of(1, 2, 3, 4).pipe(subscribeOn(asyncScheduler));\n * const b = of(5, 6, 7, 8, 9);\n * merge(a, b).subscribe(console.log);\n * ```\n *\n * The output will instead be `5 6 7 8 9 1 2 3 4`.\n * The reason for this is that Observable `b` emits its values directly and synchronously like before\n * but the emissions from `a` are scheduled on the event loop because we are now using the {@link asyncScheduler} for that specific Observable.\n *\n * @param {SchedulerLike} scheduler - The {@link SchedulerLike} to perform subscription actions on.\n * @return {Observable} The source Observable modified so that its subscriptions happen on the specified {@link SchedulerLike}.\n .\n * @method subscribeOn\n * @owner Observable\n */\nexport function subscribeOn(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction {\n return function subscribeOnOperatorFunction(source: Observable): Observable {\n return source.lift(new SubscribeOnOperator(scheduler, delay));\n };\n}\n\nclass SubscribeOnOperator implements Operator {\n constructor(private scheduler: SchedulerLike,\n private delay: number) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return new SubscribeOnObservable(\n source, this.delay, this.scheduler\n ).subscribe(subscriber);\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function filter(predicate: (value: T, index: number) => value is S,\n thisArg?: any): OperatorFunction;\nexport function filter(predicate: (value: T, index: number) => boolean,\n thisArg?: any): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.\n *\n * ![](filter.png)\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * ## Example\n * Emit only click events whose target was a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { filter } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksOnDivs = clicks.pipe(filter(ev => ev.target.tagName === 'DIV'));\n * clicksOnDivs.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nexport function filter(predicate: (value: T, index: number) => boolean,\n thisArg?: any): MonoTypeOperatorFunction {\n return function filterOperatorFunction(source: Observable): Observable {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\n\nclass FilterOperator implements Operator {\n constructor(private predicate: (value: T, index: number) => boolean,\n private thisArg?: any) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass FilterSubscriber extends Subscriber {\n\n count: number = 0;\n\n constructor(destination: Subscriber,\n private predicate: (value: T, index: number) => boolean,\n private thisArg: any) {\n super(destination);\n }\n\n // the try catch block below is left specifically for\n // optimization and perf reasons. a tryCatcher is not necessary here.\n protected _next(value: T) {\n let result: any;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n }\n}\n","import { filter } from 'rxjs/operators';\n\nvar keyHasType = function keyHasType(type, key) {\n return type === key || typeof key === 'function' && type === key.toString();\n};\n\nexport var ofType = function ofType() {\n for (var _len = arguments.length, keys = Array(_len), _key = 0; _key < _len; _key++) {\n keys[_key] = arguments[_key];\n }\n\n return function (source) {\n return source.pipe(filter(function (_ref) {\n var type = _ref.type;\n\n var len = keys.length;\n if (len === 1) {\n return keyHasType(type, keys[0]);\n } else {\n for (var i = 0; i < len; i++) {\n if (keyHasType(type, keys[i])) {\n return true;\n }\n }\n }\n return false;\n }));\n };\n};","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { Observable, of as _of, from as _from } from 'rxjs';\nimport { ofType as _ofType } from './operators';\n\nexport var ActionsObservable = function (_Observable) {\n _inherits(ActionsObservable, _Observable);\n\n _createClass(ActionsObservable, null, [{\n key: 'of',\n value: function of() {\n return new this(_of.apply(undefined, arguments));\n }\n }, {\n key: 'from',\n value: function from(actions, scheduler) {\n return new this(_from(actions, scheduler));\n }\n }]);\n\n function ActionsObservable(actionsSubject) {\n _classCallCheck(this, ActionsObservable);\n\n var _this = _possibleConstructorReturn(this, (ActionsObservable.__proto__ || Object.getPrototypeOf(ActionsObservable)).call(this));\n\n _this.source = actionsSubject;\n return _this;\n }\n\n _createClass(ActionsObservable, [{\n key: 'lift',\n value: function lift(operator) {\n var observable = new ActionsObservable(this);\n observable.operator = operator;\n return observable;\n }\n }, {\n key: 'ofType',\n value: function ofType() {\n return _ofType.apply(undefined, arguments)(this);\n }\n }]);\n\n return ActionsObservable;\n}(Observable);","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { Observable, Subject } from 'rxjs';\n\nexport var StateObservable = function (_Observable) {\n _inherits(StateObservable, _Observable);\n\n function StateObservable(stateSubject, initialState) {\n _classCallCheck(this, StateObservable);\n\n var _this = _possibleConstructorReturn(this, (StateObservable.__proto__ || Object.getPrototypeOf(StateObservable)).call(this, function (subscriber) {\n var subscription = _this.__notifier.subscribe(subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(_this.value);\n }\n return subscription;\n }));\n\n _this.value = initialState;\n _this.__notifier = new Subject();\n _this.__subscription = stateSubject.subscribe(function (value) {\n // We only want to update state$ if it has actually changed since\n // redux requires reducers use immutability patterns.\n // This is basically what distinctUntilChanged() does but it's so simple\n // we don't need to pull that code in\n if (value !== _this.value) {\n _this.value = value;\n _this.__notifier.next(value);\n }\n });\n return _this;\n }\n\n return StateObservable;\n}(Observable);","import { Subject, from, queueScheduler } from 'rxjs';\nimport { map, mergeMap, observeOn, subscribeOn } from 'rxjs/operators';\nimport { ActionsObservable } from './ActionsObservable';\nimport { StateObservable } from './StateObservable';\nimport { warn } from './utils/console';\n\nexport function createEpicMiddleware() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n // This isn't great. RxJS doesn't publicly export the constructor for\n // QueueScheduler nor QueueAction, so we reach in. We need to do this because\n // we don't want our internal queuing mechanism to be on the same queue as any\n // other RxJS code outside of redux-observable internals.\n var QueueScheduler = queueScheduler.constructor;\n var uniqueQueueScheduler = new QueueScheduler(queueScheduler.SchedulerAction);\n\n if (process.env.NODE_ENV !== 'production' && typeof options === 'function') {\n throw new TypeError('Providing your root Epic to `createEpicMiddleware(rootEpic)` is no longer supported, instead use `epicMiddleware.run(rootEpic)`\\n\\nLearn more: https://redux-observable.js.org/MIGRATION.html#setting-up-the-middleware');\n }\n\n var epic$ = new Subject();\n var store = void 0;\n\n var epicMiddleware = function epicMiddleware(_store) {\n if (process.env.NODE_ENV !== 'production' && store) {\n // https://github.com/redux-observable/redux-observable/issues/389\n warn('this middleware is already associated with a store. createEpicMiddleware should be called for every store.\\n\\nLearn more: https://goo.gl/2GQ7Da');\n }\n store = _store;\n var actionSubject$ = new Subject().pipe(observeOn(uniqueQueueScheduler));\n var stateSubject$ = new Subject().pipe(observeOn(uniqueQueueScheduler));\n var action$ = new ActionsObservable(actionSubject$);\n var state$ = new StateObservable(stateSubject$, store.getState());\n\n var result$ = epic$.pipe(map(function (epic) {\n var output$ = 'dependencies' in options ? epic(action$, state$, options.dependencies) : epic(action$, state$);\n\n if (!output$) {\n throw new TypeError('Your root Epic \"' + (epic.name || '') + '\" does not return a stream. Double check you\\'re not missing a return statement!');\n }\n\n return output$;\n }), mergeMap(function (output$) {\n return from(output$).pipe(subscribeOn(uniqueQueueScheduler), observeOn(uniqueQueueScheduler));\n }));\n\n result$.subscribe(store.dispatch);\n\n return function (next) {\n return function (action) {\n // Downstream middleware gets the action first,\n // which includes their reducers, so state is\n // updated before epics receive the action\n var result = next(action);\n\n // It's important to update the state$ before we emit\n // the action because otherwise it would be stale\n stateSubject$.next(store.getState());\n actionSubject$.next(action);\n\n return result;\n };\n };\n };\n\n epicMiddleware.run = function (rootEpic) {\n if (process.env.NODE_ENV !== 'production' && !store) {\n warn('epicMiddleware.run(rootEpic) called before the middleware has been setup by redux. Provide the epicMiddleware instance to createStore() first.');\n }\n epic$.next(rootEpic);\n };\n\n return epicMiddleware;\n}","\nimport { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nimport { OperatorFunction, ObservableInput } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * Flattens an Observable-of-Observables.\n *\n * ![](mergeAll.png)\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n * Spawn a new interval Observable for each click event, and blend their outputs as one Observable\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(map((ev) => interval(1000)));\n * const firstOrder = higherOrder.pipe(mergeAll());\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * Count from 0 to 9 every second for each click, but only allow 2 concurrent timers\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { take, map, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map((ev) => interval(1000).pipe(take(10))),\n * );\n * const firstOrder = higherOrder.pipe(mergeAll(2));\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits values coming from all the\n * inner Observables emitted by the source Observable.\n * @method mergeAll\n * @owner Observable\n */\nexport function mergeAll(concurrent: number = Number.POSITIVE_INFINITY): OperatorFunction, T> {\n return mergeMap(identity, concurrent);\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike} from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n\nexport function merge(v1: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent?: number): Observable;\nexport function merge(...observables: (ObservableInput | number)[]): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(...observables: (ObservableInput | SchedulerLike | number)[]): Observable;\nexport function merge(...observables: (ObservableInput | number)[]): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(...observables: (ObservableInput | SchedulerLike | number)[]): Observable;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * Flattens multiple Observables together by blending\n * their values into one Observable.\n *\n * ![](merge.png)\n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n * ### Merge together two Observables: 1s interval and clicks\n * ```ts\n * import { merge, fromEvent, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const clicksOrTimer = merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console everytime the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n * ```\n *\n * ### Merge together 3 Observables, but only 2 run concurrently\n * ```ts\n * import { merge, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n * const concurrent = 2; // the argument\n * const merged = merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits its max iteration, timer2 will\n * // continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits its max iteration it terminates, and\n * // timer3 will continue to emit a value every 500ms until it is complete\n * ```\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n * @static true\n * @name merge\n * @owner Observable\n */\nexport function merge(...observables: Array | SchedulerLike | number>): Observable {\n let concurrent = Number.POSITIVE_INFINITY;\n let scheduler: SchedulerLike = null;\n let last: any = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n } else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return >observables[0];\n }\n\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nimport { merge } from 'rxjs';\n\n/**\n Merges all epics into a single one.\n */\nexport var combineEpics = function combineEpics() {\n for (var _len = arguments.length, epics = Array(_len), _key = 0; _key < _len; _key++) {\n epics[_key] = arguments[_key];\n }\n\n var merger = function merger() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge.apply(undefined, _toConsumableArray(epics.map(function (epic) {\n var output$ = epic.apply(undefined, args);\n if (!output$) {\n throw new TypeError('combineEpics: one of the provided Epics \"' + (epic.name || '') + '\" does not return a stream. Double check you\\'re not missing a return statement!');\n }\n return output$;\n })));\n };\n\n // Technically the `name` property on Function's are supposed to be read-only.\n // While some JS runtimes allow it anyway (so this is useful in debugging)\n // some actually throw an exception when you attempt to do so.\n try {\n Object.defineProperty(merger, 'name', {\n value: 'combineEpics(' + epics.map(function (epic) {\n return epic.name || '';\n }).join(', ') + ')'\n });\n } catch (e) {}\n\n return merger;\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nimport { CALL_HISTORY_METHOD } from './actions';\n/**\n * This middleware captures CALL_HISTORY_METHOD actions to redirect to the\n * provided history object. This will prevent these actions from reaching your\n * reducer or any middleware that comes after this one.\n */\n\nvar routerMiddleware = function routerMiddleware(history) {\n return function (store) {\n return function (next) {\n return function (action) {\n // eslint-disable-line no-unused-vars\n if (action.type !== CALL_HISTORY_METHOD) {\n return next(action);\n }\n\n var _action$payload = action.payload,\n method = _action$payload.method,\n args = _action$payload.args;\n history[method].apply(history, _toConsumableArray(args));\n };\n };\n };\n};\n\nexport default routerMiddleware;","import { Observable } from '../Observable';\nimport { defer } from './defer';\nimport { EMPTY } from './empty';\nimport { SubscribableOrPromise } from '../types';\n\n/**\n * Decides at subscription time which Observable will actually be subscribed.\n *\n * `If` statement for Observables.\n *\n * `iif` accepts a condition function and two Observables. When\n * an Observable returned by the operator is subscribed, condition function will be called.\n * Based on what boolean it returns at that moment, consumer will subscribe either to\n * the first Observable (if condition was true) or to the second (if condition was false). Condition\n * function may also not return anything - in that case condition will be evaluated as false and\n * second Observable will be subscribed.\n *\n * Note that Observables for both cases (true and false) are optional. If condition points to an Observable that\n * was left undefined, resulting stream will simply complete immediately. That allows you to, rather\n * than controlling which Observable will be subscribed, decide at runtime if consumer should have access\n * to given Observable or not.\n *\n * If you have more complex logic that requires decision between more than two Observables, {@link defer}\n * will probably be a better choice. Actually `iif` can be easily implemented with {@link defer}\n * and exists only for convenience and readability reasons.\n *\n *\n * ## Examples\n * ### Change at runtime which Observable will be subscribed\n * ```ts\n * import { iif, of } from 'rxjs';\n *\n * let subscribeToFirst;\n * const firstOrSecond = iif(\n * () => subscribeToFirst,\n * of('first'),\n * of('second'),\n * );\n *\n * subscribeToFirst = true;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"first\"\n *\n * subscribeToFirst = false;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"second\"\n *\n * ```\n *\n * ### Control an access to an Observable\n * ```ts\n * let accessGranted;\n * const observableIfYouHaveAccess = iif(\n * () => accessGranted,\n * of('It seems you have an access...'), // Note that only one Observable is passed to the operator.\n * );\n *\n * accessGranted = true;\n * observableIfYouHaveAccess.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('The end'),\n * );\n *\n * // Logs:\n * // \"It seems you have an access...\"\n * // \"The end\"\n *\n * accessGranted = false;\n * observableIfYouHaveAccess.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('The end'),\n * );\n *\n * // Logs:\n * // \"The end\"\n * ```\n *\n * @see {@link defer}\n *\n * @param {function(): boolean} condition Condition which Observable should be chosen.\n * @param {Observable} [trueObservable] An Observable that will be subscribed if condition is true.\n * @param {Observable} [falseObservable] An Observable that will be subscribed if condition is false.\n * @return {Observable} Either first or second Observable, depending on condition.\n * @static true\n * @name iif\n * @owner Observable\n*/\nexport function iif(\n condition: () => boolean,\n trueResult: SubscribableOrPromise = EMPTY,\n falseResult: SubscribableOrPromise = EMPTY\n): Observable {\n return defer(() => condition() ? trueResult : falseResult);\n}\n","import { Observable } from '../Observable';\nimport { SubscribableOrPromise, ObservedValueOf, ObservableInput } from '../types';\nimport { from } from './from'; // lol\nimport { empty } from './empty';\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * Creates the Observable lazily, that is, only when it\n * is subscribed.\n * \n *\n * ![](defer.png)\n *\n * `defer` allows you to create the Observable only when the Observer\n * subscribes, and create a fresh Observable for each Observer. It waits until\n * an Observer subscribes to it, and then it generates an Observable,\n * typically with an Observable factory function. It does this afresh for each\n * subscriber, so although each subscriber may think it is subscribing to the\n * same Observable, in fact each subscriber gets its own individual\n * Observable.\n *\n * ## Example\n * ### Subscribe to either an Observable of clicks or an Observable of interval, at random\n * ```ts\n * import { defer, fromEvent, interval } from 'rxjs';\n *\n * const clicksOrInterval = defer(function () {\n * return Math.random() > 0.5\n * ? fromEvent(document, 'click')\n * : interval(1000);\n * });\n * clicksOrInterval.subscribe(x => console.log(x));\n *\n * // Results in the following behavior:\n * // If the result of Math.random() is greater than 0.5 it will listen\n * // for clicks anywhere on the \"document\"; when document is clicked it\n * // will log a MouseEvent object to the console. If the result is less\n * // than 0.5 it will emit ascending numbers, one every second(1000ms).\n * ```\n *\n * @see {@link Observable}\n *\n * @param {function(): SubscribableOrPromise} observableFactory The Observable\n * factory function to invoke for each Observer that subscribes to the output\n * Observable. May also return a Promise, which will be converted on the fly\n * to an Observable.\n * @return {Observable} An Observable whose Observers' subscriptions trigger\n * an invocation of the given Observable factory function.\n * @static true\n * @name defer\n * @owner Observable\n */\nexport function defer | void>(observableFactory: () => R): Observable> {\n return new Observable>(subscriber => {\n let input: R | void;\n try {\n input = observableFactory();\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n const source = input ? from(input as ObservableInput>) : empty();\n return source.subscribe(subscriber);\n });\n}\n","import { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subject } from '../Subject';\nimport { OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function groupBy(keySelector: (value: T) => K): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector: void, durationSelector: (grouped: GroupedObservable) => Observable): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector?: (value: T) => R, durationSelector?: (grouped: GroupedObservable) => Observable): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector?: (value: T) => R, durationSelector?: (grouped: GroupedObservable) => Observable, subjectSelector?: () => Subject): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Groups the items emitted by an Observable according to a specified criterion,\n * and emits these grouped items as `GroupedObservables`, one\n * {@link GroupedObservable} per group.\n *\n * ![](groupBy.png)\n *\n * When the Observable emits an item, a key is computed for this item with the keySelector function.\n *\n * If a {@link GroupedObservable} for this key exists, this {@link GroupedObservable} emits. Elsewhere, a new\n * {@link GroupedObservable} for this key is created and emits.\n *\n * A {@link GroupedObservable} represents values belonging to the same group represented by a common key. The common\n * key is available as the key field of a {@link GroupedObservable} instance.\n *\n * The elements emitted by {@link GroupedObservable}s are by default the items emitted by the Observable, or elements\n * returned by the elementSelector function.\n *\n * ## Examples\n *\n * ### Group objects by id and return as array\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { mergeMap, groupBy, reduce } from 'rxjs/operators';\n *\n * of(\n * {id: 1, name: 'JavaScript'},\n * {id: 2, name: 'Parcel'},\n * {id: 2, name: 'webpack'},\n * {id: 1, name: 'TypeScript'},\n * {id: 3, name: 'TSLint'}\n * ).pipe(\n * groupBy(p => p.id),\n * mergeMap((group$) => group$.pipe(reduce((acc, cur) => [...acc, cur], []))),\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // [ { id: 1, name: 'JavaScript'},\n * // { id: 1, name: 'TypeScript'} ]\n * //\n * // [ { id: 2, name: 'Parcel'},\n * // { id: 2, name: 'webpack'} ]\n * //\n * // [ { id: 3, name: 'TSLint'} ]\n * ```\n *\n * ### Pivot data on the id field\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { groupBy, map, mergeMap, reduce } from 'rxjs/operators';\n *\n * of(\n * { id: 1, name: 'JavaScript' },\n * { id: 2, name: 'Parcel' },\n * { id: 2, name: 'webpack' },\n * { id: 1, name: 'TypeScript' },\n * { id: 3, name: 'TSLint' }\n * )\n * .pipe(\n * groupBy(p => p.id, p => p.name),\n * mergeMap(group$ =>\n * group$.pipe(reduce((acc, cur) => [...acc, cur], [`${group$.key}`]))\n * ),\n * map(arr => ({ id: parseInt(arr[0], 10), values: arr.slice(1) }))\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // { id: 1, values: [ 'JavaScript', 'TypeScript' ] }\n * // { id: 2, values: [ 'Parcel', 'webpack' ] }\n * // { id: 3, values: [ 'TSLint' ] }\n * ```\n *\n * @param {function(value: T): K} keySelector A function that extracts the key\n * for each item.\n * @param {function(value: T): R} [elementSelector] A function that extracts the\n * return element for each item.\n * @param {function(grouped: GroupedObservable): Observable} [durationSelector]\n * A function that returns an Observable to determine how long each group should\n * exist.\n * @return {Observable>} An Observable that emits\n * GroupedObservables, each of which corresponds to a unique key value and each\n * of which emits those items from the source Observable that share that key\n * value.\n * @method groupBy\n * @owner Observable\n */\nexport function groupBy(keySelector: (value: T) => K,\n elementSelector?: ((value: T) => R) | void,\n durationSelector?: (grouped: GroupedObservable) => Observable,\n subjectSelector?: () => Subject): OperatorFunction> {\n return (source: Observable) =>\n source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));\n}\n\nexport interface RefCountSubscription {\n count: number;\n unsubscribe: () => void;\n closed: boolean;\n attemptedToUnsubscribe: boolean;\n}\n\nclass GroupByOperator implements Operator> {\n constructor(private keySelector: (value: T) => K,\n private elementSelector?: ((value: T) => R) | void,\n private durationSelector?: (grouped: GroupedObservable) => Observable,\n private subjectSelector?: () => Subject) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new GroupBySubscriber(\n subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass GroupBySubscriber extends Subscriber implements RefCountSubscription {\n private groups: Map> = null;\n public attemptedToUnsubscribe: boolean = false;\n public count: number = 0;\n\n constructor(destination: Subscriber>,\n private keySelector: (value: T) => K,\n private elementSelector?: ((value: T) => R) | void,\n private durationSelector?: (grouped: GroupedObservable) => Observable,\n private subjectSelector?: () => Subject) {\n super(destination);\n }\n\n protected _next(value: T): void {\n let key: K;\n try {\n key = this.keySelector(value);\n } catch (err) {\n this.error(err);\n return;\n }\n\n this._group(value, key);\n }\n\n private _group(value: T, key: K) {\n let groups = this.groups;\n\n if (!groups) {\n groups = this.groups = new Map>();\n }\n\n let group = groups.get(key);\n\n let element: R;\n if (this.elementSelector) {\n try {\n element = this.elementSelector(value);\n } catch (err) {\n this.error(err);\n }\n } else {\n element = value;\n }\n\n if (!group) {\n group = (this.subjectSelector ? this.subjectSelector() : new Subject()) as Subject;\n groups.set(key, group);\n const groupedObservable = new GroupedObservable(key, group, this);\n this.destination.next(groupedObservable);\n if (this.durationSelector) {\n let duration: any;\n try {\n duration = this.durationSelector(new GroupedObservable(key, >group));\n } catch (err) {\n this.error(err);\n return;\n }\n this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this)));\n }\n }\n\n if (!group.closed) {\n group.next(element);\n }\n }\n\n protected _error(err: any): void {\n const groups = this.groups;\n if (groups) {\n groups.forEach((group, key) => {\n group.error(err);\n });\n\n groups.clear();\n }\n this.destination.error(err);\n }\n\n protected _complete(): void {\n const groups = this.groups;\n if (groups) {\n groups.forEach((group, key) => {\n group.complete();\n });\n\n groups.clear();\n }\n this.destination.complete();\n }\n\n removeGroup(key: K): void {\n this.groups.delete(key);\n }\n\n unsubscribe() {\n if (!this.closed) {\n this.attemptedToUnsubscribe = true;\n if (this.count === 0) {\n super.unsubscribe();\n }\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass GroupDurationSubscriber extends Subscriber {\n constructor(private key: K,\n private group: Subject,\n private parent: GroupBySubscriber) {\n super(group);\n }\n\n protected _next(value: T): void {\n this.complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { parent, key } = this;\n this.key = this.parent = null;\n if (parent) {\n parent.removeGroup(key);\n }\n }\n}\n\n/**\n * An Observable representing values belonging to the same group represented by\n * a common key. The values emitted by a GroupedObservable come from the source\n * Observable. The common key is available as the field `key` on a\n * GroupedObservable instance.\n *\n * @class GroupedObservable\n */\nexport class GroupedObservable extends Observable {\n /** @deprecated Do not construct this type. Internal use only */\n constructor(public key: K,\n private groupSubject: Subject,\n private refCountSubscription?: RefCountSubscription) {\n super();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n const subscription = new Subscription();\n const { refCountSubscription, groupSubject } = this;\n if (refCountSubscription && !refCountSubscription.closed) {\n subscription.add(new InnerRefCountSubscription(refCountSubscription));\n }\n subscription.add(groupSubject.subscribe(subscriber));\n return subscription;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass InnerRefCountSubscription extends Subscription {\n constructor(private parent: RefCountSubscription) {\n super();\n parent.count++;\n }\n\n unsubscribe() {\n const parent = this.parent;\n if (!parent.closed && !this.closed) {\n super.unsubscribe();\n parent.count -= 1;\n if (parent.count === 0 && parent.attemptedToUnsubscribe) {\n parent.unsubscribe();\n }\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { of } from './of';\nimport { from } from './from';\nimport { concatAll } from '../operators/concatAll';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat>(v1: O1, scheduler: SchedulerLike): Observable>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput>(v1: O1, v2: O2, scheduler: SchedulerLike): Observable | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n\nexport function concat>(v1: O1): Observable>;\nexport function concat, O2 extends ObservableInput>(v1: O1, v2: O2): Observable | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3): Observable | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat>(...observables: O[]): Observable>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat>(...observables: (O | SchedulerLike)[]): Observable>;\nexport function concat(...observables: ObservableInput[]): Observable;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat(...observables: (ObservableInput | SchedulerLike)[]): Observable;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which sequentially emits all values from given\n * Observable and then moves on to the next.\n *\n * Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.\n *\n * ![](concat.png)\n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * ## Examples\n * ### Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10\n * ```ts\n * import { concat, interval, range } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer = interval(1000).pipe(take(4));\n * const sequence = range(1, 10);\n * const result = concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n * ```\n *\n * ### Concatenate 3 Observables\n * ```ts\n * import { concat, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const result = concat(timer1, timer2, timer3);\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n * ```\n *\n * ### Concatenate the same Observable to repeat it\n * ```ts\n * import { concat, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer = interval(1000).pipe(take(2));\n *\n * concat(timer, timer) // concatenating the same Observable!\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('...and it is done!')\n * );\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // \"...and it is done!\" also after 4s\n * ```\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link startWith}\n * @see {@link endWith}\n *\n * @param {ObservableInput} input1 An input Observable to concatenate with others.\n * @param {ObservableInput} input2 An input Observable to concatenate with others.\n * More than one input Observables may be given as argument.\n * @param {SchedulerLike} [scheduler=null] An optional {@link SchedulerLike} to schedule each\n * Observable subscription on.\n * @return {Observable} All values of each passed Observable merged into a\n * single Observable, in order, in serial fashion.\n * @static true\n * @name concat\n * @owner Observable\n */\nexport function concat, R>(...observables: Array): Observable | R> {\n return concatAll()(of(...observables));\n}\n","\nimport { mergeAll } from './mergeAll';\nimport { OperatorFunction, ObservableInput } from '../types';\n\nexport function concatAll(): OperatorFunction, T>;\nexport function concatAll(): OperatorFunction;\n\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.\n *\n * ![](concatAll.png)\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, take, concatAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(ev => interval(1000).pipe(take(4))),\n * );\n * const firstOrder = higherOrder.pipe(concatAll());\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaust}\n * @see {@link mergeAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable emitting values from all the inner\n * Observables concatenated.\n * @method concatAll\n * @owner Observable\n */\nexport function concatAll(): OperatorFunction, T> {\n return mergeAll(1);\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\n\n/**\n * Groups pairs of consecutive emissions together and emits them as an array of\n * two values.\n *\n * Puts the current value and previous value together as\n * an array, and emits that.\n *\n * ![](pairwise.png)\n *\n * The Nth emission from the source Observable will cause the output Observable\n * to emit an array [(N-1)th, Nth] of the previous and the current value, as a\n * pair. For this reason, `pairwise` emits on the second and subsequent\n * emissions from the source Observable, but not on the first emission, because\n * there is no previous value in that case.\n *\n * ## Example\n * On every click (starting from the second), emit the relative distance to the previous click\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { pairwise, map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const pairs = clicks.pipe(pairwise());\n * const distance = pairs.pipe(\n * map(pair => {\n * const x0 = pair[0].clientX;\n * const y0 = pair[0].clientY;\n * const x1 = pair[1].clientX;\n * const y1 = pair[1].clientY;\n * return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));\n * }),\n * );\n * distance.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n *\n * @return {Observable>} An Observable of pairs (as arrays) of\n * consecutive values from the source Observable.\n * @method pairwise\n * @owner Observable\n */\nexport function pairwise(): OperatorFunction {\n return (source: Observable) => source.lift(new PairwiseOperator());\n}\n\nclass PairwiseOperator implements Operator {\n call(subscriber: Subscriber<[T, T]>, source: any): any {\n return source.subscribe(new PairwiseSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass PairwiseSubscriber extends Subscriber {\n private prev: T;\n private hasPrev: boolean = false;\n\n constructor(destination: Subscriber<[T, T]>) {\n super(destination);\n }\n\n _next(value: T): void {\n let pair: [T, T] | undefined;\n\n if (this.hasPrev) {\n pair = [this.prev, value];\n } else {\n this.hasPrev = true;\n }\n\n this.prev = value;\n\n if (pair) {\n this.destination.next(pair);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\n\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function catchError>(selector: (err: any, caught: Observable) => O): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * ![](catch.png)\n *\n * ## Examples\n * Continues with a different Observable when there's an error\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n *\t return n;\n * }),\n * catchError(err => of('I', 'II', 'III', 'IV', 'V')),\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, I, II, III, IV, V\n * ```\n *\n * Retries the caught source Observable again in case of error, similar to retry() operator\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError, take } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n * \t return n;\n * }),\n * catchError((err, caught) => caught),\n * take(30),\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, 1, 2, 3, ...\n * ```\n *\n * Throws a new error when the source Observable throws an error\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError(err => {\n * throw 'error in source. Details: ' + err;\n * }),\n * )\n * .subscribe(\n * x => console.log(x),\n * err => console.log(err)\n * );\n * // 1, 2, 3, error in source. Details: four!\n * ```\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n * is returned by the `selector` will be used to continue the observable chain.\n * @return {Observable} An observable that originates from either the source or the observable returned by the\n * catch `selector` function.\n * @name catchError\n */\nexport function catchError>(\n selector: (err: any, caught: Observable) => O\n): OperatorFunction> {\n return function catchErrorOperatorFunction(source: Observable): Observable> {\n const operator = new CatchOperator(selector);\n const caught = source.lift(operator);\n return (operator.caught = caught as Observable);\n };\n}\n\nclass CatchOperator implements Operator {\n caught: Observable;\n\n constructor(private selector: (err: any, caught: Observable) => ObservableInput) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass CatchSubscriber extends SimpleOuterSubscriber {\n constructor(destination: Subscriber,\n private selector: (err: any, caught: Observable) => ObservableInput,\n private caught: Observable) {\n super(destination);\n }\n\n // NOTE: overriding `error` instead of `_error` because we don't want\n // to have this flag this subscriber as `isStopped`. We can mimic the\n // behavior of the RetrySubscriber (from the `retry` operator), where\n // we unsubscribe from our source chain, reset our Subscriber flags,\n // then subscribe to the selector result.\n error(err: any) {\n if (!this.isStopped) {\n let result: any;\n try {\n result = this.selector(err, this.caught);\n } catch (err2) {\n super.error(err2);\n return;\n }\n this._unsubscribeAndRecycle();\n const innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n const innerSubscription = innerSubscribe(result, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n }\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * Schedule task as if you used setTimeout(task, duration)\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated renamed. Use {@link asyncScheduler}\n */\nexport const async = asyncScheduler;","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Notification } from '../Notification';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, PartialObserver, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Delays the emission of items from the source Observable by a given timeout or\n * until a given Date.\n *\n * Time shifts each item by some specified amount of\n * milliseconds.\n *\n * ![](delay.png)\n *\n * If the delay argument is a Number, this operator time shifts the source\n * Observable by that amount of time expressed in milliseconds. The relative\n * time intervals between the values are preserved.\n *\n * If the delay argument is a Date, this operator time shifts the start of the\n * Observable execution until the given date occurs.\n *\n * ## Examples\n * Delay each click by one second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { delay } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(delay(1000)); // each click emitted after 1 second\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * Delay all clicks until a future date happens\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { delay } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const date = new Date('March 15, 2050 12:00:00'); // in the future\n * const delayedClicks = clicks.pipe(delay(date)); // click emitted only after that date\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link debounceTime}\n * @see {@link delayWhen}\n *\n * @param {number|Date} delay The delay duration in milliseconds (a `number`) or\n * a `Date` until which the emission of the source items is delayed.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the time-shift for each item.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified timeout or Date.\n * @method delay\n * @owner Observable\n */\nexport function delay(delay: number|Date,\n scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n const absoluteDelay = isDate(delay);\n const delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return (source: Observable) => source.lift(new DelayOperator(delayFor, scheduler));\n}\n\nclass DelayOperator implements Operator {\n constructor(private delay: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n }\n}\n\ninterface DelayState {\n source: DelaySubscriber;\n destination: PartialObserver;\n scheduler: SchedulerLike;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DelaySubscriber extends Subscriber {\n private queue: Array> = [];\n private active: boolean = false;\n private errored: boolean = false;\n\n private static dispatch(this: SchedulerAction>, state: DelayState): void {\n const source = state.source;\n const queue = source.queue;\n const scheduler = state.scheduler;\n const destination = state.destination;\n\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n\n if (queue.length > 0) {\n const delay = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay);\n } else {\n this.unsubscribe();\n source.active = false;\n }\n }\n\n constructor(destination: Subscriber,\n private delay: number,\n private scheduler: SchedulerLike) {\n super(destination);\n }\n\n private _schedule(scheduler: SchedulerLike): void {\n this.active = true;\n const destination = this.destination as Subscription;\n destination.add(scheduler.schedule>(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n }\n\n private scheduleNotification(notification: Notification): void {\n if (this.errored === true) {\n return;\n }\n\n const scheduler = this.scheduler;\n const message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n\n if (this.active === false) {\n this._schedule(scheduler);\n }\n }\n\n protected _next(value: T) {\n this.scheduleNotification(Notification.createNext(value));\n }\n\n protected _error(err: any) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n }\n\n protected _complete() {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n }\n}\n\nclass DelayMessage {\n constructor(public readonly time: number,\n public readonly notification: Notification) {\n }\n}\n","export function isDate(value: any): value is Date {\n return value instanceof Date && !isNaN(+value);\n}\n","/*! @azure/msal-common v4.1.0 2021-03-24 */\n'use strict';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar Constants = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // Prefix for all library cache entries\r\n CACHE_PREFIX: \"msal\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n // Default response type for authorization code flow\r\n CODE_RESPONSE_TYPE: \"code\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n FRAGMENT_RESPONSE_MODE: \"fragment\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n FORWARD_SLASH: \"/\"\r\n};\r\nvar OIDC_DEFAULT_SCOPES = [\r\n Constants.OPENID_SCOPE,\r\n Constants.PROFILE_SCOPE,\r\n Constants.OFFLINE_ACCESS_SCOPE\r\n];\r\nvar OIDC_SCOPES = __spreadArrays(OIDC_DEFAULT_SCOPES, [\r\n Constants.EMAIL_SCOPE\r\n]);\r\n/**\r\n * Request header names\r\n */\r\nvar HeaderNames;\r\n(function (HeaderNames) {\r\n HeaderNames[\"CONTENT_TYPE\"] = \"Content-Type\";\r\n HeaderNames[\"X_CLIENT_CURR_TELEM\"] = \"x-client-current-telemetry\";\r\n HeaderNames[\"X_CLIENT_LAST_TELEM\"] = \"x-client-last-telemetry\";\r\n HeaderNames[\"RETRY_AFTER\"] = \"Retry-After\";\r\n HeaderNames[\"X_MS_LIB_CAPABILITY\"] = \"x-ms-lib-capability\";\r\n HeaderNames[\"X_MS_LIB_CAPABILITY_VALUE\"] = \"retry-after, h429\";\r\n})(HeaderNames || (HeaderNames = {}));\r\n/**\r\n * Persistent cache keys MSAL which stay while user is logged in.\r\n */\r\nvar PersistentCacheKeys;\r\n(function (PersistentCacheKeys) {\r\n PersistentCacheKeys[\"ID_TOKEN\"] = \"idtoken\";\r\n PersistentCacheKeys[\"CLIENT_INFO\"] = \"client.info\";\r\n PersistentCacheKeys[\"ADAL_ID_TOKEN\"] = \"adal.idtoken\";\r\n PersistentCacheKeys[\"ERROR\"] = \"error\";\r\n PersistentCacheKeys[\"ERROR_DESC\"] = \"error.description\";\r\n})(PersistentCacheKeys || (PersistentCacheKeys = {}));\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nvar AADAuthorityConstants;\r\n(function (AADAuthorityConstants) {\r\n AADAuthorityConstants[\"COMMON\"] = \"common\";\r\n AADAuthorityConstants[\"ORGANIZATIONS\"] = \"organizations\";\r\n AADAuthorityConstants[\"CONSUMERS\"] = \"consumers\";\r\n})(AADAuthorityConstants || (AADAuthorityConstants = {}));\r\n/**\r\n * Keys in the hashParams sent by AAD Server\r\n */\r\nvar AADServerParamKeys;\r\n(function (AADServerParamKeys) {\r\n AADServerParamKeys[\"CLIENT_ID\"] = \"client_id\";\r\n AADServerParamKeys[\"REDIRECT_URI\"] = \"redirect_uri\";\r\n AADServerParamKeys[\"RESPONSE_TYPE\"] = \"response_type\";\r\n AADServerParamKeys[\"RESPONSE_MODE\"] = \"response_mode\";\r\n AADServerParamKeys[\"GRANT_TYPE\"] = \"grant_type\";\r\n AADServerParamKeys[\"CLAIMS\"] = \"claims\";\r\n AADServerParamKeys[\"SCOPE\"] = \"scope\";\r\n AADServerParamKeys[\"ERROR\"] = \"error\";\r\n AADServerParamKeys[\"ERROR_DESCRIPTION\"] = \"error_description\";\r\n AADServerParamKeys[\"ACCESS_TOKEN\"] = \"access_token\";\r\n AADServerParamKeys[\"ID_TOKEN\"] = \"id_token\";\r\n AADServerParamKeys[\"REFRESH_TOKEN\"] = \"refresh_token\";\r\n AADServerParamKeys[\"EXPIRES_IN\"] = \"expires_in\";\r\n AADServerParamKeys[\"STATE\"] = \"state\";\r\n AADServerParamKeys[\"NONCE\"] = \"nonce\";\r\n AADServerParamKeys[\"PROMPT\"] = \"prompt\";\r\n AADServerParamKeys[\"SESSION_STATE\"] = \"session_state\";\r\n AADServerParamKeys[\"CLIENT_INFO\"] = \"client_info\";\r\n AADServerParamKeys[\"CODE\"] = \"code\";\r\n AADServerParamKeys[\"CODE_CHALLENGE\"] = \"code_challenge\";\r\n AADServerParamKeys[\"CODE_CHALLENGE_METHOD\"] = \"code_challenge_method\";\r\n AADServerParamKeys[\"CODE_VERIFIER\"] = \"code_verifier\";\r\n AADServerParamKeys[\"CLIENT_REQUEST_ID\"] = \"client-request-id\";\r\n AADServerParamKeys[\"X_CLIENT_SKU\"] = \"x-client-SKU\";\r\n AADServerParamKeys[\"X_CLIENT_VER\"] = \"x-client-VER\";\r\n AADServerParamKeys[\"X_CLIENT_OS\"] = \"x-client-OS\";\r\n AADServerParamKeys[\"X_CLIENT_CPU\"] = \"x-client-CPU\";\r\n AADServerParamKeys[\"POST_LOGOUT_URI\"] = \"post_logout_redirect_uri\";\r\n AADServerParamKeys[\"ID_TOKEN_HINT\"] = \"id_token_hint\";\r\n AADServerParamKeys[\"DEVICE_CODE\"] = \"device_code\";\r\n AADServerParamKeys[\"CLIENT_SECRET\"] = \"client_secret\";\r\n AADServerParamKeys[\"CLIENT_ASSERTION\"] = \"client_assertion\";\r\n AADServerParamKeys[\"CLIENT_ASSERTION_TYPE\"] = \"client_assertion_type\";\r\n AADServerParamKeys[\"TOKEN_TYPE\"] = \"token_type\";\r\n AADServerParamKeys[\"REQ_CNF\"] = \"req_cnf\";\r\n AADServerParamKeys[\"OBO_ASSERTION\"] = \"assertion\";\r\n AADServerParamKeys[\"REQUESTED_TOKEN_USE\"] = \"requested_token_use\";\r\n AADServerParamKeys[\"ON_BEHALF_OF\"] = \"on_behalf_of\";\r\n AADServerParamKeys[\"FOCI\"] = \"foci\";\r\n})(AADServerParamKeys || (AADServerParamKeys = {}));\r\n/**\r\n * Claims request keys\r\n */\r\nvar ClaimsRequestKeys;\r\n(function (ClaimsRequestKeys) {\r\n ClaimsRequestKeys[\"ACCESS_TOKEN\"] = \"access_token\";\r\n ClaimsRequestKeys[\"XMS_CC\"] = \"xms_cc\";\r\n})(ClaimsRequestKeys || (ClaimsRequestKeys = {}));\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nvar PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n};\r\n/**\r\n * SSO Types - generated to populate hints\r\n */\r\nvar SSOTypes;\r\n(function (SSOTypes) {\r\n SSOTypes[\"ACCOUNT\"] = \"account\";\r\n SSOTypes[\"SID\"] = \"sid\";\r\n SSOTypes[\"LOGIN_HINT\"] = \"login_hint\";\r\n SSOTypes[\"ID_TOKEN\"] = \"id_token\";\r\n SSOTypes[\"DOMAIN_HINT\"] = \"domain_hint\";\r\n SSOTypes[\"ORGANIZATIONS\"] = \"organizations\";\r\n SSOTypes[\"CONSUMERS\"] = \"consumers\";\r\n SSOTypes[\"ACCOUNT_ID\"] = \"accountIdentifier\";\r\n SSOTypes[\"HOMEACCOUNT_ID\"] = \"homeAccountIdentifier\";\r\n})(SSOTypes || (SSOTypes = {}));\r\n/**\r\n * Disallowed extra query parameters.\r\n */\r\nvar BlacklistedEQParams = [\r\n SSOTypes.SID,\r\n SSOTypes.LOGIN_HINT\r\n];\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nvar CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\"\r\n};\r\n/**\r\n * allowed values for response_mode\r\n */\r\nvar ResponseMode;\r\n(function (ResponseMode) {\r\n ResponseMode[\"QUERY\"] = \"query\";\r\n ResponseMode[\"FRAGMENT\"] = \"fragment\";\r\n ResponseMode[\"FORM_POST\"] = \"form_post\";\r\n})(ResponseMode || (ResponseMode = {}));\r\n/**\r\n * allowed grant_type\r\n */\r\nvar GrantType;\r\n(function (GrantType) {\r\n GrantType[\"IMPLICIT_GRANT\"] = \"implicit\";\r\n GrantType[\"AUTHORIZATION_CODE_GRANT\"] = \"authorization_code\";\r\n GrantType[\"CLIENT_CREDENTIALS_GRANT\"] = \"client_credentials\";\r\n GrantType[\"RESOURCE_OWNER_PASSWORD_GRANT\"] = \"password\";\r\n GrantType[\"REFRESH_TOKEN_GRANT\"] = \"refresh_token\";\r\n GrantType[\"DEVICE_CODE_GRANT\"] = \"device_code\";\r\n GrantType[\"JWT_BEARER\"] = \"urn:ietf:params:oauth:grant-type:jwt-bearer\";\r\n})(GrantType || (GrantType = {}));\r\n/**\r\n * Account types in Cache\r\n */\r\nvar CacheAccountType;\r\n(function (CacheAccountType) {\r\n CacheAccountType[\"MSSTS_ACCOUNT_TYPE\"] = \"MSSTS\";\r\n CacheAccountType[\"ADFS_ACCOUNT_TYPE\"] = \"ADFS\";\r\n CacheAccountType[\"MSAV1_ACCOUNT_TYPE\"] = \"MSA\";\r\n CacheAccountType[\"GENERIC_ACCOUNT_TYPE\"] = \"Generic\"; // NTLM, Kerberos, FBA, Basic etc\r\n})(CacheAccountType || (CacheAccountType = {}));\r\n/**\r\n * Separators used in cache\r\n */\r\nvar Separators;\r\n(function (Separators) {\r\n Separators[\"CACHE_KEY_SEPARATOR\"] = \"-\";\r\n Separators[\"CLIENT_INFO_SEPARATOR\"] = \".\";\r\n})(Separators || (Separators = {}));\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nvar CredentialType;\r\n(function (CredentialType) {\r\n CredentialType[\"ID_TOKEN\"] = \"IdToken\";\r\n CredentialType[\"ACCESS_TOKEN\"] = \"AccessToken\";\r\n CredentialType[\"REFRESH_TOKEN\"] = \"RefreshToken\";\r\n})(CredentialType || (CredentialType = {}));\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nvar CacheSchemaType;\r\n(function (CacheSchemaType) {\r\n CacheSchemaType[\"ACCOUNT\"] = \"Account\";\r\n CacheSchemaType[\"CREDENTIAL\"] = \"Credential\";\r\n CacheSchemaType[\"ID_TOKEN\"] = \"IdToken\";\r\n CacheSchemaType[\"ACCESS_TOKEN\"] = \"AccessToken\";\r\n CacheSchemaType[\"REFRESH_TOKEN\"] = \"RefreshToken\";\r\n CacheSchemaType[\"APP_METADATA\"] = \"AppMetadata\";\r\n CacheSchemaType[\"TEMPORARY\"] = \"TempCache\";\r\n CacheSchemaType[\"TELEMETRY\"] = \"Telemetry\";\r\n CacheSchemaType[\"UNDEFINED\"] = \"Undefined\";\r\n CacheSchemaType[\"THROTTLING\"] = \"Throttling\";\r\n})(CacheSchemaType || (CacheSchemaType = {}));\r\n/**\r\n * Combine all cache types\r\n */\r\nvar CacheType;\r\n(function (CacheType) {\r\n CacheType[CacheType[\"ADFS\"] = 1001] = \"ADFS\";\r\n CacheType[CacheType[\"MSA\"] = 1002] = \"MSA\";\r\n CacheType[CacheType[\"MSSTS\"] = 1003] = \"MSSTS\";\r\n CacheType[CacheType[\"GENERIC\"] = 1004] = \"GENERIC\";\r\n CacheType[CacheType[\"ACCESS_TOKEN\"] = 2001] = \"ACCESS_TOKEN\";\r\n CacheType[CacheType[\"REFRESH_TOKEN\"] = 2002] = \"REFRESH_TOKEN\";\r\n CacheType[CacheType[\"ID_TOKEN\"] = 2003] = \"ID_TOKEN\";\r\n CacheType[CacheType[\"APP_METADATA\"] = 3001] = \"APP_METADATA\";\r\n CacheType[CacheType[\"UNDEFINED\"] = 9999] = \"UNDEFINED\";\r\n})(CacheType || (CacheType = {}));\r\n/**\r\n * More Cache related constants\r\n */\r\nvar APP_METADATA = \"appmetadata\";\r\nvar ClientInfo = \"client_info\";\r\nvar THE_FAMILY_ID = \"1\";\r\nvar AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24 // 24 Hours\r\n};\r\nvar AuthorityMetadataSource;\r\n(function (AuthorityMetadataSource) {\r\n AuthorityMetadataSource[\"CONFIG\"] = \"config\";\r\n AuthorityMetadataSource[\"CACHE\"] = \"cache\";\r\n AuthorityMetadataSource[\"NETWORK\"] = \"network\";\r\n})(AuthorityMetadataSource || (AuthorityMetadataSource = {}));\r\nvar SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 2,\r\n MAX_HEADER_BYTES: 4000,\r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\"\r\n};\r\n/**\r\n * Type of the authentication request\r\n */\r\nvar AuthenticationScheme;\r\n(function (AuthenticationScheme) {\r\n AuthenticationScheme[\"POP\"] = \"pop\";\r\n AuthenticationScheme[\"BEARER\"] = \"Bearer\";\r\n})(AuthenticationScheme || (AuthenticationScheme = {}));\r\n/**\r\n * Constants related to throttling\r\n */\r\nvar ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\"\r\n};\r\nvar Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n/**\r\n * Password grant parameters\r\n */\r\nvar PasswordGrantConstants;\r\n(function (PasswordGrantConstants) {\r\n PasswordGrantConstants[\"username\"] = \"username\";\r\n PasswordGrantConstants[\"password\"] = \"password\";\r\n})(PasswordGrantConstants || (PasswordGrantConstants = {}));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar AuthErrorMessage = {\r\n unexpectedError: {\r\n code: \"unexpected_error\",\r\n desc: \"Unexpected error in authentication.\"\r\n }\r\n};\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nvar AuthError = /** @class */ (function (_super) {\r\n __extends(AuthError, _super);\r\n function AuthError(errorCode, errorMessage, suberror) {\r\n var _this = this;\r\n var errorString = errorMessage ? errorCode + \": \" + errorMessage : errorCode;\r\n _this = _super.call(this, errorString) || this;\r\n Object.setPrototypeOf(_this, AuthError.prototype);\r\n _this.errorCode = errorCode || Constants.EMPTY_STRING;\r\n _this.errorMessage = errorMessage || \"\";\r\n _this.subError = suberror || \"\";\r\n _this.name = \"AuthError\";\r\n return _this;\r\n }\r\n /**\r\n * Creates an error that is thrown when something unexpected happens in the library.\r\n * @param errDesc\r\n */\r\n AuthError.createUnexpectedError = function (errDesc) {\r\n return new AuthError(AuthErrorMessage.unexpectedError.code, AuthErrorMessage.unexpectedError.desc + \": \" + errDesc);\r\n };\r\n return AuthError;\r\n}(Error));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar DEFAULT_CRYPTO_IMPLEMENTATION = {\r\n createNewGuid: function () {\r\n var notImplErr = \"Crypto interface - createNewGuid() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Decode: function () {\r\n var notImplErr = \"Crypto interface - base64Decode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Encode: function () {\r\n var notImplErr = \"Crypto interface - base64Encode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n generatePkceCodes: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - generatePkceCodes() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n getPublicKeyThumbprint: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - getPublicKeyThumbprint() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n signJwt: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - signJwt() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n }\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: \"client_info_decoding_error\",\r\n desc: \"The client info could not be parsed/decoded correctly. Please review the trace to determine the root cause.\"\r\n },\r\n clientInfoEmptyError: {\r\n code: \"client_info_empty_error\",\r\n desc: \"The client info was empty. Please review the trace to determine the root cause.\"\r\n },\r\n tokenParsingError: {\r\n code: \"token_parsing_error\",\r\n desc: \"Token cannot be parsed. Please review stack trace to determine root cause.\"\r\n },\r\n nullOrEmptyToken: {\r\n code: \"null_or_empty_token\",\r\n desc: \"The token is null or empty. Please review the trace to determine the root cause.\"\r\n },\r\n endpointResolutionError: {\r\n code: \"endpoints_resolution_error\",\r\n desc: \"Error: could not resolve endpoints. Please check network and try again.\"\r\n },\r\n networkError: {\r\n code: \"network_error\",\r\n desc: \"Network request failed. Please check network trace to determine root cause.\"\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: \"openid_config_error\",\r\n desc: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\"\r\n },\r\n hashNotDeserialized: {\r\n code: \"hash_not_deserialized\",\r\n desc: \"The hash parameters could not be deserialized. Please review the trace to determine the root cause.\"\r\n },\r\n blankGuidGenerated: {\r\n code: \"blank_guid_generated\",\r\n desc: \"The guid generated was blank. Please review the trace to determine the root cause.\"\r\n },\r\n invalidStateError: {\r\n code: \"invalid_state\",\r\n desc: \"State was not the expected format. Please check the logs to determine whether the request was sent using ProtocolUtils.setRequestState().\"\r\n },\r\n stateMismatchError: {\r\n code: \"state_mismatch\",\r\n desc: \"State mismatch error. Please check your network. Continued requests may cause cache overflow.\"\r\n },\r\n stateNotFoundError: {\r\n code: \"state_not_found\",\r\n desc: \"State not found\"\r\n },\r\n nonceMismatchError: {\r\n code: \"nonce_mismatch\",\r\n desc: \"Nonce mismatch error. This may be caused by a race condition in concurrent requests.\"\r\n },\r\n nonceNotFoundError: {\r\n code: \"nonce_not_found\",\r\n desc: \"nonce not found\"\r\n },\r\n noTokensFoundError: {\r\n code: \"no_tokens_found\",\r\n desc: \"No tokens were found for the given scopes, and no authorization code was passed to acquireToken. You must retrieve an authorization code before making a call to acquireToken().\"\r\n },\r\n multipleMatchingTokens: {\r\n code: \"multiple_matching_tokens\",\r\n desc: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\"\r\n },\r\n multipleMatchingAccounts: {\r\n code: \"multiple_matching_accounts\",\r\n desc: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\"\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: \"multiple_matching_appMetadata\",\r\n desc: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\"\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: \"request_cannot_be_made\",\r\n desc: \"Token request cannot be made without authorization code or refresh token.\"\r\n },\r\n appendEmptyScopeError: {\r\n code: \"cannot_append_empty_scope\",\r\n desc: \"Cannot append null or empty scope to ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n removeEmptyScopeError: {\r\n code: \"cannot_remove_empty_scope\",\r\n desc: \"Cannot remove null or empty scope from ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n appendScopeSetError: {\r\n code: \"cannot_append_scopeset\",\r\n desc: \"Cannot append ScopeSet due to error.\"\r\n },\r\n emptyInputScopeSetError: {\r\n code: \"empty_input_scopeset\",\r\n desc: \"Empty input ScopeSet cannot be processed.\"\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: \"device_code_polling_cancelled\",\r\n desc: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\"\r\n },\r\n DeviceCodeExpired: {\r\n code: \"device_code_expired\",\r\n desc: \"Device code is expired.\"\r\n },\r\n NoAccountInSilentRequest: {\r\n code: \"no_account_in_silent_request\",\r\n desc: \"Please pass an account object, silent flow is not supported without account information\"\r\n },\r\n invalidCacheRecord: {\r\n code: \"invalid_cache_record\",\r\n desc: \"Cache record object was null or undefined.\"\r\n },\r\n invalidCacheEnvironment: {\r\n code: \"invalid_cache_environment\",\r\n desc: \"Invalid environment when attempting to create cache entry\"\r\n },\r\n noAccountFound: {\r\n code: \"no_account_found\",\r\n desc: \"No account found in cache for given key.\"\r\n },\r\n CachePluginError: {\r\n code: \"no cache plugin set on CacheManager\",\r\n desc: \"ICachePlugin needs to be set before using readFromStorage or writeFromStorage\"\r\n },\r\n noCryptoObj: {\r\n code: \"no_crypto_object\",\r\n desc: \"No crypto object detected. This is required for the following operation: \"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n unexpectedAccountType: {\r\n code: \"unexpected_account_type\",\r\n desc: \"Unexpected account type.\"\r\n },\r\n unexpectedCredentialType: {\r\n code: \"unexpected_credential_type\",\r\n desc: \"Unexpected credential type.\"\r\n },\r\n invalidAssertion: {\r\n code: \"invalid_assertion\",\r\n desc: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\"\r\n },\r\n invalidClientCredential: {\r\n code: \"invalid_client_credential\",\r\n desc: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\"\r\n },\r\n tokenRefreshRequired: {\r\n code: \"token_refresh_required\",\r\n desc: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\"\r\n },\r\n userTimeoutReached: {\r\n code: \"user_timeout_reached\",\r\n desc: \"User defined timeout for device code polling reached\",\r\n },\r\n tokenClaimsRequired: {\r\n code: \"token_claims_cnf_required_for_signedjwt\",\r\n desc: \"Cannot generate a POP jwt if the token_claims are not populated\"\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: \"authorization_code_missing_from_server_response\",\r\n desc: \"Srver response does not contain an authorization code to proceed\"\r\n }\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nvar ClientAuthError = /** @class */ (function (_super) {\r\n __extends(ClientAuthError, _super);\r\n function ClientAuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"ClientAuthError\";\r\n Object.setPrototypeOf(_this, ClientAuthError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when client info object doesn't decode correctly.\r\n * @param caughtError\r\n */\r\n ClientAuthError.createClientInfoDecodingError = function (caughtError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoDecodingError.code, ClientAuthErrorMessage.clientInfoDecodingError.desc + \" Failed with error: \" + caughtError);\r\n };\r\n /**\r\n * Creates an error thrown if the client info is empty.\r\n * @param rawClientInfo\r\n */\r\n ClientAuthError.createClientInfoEmptyError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoEmptyError.code, \"\" + ClientAuthErrorMessage.clientInfoEmptyError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the id token extraction errors out.\r\n * @param err\r\n */\r\n ClientAuthError.createTokenParsingError = function (caughtExtractionError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenParsingError.code, ClientAuthErrorMessage.tokenParsingError.desc + \" Failed with error: \" + caughtExtractionError);\r\n };\r\n /**\r\n * Creates an error thrown when the id token string is null or empty.\r\n * @param invalidRawTokenString\r\n */\r\n ClientAuthError.createTokenNullOrEmptyError = function (invalidRawTokenString) {\r\n return new ClientAuthError(ClientAuthErrorMessage.nullOrEmptyToken.code, ClientAuthErrorMessage.nullOrEmptyToken.desc + \" Raw Token Value: \" + invalidRawTokenString);\r\n };\r\n /**\r\n * Creates an error thrown when the endpoint discovery doesn't complete correctly.\r\n */\r\n ClientAuthError.createEndpointDiscoveryIncompleteError = function (errDetail) {\r\n return new ClientAuthError(ClientAuthErrorMessage.endpointResolutionError.code, ClientAuthErrorMessage.endpointResolutionError.desc + \" Detail: \" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when the fetch client throws\r\n */\r\n ClientAuthError.createNetworkError = function (endpoint, errDetail) {\r\n return new ClientAuthError(ClientAuthErrorMessage.networkError.code, ClientAuthErrorMessage.networkError.desc + \" | Fetch client threw: \" + errDetail + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Creates an error thrown when the openid-configuration endpoint cannot be reached or does not contain the required data\r\n */\r\n ClientAuthError.createUnableToGetOpenidConfigError = function (errDetail) {\r\n return new ClientAuthError(ClientAuthErrorMessage.unableToGetOpenidConfigError.code, ClientAuthErrorMessage.unableToGetOpenidConfigError.desc + \" Attempted to retrieve endpoints from: \" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when the hash cannot be deserialized.\r\n * @param hashParamObj\r\n */\r\n ClientAuthError.createHashNotDeserializedError = function (hashParamObj) {\r\n return new ClientAuthError(ClientAuthErrorMessage.hashNotDeserialized.code, ClientAuthErrorMessage.hashNotDeserialized.desc + \" Given Object: \" + hashParamObj);\r\n };\r\n /**\r\n * Creates an error thrown when the state cannot be parsed.\r\n * @param invalidState\r\n */\r\n ClientAuthError.createInvalidStateError = function (invalidState, errorString) {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidStateError.code, ClientAuthErrorMessage.invalidStateError.desc + \" Invalid State: \" + invalidState + \", Root Err: \" + errorString);\r\n };\r\n /**\r\n * Creates an error thrown when two states do not match.\r\n */\r\n ClientAuthError.createStateMismatchError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateMismatchError.code, ClientAuthErrorMessage.stateMismatchError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the state is not present\r\n * @param missingState\r\n */\r\n ClientAuthError.createStateNotFoundError = function (missingState) {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateNotFoundError.code, ClientAuthErrorMessage.stateNotFoundError.desc + \": \" + missingState);\r\n };\r\n /**\r\n * Creates an error thrown when the nonce does not match.\r\n */\r\n ClientAuthError.createNonceMismatchError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceMismatchError.code, ClientAuthErrorMessage.nonceMismatchError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the mnonce is not present\r\n * @param missingNonce\r\n */\r\n ClientAuthError.createNonceNotFoundError = function (missingNonce) {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceNotFoundError.code, ClientAuthErrorMessage.nonceNotFoundError.desc + \": \" + missingNonce);\r\n };\r\n /**\r\n * Creates an error thrown when the authorization code required for a token request is null or empty.\r\n */\r\n ClientAuthError.createNoTokensFoundError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.noTokensFoundError.code, ClientAuthErrorMessage.noTokensFoundError.desc);\r\n };\r\n /**\r\n * Throws error when multiple tokens are in cache.\r\n */\r\n ClientAuthError.createMultipleMatchingTokensInCacheError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingTokens.code, ClientAuthErrorMessage.multipleMatchingTokens.desc + \".\");\r\n };\r\n /**\r\n * Throws error when multiple accounts are in cache for the given params\r\n */\r\n ClientAuthError.createMultipleMatchingAccountsInCacheError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAccounts.code, ClientAuthErrorMessage.multipleMatchingAccounts.desc);\r\n };\r\n /**\r\n * Throws error when multiple appMetada are in cache for the given clientId.\r\n */\r\n ClientAuthError.createMultipleMatchingAppMetadataInCacheError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAppMetadata.code, ClientAuthErrorMessage.multipleMatchingAppMetadata.desc);\r\n };\r\n /**\r\n * Throws error when no auth code or refresh token is given to ServerTokenRequestParameters.\r\n */\r\n ClientAuthError.createTokenRequestCannotBeMadeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRequestCannotBeMade.code, ClientAuthErrorMessage.tokenRequestCannotBeMade.desc);\r\n };\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n ClientAuthError.createAppendEmptyScopeToSetError = function (givenScope) {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendEmptyScopeError.code, ClientAuthErrorMessage.appendEmptyScopeError.desc + \" Given Scope: \" + givenScope);\r\n };\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n ClientAuthError.createRemoveEmptyScopeFromSetError = function (givenScope) {\r\n return new ClientAuthError(ClientAuthErrorMessage.removeEmptyScopeError.code, ClientAuthErrorMessage.removeEmptyScopeError.desc + \" Given Scope: \" + givenScope);\r\n };\r\n /**\r\n * Throws error when attempting to append null or empty ScopeSet.\r\n * @param appendError\r\n */\r\n ClientAuthError.createAppendScopeSetError = function (appendError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendScopeSetError.code, ClientAuthErrorMessage.appendScopeSetError.desc + \" Detail Error: \" + appendError);\r\n };\r\n /**\r\n * Throws error if ScopeSet is null or undefined.\r\n * @param givenScopeSet\r\n */\r\n ClientAuthError.createEmptyInputScopeSetError = function (givenScopeSet) {\r\n return new ClientAuthError(ClientAuthErrorMessage.emptyInputScopeSetError.code, ClientAuthErrorMessage.emptyInputScopeSetError.desc + \" Given ScopeSet: \" + givenScopeSet);\r\n };\r\n /**\r\n * Throws error if user sets CancellationToken.cancel = true during polling of token endpoint during device code flow\r\n */\r\n ClientAuthError.createDeviceCodeCancelledError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodePollingCancelled.code, \"\" + ClientAuthErrorMessage.DeviceCodePollingCancelled.desc);\r\n };\r\n /**\r\n * Throws error if device code is expired\r\n */\r\n ClientAuthError.createDeviceCodeExpiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeExpired.code, \"\" + ClientAuthErrorMessage.DeviceCodeExpired.desc);\r\n };\r\n /**\r\n * Throws error when silent requests are made without an account object\r\n */\r\n ClientAuthError.createNoAccountInSilentRequestError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.NoAccountInSilentRequest.code, \"\" + ClientAuthErrorMessage.NoAccountInSilentRequest.desc);\r\n };\r\n /**\r\n * Throws error when cache record is null or undefined.\r\n */\r\n ClientAuthError.createNullOrUndefinedCacheRecord = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheRecord.code, ClientAuthErrorMessage.invalidCacheRecord.desc);\r\n };\r\n /**\r\n * Throws error when provided environment is not part of the CloudDiscoveryMetadata object\r\n */\r\n ClientAuthError.createInvalidCacheEnvironmentError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheEnvironment.code, ClientAuthErrorMessage.invalidCacheEnvironment.desc);\r\n };\r\n /**\r\n * Throws error when account is not found in cache.\r\n */\r\n ClientAuthError.createNoAccountFoundError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAccountFound.code, ClientAuthErrorMessage.noAccountFound.desc);\r\n };\r\n /**\r\n * Throws error if ICachePlugin not set on CacheManager.\r\n */\r\n ClientAuthError.createCachePluginError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.CachePluginError.code, \"\" + ClientAuthErrorMessage.CachePluginError.desc);\r\n };\r\n /**\r\n * Throws error if crypto object not found.\r\n * @param operationName\r\n */\r\n ClientAuthError.createNoCryptoObjectError = function (operationName) {\r\n return new ClientAuthError(ClientAuthErrorMessage.noCryptoObj.code, \"\" + ClientAuthErrorMessage.noCryptoObj.desc + operationName);\r\n };\r\n /**\r\n * Throws error if cache type is invalid.\r\n */\r\n ClientAuthError.createInvalidCacheTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheType.code, \"\" + ClientAuthErrorMessage.invalidCacheType.desc);\r\n };\r\n /**\r\n * Throws error if unexpected account type.\r\n */\r\n ClientAuthError.createUnexpectedAccountTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedAccountType.code, \"\" + ClientAuthErrorMessage.unexpectedAccountType.desc);\r\n };\r\n /**\r\n * Throws error if unexpected credential type.\r\n */\r\n ClientAuthError.createUnexpectedCredentialTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedCredentialType.code, \"\" + ClientAuthErrorMessage.unexpectedCredentialType.desc);\r\n };\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n ClientAuthError.createInvalidAssertionError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidAssertion.code, \"\" + ClientAuthErrorMessage.invalidAssertion.desc);\r\n };\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n ClientAuthError.createInvalidCredentialError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidClientCredential.code, \"\" + ClientAuthErrorMessage.invalidClientCredential.desc);\r\n };\r\n /**\r\n * Throws error if token cannot be retrieved from cache due to refresh being required.\r\n */\r\n ClientAuthError.createRefreshRequiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRefreshRequired.code, ClientAuthErrorMessage.tokenRefreshRequired.desc);\r\n };\r\n /**\r\n * Throws error if the user defined timeout is reached.\r\n */\r\n ClientAuthError.createUserTimeoutReachedError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.userTimeoutReached.code, ClientAuthErrorMessage.userTimeoutReached.desc);\r\n };\r\n /*\r\n * Throws error if token claims are not populated for a signed jwt generation\r\n */\r\n ClientAuthError.createTokenClaimsRequiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenClaimsRequired.code, ClientAuthErrorMessage.tokenClaimsRequired.desc);\r\n };\r\n /**\r\n * Throws error when the authorization code is missing from the server response\r\n */\r\n ClientAuthError.createNoAuthCodeInServerResponseError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAuthorizationCodeFromServer.code, ClientAuthErrorMessage.noAuthorizationCodeFromServer.desc);\r\n };\r\n return ClientAuthError;\r\n}(AuthError));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nvar StringUtils = /** @class */ (function () {\r\n function StringUtils() {\r\n }\r\n /**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\n StringUtils.decodeAuthToken = function (authToken) {\r\n if (StringUtils.isEmpty(authToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(authToken);\r\n }\r\n var tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n var matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw ClientAuthError.createTokenParsingError(\"Given token is malformed: \" + JSON.stringify(authToken));\r\n }\r\n var crackedToken = {\r\n header: matches[1],\r\n JWSPayload: matches[2],\r\n JWSSig: matches[3]\r\n };\r\n return crackedToken;\r\n };\r\n /**\r\n * Check if a string is empty.\r\n *\r\n * @param str\r\n */\r\n StringUtils.isEmpty = function (str) {\r\n return (typeof str === \"undefined\" || !str || 0 === str.length);\r\n };\r\n StringUtils.startsWith = function (str, search) {\r\n return str.indexOf(search) === 0;\r\n };\r\n StringUtils.endsWith = function (str, search) {\r\n return (str.length >= search.length) && (str.lastIndexOf(search) === (str.length - search.length));\r\n };\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n StringUtils.queryStringToObject = function (query) {\r\n var match; // Regex for replacing addition symbol with a space\r\n var pl = /\\+/g;\r\n var search = /([^&=]+)=([^&]*)/g;\r\n var decode = function (s) { return decodeURIComponent(decodeURIComponent(s.replace(pl, \" \"))); };\r\n var obj = {};\r\n match = search.exec(query);\r\n while (match) {\r\n obj[decode(match[1])] = decode(match[2]);\r\n match = search.exec(query);\r\n }\r\n return obj;\r\n };\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n StringUtils.trimArrayEntries = function (arr) {\r\n return arr.map(function (entry) { return entry.trim(); });\r\n };\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n StringUtils.removeEmptyStringsFromArray = function (arr) {\r\n return arr.filter(function (entry) {\r\n return !StringUtils.isEmpty(entry);\r\n });\r\n };\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n StringUtils.jsonParseHelper = function (str) {\r\n try {\r\n return JSON.parse(str);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n };\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards\r\n * @param input String to match against\r\n */\r\n StringUtils.matchPattern = function (pattern, input) {\r\n // https://stackoverflow.com/a/3117248/4888559\r\n var regex = new RegExp(pattern.replace(/\\*/g, \"[^ ]*\"));\r\n return regex.test(input);\r\n };\r\n return StringUtils;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Log message level.\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\r\n LogLevel[LogLevel[\"Warning\"] = 1] = \"Warning\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\r\n})(LogLevel || (LogLevel = {}));\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nvar Logger = /** @class */ (function () {\r\n function Logger(loggerOptions, packageName, packageVersion) {\r\n // Current log level, defaults to info.\r\n this.level = LogLevel.Info;\r\n var defaultLoggerCallback = function () { };\r\n this.localCallback = loggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = loggerOptions.piiLoggingEnabled || false;\r\n this.level = loggerOptions.logLevel || LogLevel.Info;\r\n this.packageName = packageName || Constants.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\r\n }\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n Logger.prototype.clone = function (packageName, packageVersion) {\r\n return new Logger({ loggerCallback: this.localCallback, piiLoggingEnabled: this.piiLoggingEnabled, logLevel: this.level }, packageName, packageVersion);\r\n };\r\n /**\r\n * Log message with required options.\r\n */\r\n Logger.prototype.logMessage = function (logMessage, options) {\r\n if ((options.logLevel > this.level) || (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n var timestamp = new Date().toUTCString();\r\n var logHeader = StringUtils.isEmpty(this.correlationId) ? \"[\" + timestamp + \"] : \" : \"[\" + timestamp + \"] : [\" + this.correlationId + \"]\";\r\n var log = logHeader + \" : \" + this.packageName + \"@\" + this.packageVersion + \" : \" + LogLevel[options.logLevel] + \" - \" + logMessage;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": \"\"}${options.context ? `:${options.context}` : \"\"}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n };\r\n /**\r\n * Execute callback with message.\r\n */\r\n Logger.prototype.executeCallback = function (level, message, containsPii) {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n };\r\n /**\r\n * Logs error messages.\r\n */\r\n Logger.prototype.error = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || \"\"\r\n });\r\n };\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n Logger.prototype.errorPii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || \"\"\r\n });\r\n };\r\n /**\r\n * Logs warning messages.\r\n */\r\n Logger.prototype.warning = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || \"\"\r\n });\r\n };\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n Logger.prototype.warningPii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || \"\"\r\n });\r\n };\r\n /**\r\n * Logs info messages.\r\n */\r\n Logger.prototype.info = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || \"\"\r\n });\r\n };\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n Logger.prototype.infoPii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || \"\"\r\n });\r\n };\r\n /**\r\n * Logs verbose messages.\r\n */\r\n Logger.prototype.verbose = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || \"\"\r\n });\r\n };\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n Logger.prototype.verbosePii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || \"\"\r\n });\r\n };\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n Logger.prototype.isPiiLoggingEnabled = function () {\r\n return this.piiLoggingEnabled || false;\r\n };\r\n return Logger;\r\n}());\n\n/* eslint-disable header/header */\r\nvar name = \"@azure/msal-common\";\r\nvar version = \"4.1.0\";\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base type for credentials to be stored in the cache: eg: ACCESS_TOKEN, ID_TOKEN etc\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: -----\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * oboAssertion: access token passed in as part of OBO request\r\n * }\r\n */\r\nvar CredentialEntity = /** @class */ (function () {\r\n function CredentialEntity() {\r\n }\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n CredentialEntity.prototype.generateAccountId = function () {\r\n return CredentialEntity.generateAccountIdForCacheKey(this.homeAccountId, this.environment);\r\n };\r\n /**\r\n * Generate Credential Id key component as per the schema: --\r\n */\r\n CredentialEntity.prototype.generateCredentialId = function () {\r\n return CredentialEntity.generateCredentialIdForCacheKey(this.credentialType, this.clientId, this.realm, this.familyId);\r\n };\r\n /**\r\n * Generate target key component as per schema: \r\n */\r\n CredentialEntity.prototype.generateTarget = function () {\r\n return CredentialEntity.generateTargetForCacheKey(this.target);\r\n };\r\n /**\r\n * generates credential key\r\n */\r\n CredentialEntity.prototype.generateCredentialKey = function () {\r\n return CredentialEntity.generateCredentialCacheKey(this.homeAccountId, this.environment, this.credentialType, this.clientId, this.realm, this.target, this.familyId);\r\n };\r\n /**\r\n * returns the type of the cache (in this case credential)\r\n */\r\n CredentialEntity.prototype.generateType = function () {\r\n switch (this.credentialType) {\r\n case CredentialType.ID_TOKEN:\r\n return CacheType.ID_TOKEN;\r\n case CredentialType.ACCESS_TOKEN:\r\n return CacheType.ACCESS_TOKEN;\r\n case CredentialType.REFRESH_TOKEN:\r\n return CacheType.REFRESH_TOKEN;\r\n default: {\r\n throw ClientAuthError.createUnexpectedCredentialTypeError();\r\n }\r\n }\r\n };\r\n /**\r\n * helper function to return `CredentialType`\r\n * @param key\r\n */\r\n CredentialEntity.getCredentialType = function (key) {\r\n if (key.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) !== -1) {\r\n return CredentialType.ACCESS_TOKEN;\r\n }\r\n else if (key.indexOf(CredentialType.ID_TOKEN.toLowerCase()) !== -1) {\r\n return CredentialType.ID_TOKEN;\r\n }\r\n else if (key.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) !== -1) {\r\n return CredentialType.REFRESH_TOKEN;\r\n }\r\n return Constants.NOT_DEFINED;\r\n };\r\n /**\r\n * generates credential key\r\n */\r\n CredentialEntity.generateCredentialCacheKey = function (homeAccountId, environment, credentialType, clientId, realm, target, familyId) {\r\n var credentialKey = [\r\n this.generateAccountIdForCacheKey(homeAccountId, environment),\r\n this.generateCredentialIdForCacheKey(credentialType, clientId, realm, familyId),\r\n this.generateTargetForCacheKey(target),\r\n ];\r\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * generates Account Id for keys\r\n * @param homeAccountId\r\n * @param environment\r\n */\r\n CredentialEntity.generateAccountIdForCacheKey = function (homeAccountId, environment) {\r\n var accountId = [homeAccountId, environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Generates Credential Id for keys\r\n * @param credentialType\r\n * @param realm\r\n * @param clientId\r\n * @param familyId\r\n */\r\n CredentialEntity.generateCredentialIdForCacheKey = function (credentialType, clientId, realm, familyId) {\r\n var clientOrFamilyId = credentialType === CredentialType.REFRESH_TOKEN\r\n ? familyId || clientId\r\n : clientId;\r\n var credentialId = [\r\n credentialType,\r\n clientOrFamilyId,\r\n realm || \"\",\r\n ];\r\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Generate target key component as per schema: \r\n */\r\n CredentialEntity.generateTargetForCacheKey = function (scopes) {\r\n return (scopes || \"\").toLowerCase();\r\n };\r\n return CredentialEntity;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n claimsRequestParsingError: {\r\n code: \"claims_request_parsing_error\",\r\n desc: \"Could not parse the given claims request object.\"\r\n },\r\n authorityUriInsecure: {\r\n code: \"authority_uri_insecure\",\r\n desc: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\"\r\n },\r\n urlParseError: {\r\n code: \"url_parse_error\",\r\n desc: \"URL could not be parsed into appropriate segments.\"\r\n },\r\n urlEmptyError: {\r\n code: \"empty_url_error\",\r\n desc: \"URL was empty or null.\"\r\n },\r\n emptyScopesError: {\r\n code: \"empty_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\"\r\n },\r\n nonArrayScopesError: {\r\n code: \"nonarray_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as non-array.\"\r\n },\r\n clientIdSingleScopeError: {\r\n code: \"clientid_input_scopes_error\",\r\n desc: \"Client ID can only be provided as a single scope.\"\r\n },\r\n invalidPrompt: {\r\n code: \"invalid_prompt_value\",\r\n desc: \"Supported prompt values are 'login', 'select_account', 'consent' and 'none'. Please see here for valid configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\",\r\n },\r\n invalidClaimsRequest: {\r\n code: \"invalid_claims\",\r\n desc: \"Given claims parameter must be a stringified JSON object.\"\r\n },\r\n tokenRequestEmptyError: {\r\n code: \"token_request_empty\",\r\n desc: \"Token request was empty and not found in cache.\"\r\n },\r\n logoutRequestEmptyError: {\r\n code: \"logout_request_empty\",\r\n desc: \"The logout request was null or undefined.\"\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: \"invalid_code_challenge_method\",\r\n desc: \"code_challenge_method passed is invalid. Valid values are \\\"plain\\\" and \\\"S256\\\".\"\r\n },\r\n invalidCodeChallengeParams: {\r\n code: \"pkce_params_missing\",\r\n desc: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\"\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: \"invalid_cloud_discovery_metadata\",\r\n desc: \"Invalid cloudDiscoveryMetadata provided. Must be a JSON object containing tenant_discovery_endpoint and metadata fields\"\r\n },\r\n invalidAuthorityMetadata: {\r\n code: \"invalid_authority_metadata\",\r\n desc: \"Invalid authorityMetadata provided. Must by a JSON object containing authorization_endpoint, token_endpoint, end_session_endpoint, issuer fields.\"\r\n },\r\n untrustedAuthority: {\r\n code: \"untrusted_authority\",\r\n desc: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\"\r\n },\r\n resourceRequestParametersRequired: {\r\n code: \"resourceRequest_parameters_required\",\r\n desc: \"resourceRequestMethod and resourceRequestUri are required\"\r\n }\r\n};\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nvar ClientConfigurationError = /** @class */ (function (_super) {\r\n __extends(ClientConfigurationError, _super);\r\n function ClientConfigurationError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(_this, ClientConfigurationError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n ClientConfigurationError.createRedirectUriEmptyError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.redirectUriNotSet.code, ClientConfigurationErrorMessage.redirectUriNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n ClientConfigurationError.createPostLogoutRedirectUriEmptyError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.postLogoutUriNotSet.code, ClientConfigurationErrorMessage.postLogoutUriNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the claims request could not be successfully parsed\r\n */\r\n ClientConfigurationError.createClaimsRequestParsingError = function (claimsRequestParseError) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.claimsRequestParsingError.code, ClientConfigurationErrorMessage.claimsRequestParsingError.desc + \" Given value: \" + claimsRequestParseError);\r\n };\r\n /**\r\n * Creates an error thrown if authority uri is given an insecure protocol.\r\n * @param urlString\r\n */\r\n ClientConfigurationError.createInsecureAuthorityUriError = function (urlString) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.authorityUriInsecure.code, ClientConfigurationErrorMessage.authorityUriInsecure.desc + \" Given URI: \" + urlString);\r\n };\r\n /**\r\n * Creates an error thrown if URL string does not parse into separate segments.\r\n * @param urlString\r\n */\r\n ClientConfigurationError.createUrlParseError = function (urlParseError) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlParseError.code, ClientConfigurationErrorMessage.urlParseError.desc + \" Given Error: \" + urlParseError);\r\n };\r\n /**\r\n * Creates an error thrown if URL string is empty or null.\r\n * @param urlString\r\n */\r\n ClientConfigurationError.createUrlEmptyError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlEmptyError.code, ClientConfigurationErrorMessage.urlEmptyError.desc);\r\n };\r\n /**\r\n * Error thrown when scopes are not an array\r\n * @param inputScopes\r\n */\r\n ClientConfigurationError.createScopesNonArrayError = function (inputScopes) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.nonArrayScopesError.code, ClientConfigurationErrorMessage.nonArrayScopesError.desc + \" Given Scopes: \" + inputScopes);\r\n };\r\n /**\r\n * Error thrown when scopes are empty.\r\n * @param scopesValue\r\n */\r\n ClientConfigurationError.createEmptyScopesArrayError = function (inputScopes) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.emptyScopesError.code, ClientConfigurationErrorMessage.emptyScopesError.desc + \" Given Scopes: \" + inputScopes);\r\n };\r\n /**\r\n * Error thrown when client id scope is not provided as single scope.\r\n * @param inputScopes\r\n */\r\n ClientConfigurationError.createClientIdSingleScopeError = function (inputScopes) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.clientIdSingleScopeError.code, ClientConfigurationErrorMessage.clientIdSingleScopeError.desc + \" Given Scopes: \" + inputScopes);\r\n };\r\n /**\r\n * Error thrown when prompt is not an allowed type.\r\n * @param promptValue\r\n */\r\n ClientConfigurationError.createInvalidPromptError = function (promptValue) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidPrompt.code, ClientConfigurationErrorMessage.invalidPrompt.desc + \" Given value: \" + promptValue);\r\n };\r\n /**\r\n * Creates error thrown when claims parameter is not a stringified JSON object\r\n */\r\n ClientConfigurationError.createInvalidClaimsRequestError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidClaimsRequest.code, ClientConfigurationErrorMessage.invalidClaimsRequest.desc);\r\n };\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n ClientConfigurationError.createEmptyLogoutRequestError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.logoutRequestEmptyError.code, ClientConfigurationErrorMessage.logoutRequestEmptyError.desc);\r\n };\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n ClientConfigurationError.createEmptyTokenRequestError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.tokenRequestEmptyError.code, ClientConfigurationErrorMessage.tokenRequestEmptyError.desc);\r\n };\r\n /**\r\n * Throws error when an invalid code_challenge_method is passed by the user\r\n */\r\n ClientConfigurationError.createInvalidCodeChallengeMethodError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCodeChallengeMethod.code, ClientConfigurationErrorMessage.invalidCodeChallengeMethod.desc);\r\n };\r\n /**\r\n * Throws error when both params: code_challenge and code_challenge_method are not passed together\r\n */\r\n ClientConfigurationError.createInvalidCodeChallengeParamsError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCodeChallengeParams.code, ClientConfigurationErrorMessage.invalidCodeChallengeParams.desc);\r\n };\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n ClientConfigurationError.createInvalidCloudDiscoveryMetadataError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.code, ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.desc);\r\n };\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n ClientConfigurationError.createInvalidAuthorityMetadataError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityMetadata.code, ClientConfigurationErrorMessage.invalidAuthorityMetadata.desc);\r\n };\r\n /**\r\n * Throws error when provided authority is not a member of the trusted host list\r\n */\r\n ClientConfigurationError.createUntrustedAuthorityError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.untrustedAuthority.code, ClientConfigurationErrorMessage.untrustedAuthority.desc);\r\n };\r\n /**\r\n * Throws error when resourceRequestMethod or resourceRequestUri is missing\r\n */\r\n ClientConfigurationError.createResourceRequestParametersRequiredError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.resourceRequestParametersRequired.code, ClientConfigurationErrorMessage.resourceRequestParametersRequired.desc);\r\n };\r\n return ClientConfigurationError;\r\n}(ClientAuthError));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nvar ScopeSet = /** @class */ (function () {\r\n function ScopeSet(inputScopes) {\r\n var _this = this;\r\n // Filter empty string and null/undefined array items\r\n var scopeArr = inputScopes ? StringUtils.trimArrayEntries(__spreadArrays(inputScopes)) : [];\r\n var filteredInput = scopeArr ? StringUtils.removeEmptyStringsFromArray(scopeArr) : [];\r\n // Validate and filter scopes (validate function throws if validation fails)\r\n this.validateInputScopes(filteredInput);\r\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach(function (scope) { return _this.scopes.add(scope); });\r\n }\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n ScopeSet.fromString = function (inputScopeString) {\r\n inputScopeString = inputScopeString || \"\";\r\n var inputScopes = inputScopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n };\r\n /**\r\n * Used to validate the scopes input parameter requested by the developer.\r\n * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\r\n * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\r\n */\r\n ScopeSet.prototype.validateInputScopes = function (inputScopes) {\r\n // Check if scopes are required but not given or is an empty array\r\n if (!inputScopes || inputScopes.length < 1) {\r\n throw ClientConfigurationError.createEmptyScopesArrayError(inputScopes);\r\n }\r\n };\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n ScopeSet.prototype.containsScope = function (scope) {\r\n var lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n var lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return !StringUtils.isEmpty(scope) ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) : false;\r\n };\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n ScopeSet.prototype.containsScopeSet = function (scopeSet) {\r\n var _this = this;\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n return (this.scopes.size >= scopeSet.scopes.size && scopeSet.asArray().every(function (scope) { return _this.containsScope(scope); }));\r\n };\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n ScopeSet.prototype.containsOnlyOIDCScopes = function () {\r\n var _this = this;\r\n var defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach(function (defaultScope) {\r\n if (_this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n return this.scopes.size === defaultScopeCount;\r\n };\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n ScopeSet.prototype.appendScope = function (newScope) {\r\n if (!StringUtils.isEmpty(newScope)) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n };\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n ScopeSet.prototype.appendScopes = function (newScopes) {\r\n var _this = this;\r\n try {\r\n newScopes.forEach(function (newScope) { return _this.appendScope(newScope); });\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createAppendScopeSetError(e);\r\n }\r\n };\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n ScopeSet.prototype.removeScope = function (scope) {\r\n if (StringUtils.isEmpty(scope)) {\r\n throw ClientAuthError.createRemoveEmptyScopeFromSetError(scope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n };\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n ScopeSet.prototype.removeOIDCScopes = function () {\r\n var _this = this;\r\n OIDC_SCOPES.forEach(function (defaultScope) {\r\n _this.scopes.delete(defaultScope);\r\n });\r\n };\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n ScopeSet.prototype.unionScopeSets = function (otherScopes) {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError(otherScopes);\r\n }\r\n var unionScopes = new Set(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach(function (scope) { return unionScopes.add(scope.toLowerCase()); });\r\n this.scopes.forEach(function (scope) { return unionScopes.add(scope.toLowerCase()); });\r\n return unionScopes;\r\n };\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n ScopeSet.prototype.intersectingScopeSets = function (otherScopes) {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError(otherScopes);\r\n }\r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n var unionScopes = this.unionScopeSets(otherScopes);\r\n var sizeOtherScopes = otherScopes.getScopeCount();\r\n var sizeThisScopes = this.getScopeCount();\r\n var sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < (sizeThisScopes + sizeOtherScopes);\r\n };\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n ScopeSet.prototype.getScopeCount = function () {\r\n return this.scopes.size;\r\n };\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n ScopeSet.prototype.asArray = function () {\r\n var array = [];\r\n this.scopes.forEach(function (val) { return array.push(val); });\r\n return array;\r\n };\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n ScopeSet.prototype.printScopes = function () {\r\n if (this.scopes) {\r\n var scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return \"\";\r\n };\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n ScopeSet.prototype.printScopesLowerCase = function () {\r\n return this.printScopes().toLowerCase();\r\n };\r\n return ScopeSet;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Function to build a client info object\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nfunction buildClientInfo(rawClientInfo, crypto) {\r\n if (StringUtils.isEmpty(rawClientInfo)) {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n try {\r\n var decodedClientInfo = crypto.base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo);\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createClientInfoDecodingError(e);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nvar AuthorityType;\r\n(function (AuthorityType) {\r\n AuthorityType[AuthorityType[\"Default\"] = 0] = \"Default\";\r\n AuthorityType[AuthorityType[\"Adfs\"] = 1] = \"Adfs\";\r\n})(AuthorityType || (AuthorityType = {}));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: --\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * clientInfo: Full base64 encoded client info received from ESTS\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * oboAssertion: access token passed in as part of OBO request\r\n * idTokenClaims: Object containing claims parsed from ID token\r\n * }\r\n */\r\nvar AccountEntity = /** @class */ (function () {\r\n function AccountEntity() {\r\n }\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n AccountEntity.prototype.generateAccountId = function () {\r\n var accountId = [this.homeAccountId, this.environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Generate Account Cache Key as per the schema: --\r\n */\r\n AccountEntity.prototype.generateAccountKey = function () {\r\n return AccountEntity.generateAccountCacheKey({\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId\r\n });\r\n };\r\n /**\r\n * returns the type of the cache (in this case account)\r\n */\r\n AccountEntity.prototype.generateType = function () {\r\n switch (this.authorityType) {\r\n case CacheAccountType.ADFS_ACCOUNT_TYPE:\r\n return CacheType.ADFS;\r\n case CacheAccountType.MSAV1_ACCOUNT_TYPE:\r\n return CacheType.MSA;\r\n case CacheAccountType.MSSTS_ACCOUNT_TYPE:\r\n return CacheType.MSSTS;\r\n case CacheAccountType.GENERIC_ACCOUNT_TYPE:\r\n return CacheType.GENERIC;\r\n default: {\r\n throw ClientAuthError.createUnexpectedAccountTypeError();\r\n }\r\n }\r\n };\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n AccountEntity.prototype.getAccountInfo = function () {\r\n return {\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId,\r\n name: this.name,\r\n idTokenClaims: this.idTokenClaims\r\n };\r\n };\r\n /**\r\n * Generates account key from interface\r\n * @param accountInterface\r\n */\r\n AccountEntity.generateAccountCacheKey = function (accountInterface) {\r\n var accountKey = [\r\n accountInterface.homeAccountId,\r\n accountInterface.environment || \"\",\r\n accountInterface.tenantId || \"\",\r\n ];\r\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param clientInfo\r\n * @param authority\r\n * @param idToken\r\n * @param policy\r\n */\r\n AccountEntity.createAccount = function (clientInfo, homeAccountId, authority, idToken, oboAssertion, cloudGraphHostName, msGraphHost) {\r\n var _a, _b, _c, _d, _e, _f;\r\n var account = new AccountEntity();\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n account.clientInfo = clientInfo;\r\n account.homeAccountId = homeAccountId;\r\n var env = authority.getPreferredCache();\r\n if (StringUtils.isEmpty(env)) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm = ((_a = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _a === void 0 ? void 0 : _a.tid) || \"\";\r\n account.oboAssertion = oboAssertion;\r\n if (idToken) {\r\n account.idTokenClaims = idToken.claims;\r\n // How do you account for MSA CID here?\r\n account.localAccountId = ((_b = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _b === void 0 ? void 0 : _b.oid) || ((_c = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _c === void 0 ? void 0 : _c.sub) || \"\";\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. In most cases it will contain a single email.\r\n * This field should not be relied upon if a custom policy is configured to return more than 1 email.\r\n */\r\n account.username = ((_d = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _d === void 0 ? void 0 : _d.preferred_username) || (((_e = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _e === void 0 ? void 0 : _e.emails) ? idToken.claims.emails[0] : \"\");\r\n account.name = (_f = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _f === void 0 ? void 0 : _f.name;\r\n }\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n return account;\r\n };\r\n /**\r\n * Builds non-AAD/ADFS account.\r\n * @param authority\r\n * @param idToken\r\n */\r\n AccountEntity.createGenericAccount = function (authority, homeAccountId, idToken, oboAssertion, cloudGraphHostName, msGraphHost) {\r\n var _a, _b, _c, _d;\r\n var account = new AccountEntity();\r\n account.authorityType = (authority.authorityType === AuthorityType.Adfs) ? CacheAccountType.ADFS_ACCOUNT_TYPE : CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n account.homeAccountId = homeAccountId;\r\n // non AAD scenarios can have empty realm\r\n account.realm = \"\";\r\n account.oboAssertion = oboAssertion;\r\n var env = authority.getPreferredCache();\r\n if (StringUtils.isEmpty(env)) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n if (idToken) {\r\n // How do you account for MSA CID here?\r\n account.localAccountId = ((_a = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _a === void 0 ? void 0 : _a.oid) || ((_b = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _b === void 0 ? void 0 : _b.sub) || \"\";\r\n // upn claim for most ADFS scenarios\r\n account.username = ((_c = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _c === void 0 ? void 0 : _c.upn) || \"\";\r\n account.name = ((_d = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _d === void 0 ? void 0 : _d.name) || \"\";\r\n account.idTokenClaims = idToken === null || idToken === void 0 ? void 0 : idToken.claims;\r\n }\r\n account.environment = env;\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n /*\r\n * add uniqueName to claims\r\n * account.name = idToken.claims.uniqueName;\r\n */\r\n return account;\r\n };\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n AccountEntity.generateHomeAccountId = function (serverClientInfo, authType, logger, cryptoObj, idToken) {\r\n var _a;\r\n var accountId = ((_a = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _a === void 0 ? void 0 : _a.sub) ? idToken.claims.sub : Constants.EMPTY_STRING;\r\n // since ADFS does not have tid and does not set client_info\r\n if (authType === AuthorityType.Adfs) {\r\n return accountId;\r\n }\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n var clientInfo = buildClientInfo(serverClientInfo, cryptoObj);\r\n if (!StringUtils.isEmpty(clientInfo.uid) && !StringUtils.isEmpty(clientInfo.utid)) {\r\n return \"\" + clientInfo.uid + Separators.CLIENT_INFO_SEPARATOR + clientInfo.utid;\r\n }\r\n }\r\n // default to \"sub\" claim\r\n logger.verbose(\"No client info in response\");\r\n return accountId;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AccountEntity.isAccountEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\"));\r\n };\r\n /**\r\n * Helper function to determine whether 2 accounts are equal\r\n * Used to avoid unnecessary state updates\r\n * @param arrayA\r\n * @param arrayB\r\n */\r\n AccountEntity.accountInfoIsEqual = function (accountA, accountB) {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n return (accountA.homeAccountId === accountB.homeAccountId) &&\r\n (accountA.localAccountId === accountB.localAccountId) &&\r\n (accountA.username === accountB.username) &&\r\n (accountA.tenantId === accountB.tenantId) &&\r\n (accountA.environment === accountB.environment);\r\n };\r\n return AccountEntity;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * JWT Token representation class. Parses token string and generates claims object.\r\n */\r\nvar AuthToken = /** @class */ (function () {\r\n function AuthToken(rawToken, crypto) {\r\n if (StringUtils.isEmpty(rawToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(rawToken);\r\n }\r\n this.rawToken = rawToken;\r\n this.claims = AuthToken.extractTokenClaims(rawToken, crypto);\r\n }\r\n /**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\n AuthToken.extractTokenClaims = function (encodedToken, crypto) {\r\n var decodedToken = StringUtils.decodeAuthToken(encodedToken);\r\n // token will be decoded to get the username\r\n try {\r\n var base64TokenPayload = decodedToken.JWSPayload;\r\n // base64Decode() should throw an error if there is an issue\r\n var base64Decoded = crypto.base64Decode(base64TokenPayload);\r\n return JSON.parse(base64Decoded);\r\n }\r\n catch (err) {\r\n throw ClientAuthError.createTokenParsingError(err);\r\n }\r\n };\r\n return AuthToken;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n */\r\nvar CacheManager = /** @class */ (function () {\r\n function CacheManager(clientId, cryptoImpl) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n }\r\n /**\r\n * Returns all accounts in cache\r\n */\r\n CacheManager.prototype.getAllAccounts = function () {\r\n var _this = this;\r\n var currentAccounts = this.getAccountsFilteredBy();\r\n var accountValues = Object.keys(currentAccounts).map(function (accountKey) { return currentAccounts[accountKey]; });\r\n var numAccounts = accountValues.length;\r\n if (numAccounts < 1) {\r\n return [];\r\n }\r\n else {\r\n var allAccounts = accountValues.map(function (value) {\r\n var accountEntity = CacheManager.toObject(new AccountEntity(), value);\r\n var accountInfo = accountEntity.getAccountInfo();\r\n var idToken = _this.readIdTokenFromCache(_this.clientId, accountInfo);\r\n if (idToken && !accountInfo.idTokenClaims) {\r\n accountInfo.idTokenClaims = new AuthToken(idToken.secret, _this.cryptoImpl).claims;\r\n }\r\n return accountInfo;\r\n });\r\n return allAccounts;\r\n }\r\n };\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord\r\n */\r\n CacheManager.prototype.saveCacheRecord = function (cacheRecord) {\r\n if (!cacheRecord) {\r\n throw ClientAuthError.createNullOrUndefinedCacheRecord();\r\n }\r\n if (!!cacheRecord.account) {\r\n this.setAccount(cacheRecord.account);\r\n }\r\n if (!!cacheRecord.idToken) {\r\n this.setIdTokenCredential(cacheRecord.idToken);\r\n }\r\n if (!!cacheRecord.accessToken) {\r\n this.saveAccessToken(cacheRecord.accessToken);\r\n }\r\n if (!!cacheRecord.refreshToken) {\r\n this.setRefreshTokenCredential(cacheRecord.refreshToken);\r\n }\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata);\r\n }\r\n };\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n CacheManager.prototype.saveAccessToken = function (credential) {\r\n var _this = this;\r\n var currentTokenCache = this.getCredentialsFilteredBy({\r\n clientId: credential.clientId,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n });\r\n var currentScopes = ScopeSet.fromString(credential.target);\r\n var currentAccessTokens = Object.keys(currentTokenCache.accessTokens).map(function (key) { return currentTokenCache.accessTokens[key]; });\r\n if (currentAccessTokens) {\r\n currentAccessTokens.forEach(function (tokenEntity) {\r\n var tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n _this.removeCredential(tokenEntity);\r\n }\r\n });\r\n }\r\n this.setAccessTokenCredential(credential);\r\n };\r\n /**\r\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\r\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param homeAccountId\r\n * @param environment\r\n * @param realm\r\n */\r\n CacheManager.prototype.getAccountsFilteredBy = function (accountFilter) {\r\n return this.getAccountsFilteredByInternal(accountFilter ? accountFilter.homeAccountId : \"\", accountFilter ? accountFilter.environment : \"\", accountFilter ? accountFilter.realm : \"\");\r\n };\r\n /**\r\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\r\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param homeAccountId\r\n * @param environment\r\n * @param realm\r\n */\r\n CacheManager.prototype.getAccountsFilteredByInternal = function (homeAccountId, environment, realm) {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n var matchingAccounts = {};\r\n allCacheKeys.forEach(function (cacheKey) {\r\n var entity = _this.getAccount(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!homeAccountId && !_this.matchHomeAccountId(entity, homeAccountId)) {\r\n return;\r\n }\r\n if (!!environment && !_this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n if (!!realm && !_this.matchRealm(entity, realm)) {\r\n return;\r\n }\r\n matchingAccounts[cacheKey] = entity;\r\n });\r\n return matchingAccounts;\r\n };\r\n /**\r\n * retrieve credentails matching all provided filters; if no filter is set, get all credentials\r\n * @param homeAccountId\r\n * @param environment\r\n * @param credentialType\r\n * @param clientId\r\n * @param realm\r\n * @param target\r\n */\r\n CacheManager.prototype.getCredentialsFilteredBy = function (filter) {\r\n return this.getCredentialsFilteredByInternal(filter.homeAccountId, filter.environment, filter.credentialType, filter.clientId, filter.familyId, filter.realm, filter.target, filter.oboAssertion);\r\n };\r\n /**\r\n * Support function to help match credentials\r\n * @param homeAccountId\r\n * @param environment\r\n * @param credentialType\r\n * @param clientId\r\n * @param realm\r\n * @param target\r\n */\r\n CacheManager.prototype.getCredentialsFilteredByInternal = function (homeAccountId, environment, credentialType, clientId, familyId, realm, target, oboAssertion) {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n var matchingCredentials = {\r\n idTokens: {},\r\n accessTokens: {},\r\n refreshTokens: {},\r\n };\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-credential type cache entities\r\n var credType = CredentialEntity.getCredentialType(cacheKey);\r\n if (credType === Constants.NOT_DEFINED) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n var entity = _this.getSpecificCredential(cacheKey, credType);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!oboAssertion && !_this.matchOboAssertion(entity, oboAssertion)) {\r\n return;\r\n }\r\n if (!!homeAccountId && !_this.matchHomeAccountId(entity, homeAccountId)) {\r\n return;\r\n }\r\n if (!!environment && !_this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n if (!!realm && !_this.matchRealm(entity, realm)) {\r\n return;\r\n }\r\n if (!!credentialType && !_this.matchCredentialType(entity, credentialType)) {\r\n return;\r\n }\r\n if (!!clientId && !_this.matchClientId(entity, clientId)) {\r\n return;\r\n }\r\n if (!!familyId && !_this.matchFamilyId(entity, familyId)) {\r\n return;\r\n }\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!target && !_this.matchTarget(entity, target)) {\r\n return;\r\n }\r\n switch (credType) {\r\n case CredentialType.ID_TOKEN:\r\n matchingCredentials.idTokens[cacheKey] = entity;\r\n break;\r\n case CredentialType.ACCESS_TOKEN:\r\n matchingCredentials.accessTokens[cacheKey] = entity;\r\n break;\r\n case CredentialType.REFRESH_TOKEN:\r\n matchingCredentials.refreshTokens[cacheKey] = entity;\r\n break;\r\n }\r\n });\r\n return matchingCredentials;\r\n };\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n CacheManager.prototype.getAppMetadataFilteredBy = function (filter) {\r\n return this.getAppMetadataFilteredByInternal(filter.environment, filter.clientId);\r\n };\r\n /**\r\n * Support function to help match appMetadata\r\n * @param environment\r\n * @param clientId\r\n */\r\n CacheManager.prototype.getAppMetadataFilteredByInternal = function (environment, clientId) {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n var matchingAppMetadata = {};\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!_this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n var entity = _this.getAppMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!environment && !_this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n if (!!clientId && !_this.matchClientId(entity, clientId)) {\r\n return;\r\n }\r\n matchingAppMetadata[cacheKey] = entity;\r\n });\r\n return matchingAppMetadata;\r\n };\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n CacheManager.prototype.getAuthorityMetadataByAlias = function (host) {\r\n var _this = this;\r\n var allCacheKeys = this.getAuthorityMetadataKeys();\r\n var matchedEntity = null;\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!_this.isAuthorityMetadata(cacheKey) || cacheKey.indexOf(_this.clientId) === -1) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n var entity = _this.getAuthorityMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n matchedEntity = entity;\r\n });\r\n return matchedEntity;\r\n };\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n CacheManager.prototype.removeAllAccounts = function () {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach(function (cacheKey) {\r\n var entity = _this.getAccount(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n _this.removeAccount(cacheKey);\r\n });\r\n return true;\r\n };\r\n /**\r\n * returns a boolean if the given account is removed\r\n * @param account\r\n */\r\n CacheManager.prototype.removeAccount = function (accountKey) {\r\n var account = this.getAccount(accountKey);\r\n if (!account) {\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n return (this.removeAccountContext(account) && this.removeItem(accountKey, CacheSchemaType.ACCOUNT));\r\n };\r\n /**\r\n * returns a boolean if the given account is removed\r\n * @param account\r\n */\r\n CacheManager.prototype.removeAccountContext = function (account) {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n var accountId = account.generateAccountId();\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-credential type cache entities\r\n var credType = CredentialEntity.getCredentialType(cacheKey);\r\n if (credType === Constants.NOT_DEFINED) {\r\n return;\r\n }\r\n var cacheEntity = _this.getSpecificCredential(cacheKey, credType);\r\n if (!!cacheEntity && accountId === cacheEntity.generateAccountId()) {\r\n _this.removeCredential(cacheEntity);\r\n }\r\n });\r\n return true;\r\n };\r\n /**\r\n * returns a boolean if the given credential is removed\r\n * @param credential\r\n */\r\n CacheManager.prototype.removeCredential = function (credential) {\r\n var key = credential.generateCredentialKey();\r\n return this.removeItem(key, CacheSchemaType.CREDENTIAL);\r\n };\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n CacheManager.prototype.removeAppMetadata = function () {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach(function (cacheKey) {\r\n if (_this.isAppMetadata(cacheKey)) {\r\n _this.removeItem(cacheKey, CacheSchemaType.APP_METADATA);\r\n }\r\n });\r\n return true;\r\n };\r\n /**\r\n * Retrieve the cached credentials into a cacherecord\r\n * @param account\r\n * @param clientId\r\n * @param scopes\r\n * @param environment\r\n */\r\n CacheManager.prototype.readCacheRecord = function (account, clientId, scopes, environment) {\r\n var cachedAccount = this.readAccountFromCache(account);\r\n var cachedIdToken = this.readIdTokenFromCache(clientId, account);\r\n var cachedAccessToken = this.readAccessTokenFromCache(clientId, account, scopes);\r\n var cachedRefreshToken = this.readRefreshTokenFromCache(clientId, account, false);\r\n var cachedAppMetadata = this.readAppMetadataFromCache(environment, clientId);\r\n if (cachedAccount && cachedIdToken) {\r\n cachedAccount.idTokenClaims = new AuthToken(cachedIdToken.secret, this.cryptoImpl).claims;\r\n }\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n };\r\n /**\r\n * Retrieve AccountEntity from cache\r\n * @param account\r\n */\r\n CacheManager.prototype.readAccountFromCache = function (account) {\r\n var accountKey = AccountEntity.generateAccountCacheKey(account);\r\n return this.getAccount(accountKey);\r\n };\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param inputRealm\r\n */\r\n CacheManager.prototype.readIdTokenFromCache = function (clientId, account) {\r\n var idTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: clientId,\r\n realm: account.tenantId,\r\n };\r\n var credentialCache = this.getCredentialsFilteredBy(idTokenFilter);\r\n var idTokens = Object.keys(credentialCache.idTokens).map(function (key) { return credentialCache.idTokens[key]; });\r\n var numIdTokens = idTokens.length;\r\n if (numIdTokens < 1) {\r\n return null;\r\n }\r\n else if (numIdTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n return idTokens[0];\r\n };\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param scopes\r\n * @param inputRealm\r\n */\r\n CacheManager.prototype.readAccessTokenFromCache = function (clientId, account, scopes) {\r\n var accessTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n clientId: clientId,\r\n realm: account.tenantId,\r\n target: scopes.printScopesLowerCase(),\r\n };\r\n var credentialCache = this.getCredentialsFilteredBy(accessTokenFilter);\r\n var accessTokens = Object.keys(credentialCache.accessTokens).map(function (key) { return credentialCache.accessTokens[key]; });\r\n var numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n return null;\r\n }\r\n else if (numAccessTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n return accessTokens[0];\r\n };\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param clientId\r\n * @param account\r\n * @param familyRT\r\n */\r\n CacheManager.prototype.readRefreshTokenFromCache = function (clientId, account, familyRT) {\r\n var id = familyRT ? THE_FAMILY_ID : undefined;\r\n var refreshTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: clientId,\r\n familyId: id\r\n };\r\n var credentialCache = this.getCredentialsFilteredBy(refreshTokenFilter);\r\n var refreshTokens = Object.keys(credentialCache.refreshTokens).map(function (key) { return credentialCache.refreshTokens[key]; });\r\n var numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n return refreshTokens[0];\r\n };\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n CacheManager.prototype.readAppMetadataFromCache = function (environment, clientId) {\r\n var appMetadataFilter = {\r\n environment: environment,\r\n clientId: clientId,\r\n };\r\n var appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n var appMetadataEntries = Object.keys(appMetadata).map(function (key) { return appMetadata[key]; });\r\n var numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n }\r\n else if (numAppMetadata > 1) {\r\n throw ClientAuthError.createMultipleMatchingAppMetadataInCacheError();\r\n }\r\n return appMetadataEntries[0];\r\n };\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n CacheManager.prototype.isAppMetadataFOCI = function (environment, clientId) {\r\n var appMetadata = this.readAppMetadataFromCache(environment, clientId);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n };\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n CacheManager.prototype.matchHomeAccountId = function (entity, homeAccountId) {\r\n return !!(entity.homeAccountId && homeAccountId === entity.homeAccountId);\r\n };\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n CacheManager.prototype.matchOboAssertion = function (entity, oboAssertion) {\r\n return !!(entity.oboAssertion && oboAssertion === entity.oboAssertion);\r\n };\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n CacheManager.prototype.matchEnvironment = function (entity, environment) {\r\n var cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n CacheManager.prototype.matchCredentialType = function (entity, credentialType) {\r\n return (entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n };\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n CacheManager.prototype.matchClientId = function (entity, clientId) {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n };\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n CacheManager.prototype.matchFamilyId = function (entity, familyId) {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n };\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n CacheManager.prototype.matchRealm = function (entity, realm) {\r\n return !!(entity.realm && realm === entity.realm);\r\n };\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n CacheManager.prototype.matchTarget = function (entity, target) {\r\n if (entity.credentialType !== CredentialType.ACCESS_TOKEN || !entity.target) {\r\n return false;\r\n }\r\n var entityScopeSet = ScopeSet.fromString(entity.target);\r\n var requestTargetScopeSet = ScopeSet.fromString(target);\r\n if (!requestTargetScopeSet.containsOnlyOIDCScopes()) {\r\n requestTargetScopeSet.removeOIDCScopes(); // ignore OIDC scopes\r\n }\r\n else {\r\n requestTargetScopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\r\n }\r\n return entityScopeSet.containsScopeSet(requestTargetScopeSet);\r\n };\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n CacheManager.prototype.isAppMetadata = function (key) {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n };\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n CacheManager.prototype.isAuthorityMetadata = function (key) {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n };\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n CacheManager.prototype.generateAuthorityMetadataCacheKey = function (authority) {\r\n return AUTHORITY_METADATA_CONSTANTS.CACHE_KEY + \"-\" + this.clientId + \"-\" + authority;\r\n };\r\n /**\r\n * Returns the specific credential (IdToken/AccessToken/RefreshToken) from the cache\r\n * @param key\r\n * @param credType\r\n */\r\n CacheManager.prototype.getSpecificCredential = function (key, credType) {\r\n switch (credType) {\r\n case CredentialType.ID_TOKEN: {\r\n return this.getIdTokenCredential(key);\r\n }\r\n case CredentialType.ACCESS_TOKEN: {\r\n return this.getAccessTokenCredential(key);\r\n }\r\n case CredentialType.REFRESH_TOKEN: {\r\n return this.getRefreshTokenCredential(key);\r\n }\r\n default:\r\n return null;\r\n }\r\n };\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n CacheManager.toObject = function (obj, json) {\r\n for (var propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n };\r\n return CacheManager;\r\n}());\r\nvar DefaultStorageClass = /** @class */ (function (_super) {\r\n __extends(DefaultStorageClass, _super);\r\n function DefaultStorageClass() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DefaultStorageClass.prototype.setAccount = function () {\r\n var notImplErr = \"Storage interface - setAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAccount = function () {\r\n var notImplErr = \"Storage interface - getAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setIdTokenCredential = function () {\r\n var notImplErr = \"Storage interface - setIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getIdTokenCredential = function () {\r\n var notImplErr = \"Storage interface - getIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setAccessTokenCredential = function () {\r\n var notImplErr = \"Storage interface - setAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAccessTokenCredential = function () {\r\n var notImplErr = \"Storage interface - getAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setRefreshTokenCredential = function () {\r\n var notImplErr = \"Storage interface - setRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getRefreshTokenCredential = function () {\r\n var notImplErr = \"Storage interface - getRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setAppMetadata = function () {\r\n var notImplErr = \"Storage interface - setAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAppMetadata = function () {\r\n var notImplErr = \"Storage interface - getAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setServerTelemetry = function () {\r\n var notImplErr = \"Storage interface - setServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getServerTelemetry = function () {\r\n var notImplErr = \"Storage interface - getServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setAuthorityMetadata = function () {\r\n var notImplErr = \"Storage interface - setAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAuthorityMetadata = function () {\r\n var notImplErr = \"Storage interface - getAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAuthorityMetadataKeys = function () {\r\n var notImplErr = \"Storage interface - getAuthorityMetadataKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setThrottlingCache = function () {\r\n var notImplErr = \"Storage interface - setThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getThrottlingCache = function () {\r\n var notImplErr = \"Storage interface - getThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.removeItem = function () {\r\n var notImplErr = \"Storage interface - removeItem() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.containsKey = function () {\r\n var notImplErr = \"Storage interface - containsKey() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getKeys = function () {\r\n var notImplErr = \"Storage interface - getKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.clear = function () {\r\n var notImplErr = \"Storage interface - clear() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n return DefaultStorageClass;\r\n}(CacheManager));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Token renewal offset default in seconds\r\nvar DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\r\nvar DEFAULT_SYSTEM_OPTIONS = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC\r\n};\r\nvar DEFAULT_LOGGER_IMPLEMENTATION = {\r\n loggerCallback: function () {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info\r\n};\r\nvar DEFAULT_NETWORK_IMPLEMENTATION = {\r\n sendGetRequestAsync: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n sendPostRequestAsync: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n }\r\n};\r\nvar DEFAULT_LIBRARY_INFO = {\r\n sku: Constants.SKU,\r\n version: version,\r\n cpu: \"\",\r\n os: \"\"\r\n};\r\nvar DEFAULT_CLIENT_CREDENTIALS = {\r\n clientSecret: \"\",\r\n clientAssertion: undefined\r\n};\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nfunction buildClientConfiguration(_a) {\r\n var userAuthOptions = _a.authOptions, userSystemOptions = _a.systemOptions, userLoggerOption = _a.loggerOptions, storageImplementation = _a.storageInterface, networkImplementation = _a.networkInterface, cryptoImplementation = _a.cryptoInterface, clientCredentials = _a.clientCredentials, libraryInfo = _a.libraryInfo, serverTelemetryManager = _a.serverTelemetryManager, persistencePlugin = _a.persistencePlugin, serializableCache = _a.serializableCache;\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: __assign(__assign({}, DEFAULT_SYSTEM_OPTIONS), userSystemOptions),\r\n loggerOptions: __assign(__assign({}, DEFAULT_LOGGER_IMPLEMENTATION), userLoggerOption),\r\n storageInterface: storageImplementation || new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: __assign(__assign({}, DEFAULT_LIBRARY_INFO), libraryInfo),\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null\r\n };\r\n}\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions) {\r\n return __assign({ clientCapabilities: [] }, authOptions);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nvar ServerError = /** @class */ (function (_super) {\r\n __extends(ServerError, _super);\r\n function ServerError(errorCode, errorMessage, subError) {\r\n var _this = _super.call(this, errorCode, errorMessage, subError) || this;\r\n _this.name = \"ServerError\";\r\n Object.setPrototypeOf(_this, ServerError.prototype);\r\n return _this;\r\n }\r\n return ServerError;\r\n}(AuthError));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ThrottlingUtils = /** @class */ (function () {\r\n function ThrottlingUtils() {\r\n }\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n ThrottlingUtils.generateThrottlingStorageKey = function (thumbprint) {\r\n return ThrottlingConstants.THROTTLING_PREFIX + \".\" + JSON.stringify(thumbprint);\r\n };\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n ThrottlingUtils.preProcess = function (cacheManager, thumbprint) {\r\n var _a;\r\n var key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n var value = cacheManager.getThrottlingCache(key);\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\r\n return;\r\n }\r\n throw new ServerError(((_a = value.errorCodes) === null || _a === void 0 ? void 0 : _a.join(\" \")) || Constants.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n };\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n ThrottlingUtils.postProcess = function (cacheManager, thumbprint, response) {\r\n if (ThrottlingUtils.checkResponseStatus(response) || ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n var thumbprintValue = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror\r\n };\r\n cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue);\r\n }\r\n };\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n ThrottlingUtils.checkResponseStatus = function (response) {\r\n return response.status === 429 || response.status >= 500 && response.status < 600;\r\n };\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n ThrottlingUtils.checkResponseForRetryAfter = function (response) {\r\n if (response.headers) {\r\n return response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && (response.status < 200 || response.status >= 300);\r\n }\r\n return false;\r\n };\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n ThrottlingUtils.calculateThrottleTime = function (throttleTime) {\r\n if (throttleTime <= 0) {\r\n throttleTime = 0;\r\n }\r\n var currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(currentSeconds + (throttleTime || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds + ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000);\r\n };\r\n ThrottlingUtils.removeThrottle = function (cacheManager, clientId, authority, scopes, homeAccountIdentifier) {\r\n var thumbprint = {\r\n clientId: clientId,\r\n authority: authority,\r\n scopes: scopes,\r\n homeAccountIdentifier: homeAccountIdentifier\r\n };\r\n var key = this.generateThrottlingStorageKey(thumbprint);\r\n return cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\r\n };\r\n return ThrottlingUtils;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NetworkManager = /** @class */ (function () {\r\n function NetworkManager(networkClient, cacheManager) {\r\n this.networkClient = networkClient;\r\n this.cacheManager = cacheManager;\r\n }\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint\r\n * @param tokenEndpoint\r\n * @param options\r\n */\r\n NetworkManager.prototype.sendPostRequest = function (thumbprint, tokenEndpoint, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.networkClient.sendPostRequestAsync(tokenEndpoint, options)];\r\n case 2:\r\n response = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n throw e_1;\r\n }\r\n else {\r\n throw ClientAuthError.createNetworkError(tokenEndpoint, e_1);\r\n }\r\n case 4:\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\r\n return [2 /*return*/, response];\r\n }\r\n });\r\n });\r\n };\r\n return NetworkManager;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n */\r\nvar BaseClient = /** @class */ (function () {\r\n function BaseClient(configuration) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name, version);\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n // Set the NetworkManager\r\n this.networkManager = new NetworkManager(this.networkClient, this.cacheManager);\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n }\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n BaseClient.prototype.createDefaultTokenRequestHeaders = function () {\r\n var headers = this.createDefaultLibraryHeaders();\r\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\r\n headers[HeaderNames.X_MS_LIB_CAPABILITY] = HeaderNames.X_MS_LIB_CAPABILITY_VALUE;\r\n if (this.serverTelemetryManager) {\r\n headers[HeaderNames.X_CLIENT_CURR_TELEM] = this.serverTelemetryManager.generateCurrentRequestHeaderValue();\r\n headers[HeaderNames.X_CLIENT_LAST_TELEM] = this.serverTelemetryManager.generateLastRequestHeaderValue();\r\n }\r\n return headers;\r\n };\r\n /**\r\n * addLibraryData\r\n */\r\n BaseClient.prototype.createDefaultLibraryHeaders = function () {\r\n var headers = {};\r\n // client info headers\r\n headers[AADServerParamKeys.X_CLIENT_SKU] = this.config.libraryInfo.sku;\r\n headers[AADServerParamKeys.X_CLIENT_VER] = this.config.libraryInfo.version;\r\n headers[AADServerParamKeys.X_CLIENT_OS] = this.config.libraryInfo.os;\r\n headers[AADServerParamKeys.X_CLIENT_CPU] = this.config.libraryInfo.cpu;\r\n return headers;\r\n };\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n BaseClient.prototype.executePostToTokenEndpoint = function (tokenEndpoint, queryString, headers, thumbprint) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.networkManager.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers })];\r\n case 1:\r\n response = _a.sent();\r\n if (this.config.serverTelemetryManager && response.status < 500 && response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n return [2 /*return*/, response];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority\r\n */\r\n BaseClient.prototype.updateAuthority = function (updatedAuthority) {\r\n if (!updatedAuthority.discoveryComplete()) {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Updated authority has not completed endpoint discovery.\");\r\n }\r\n this.authority = updatedAuthority;\r\n };\r\n return BaseClient;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Validates server consumable params from the \"request\" objects\r\n */\r\nvar RequestValidator = /** @class */ (function () {\r\n function RequestValidator() {\r\n }\r\n /**\r\n * Utility to check if the `redirectUri` in the request is a non-null value\r\n * @param redirectUri\r\n */\r\n RequestValidator.validateRedirectUri = function (redirectUri) {\r\n if (StringUtils.isEmpty(redirectUri)) {\r\n throw ClientConfigurationError.createRedirectUriEmptyError();\r\n }\r\n };\r\n /**\r\n * Utility to validate prompt sent by the user in the request\r\n * @param prompt\r\n */\r\n RequestValidator.validatePrompt = function (prompt) {\r\n if ([\r\n PromptValue.LOGIN,\r\n PromptValue.SELECT_ACCOUNT,\r\n PromptValue.CONSENT,\r\n PromptValue.NONE\r\n ].indexOf(prompt) < 0) {\r\n throw ClientConfigurationError.createInvalidPromptError(prompt);\r\n }\r\n };\r\n RequestValidator.validateClaims = function (claims) {\r\n try {\r\n JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n };\r\n /**\r\n * Utility to validate code_challenge and code_challenge_method\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n RequestValidator.validateCodeChallengeParams = function (codeChallenge, codeChallengeMethod) {\r\n if (StringUtils.isEmpty(codeChallenge) || StringUtils.isEmpty(codeChallengeMethod)) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n }\r\n else {\r\n this.validateCodeChallengeMethod(codeChallengeMethod);\r\n }\r\n };\r\n /**\r\n * Utility to validate code_challenge_method\r\n * @param codeChallengeMethod\r\n */\r\n RequestValidator.validateCodeChallengeMethod = function (codeChallengeMethod) {\r\n if ([\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256\r\n ].indexOf(codeChallengeMethod) < 0) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeMethodError();\r\n }\r\n };\r\n /**\r\n * Removes unnecessary or duplicate query parameters from extraQueryParameters\r\n * @param request\r\n */\r\n RequestValidator.sanitizeEQParams = function (eQParams, queryParams) {\r\n if (!eQParams) {\r\n return {};\r\n }\r\n // Remove any query parameters already included in SSO params\r\n queryParams.forEach(function (value, key) {\r\n if (eQParams[key]) {\r\n delete eQParams[key];\r\n }\r\n });\r\n return eQParams;\r\n };\r\n return RequestValidator;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RequestParameterBuilder = /** @class */ (function () {\r\n function RequestParameterBuilder() {\r\n this.parameters = new Map();\r\n }\r\n /**\r\n * add response_type = code\r\n */\r\n RequestParameterBuilder.prototype.addResponseTypeCode = function () {\r\n this.parameters.set(AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE));\r\n };\r\n /**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\n RequestParameterBuilder.prototype.addResponseMode = function (responseMode) {\r\n this.parameters.set(AADServerParamKeys.RESPONSE_MODE, encodeURIComponent((responseMode) ? responseMode : ResponseMode.QUERY));\r\n };\r\n /**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\n RequestParameterBuilder.prototype.addScopes = function (scopes, addOidcScopes) {\r\n if (addOidcScopes === void 0) { addOidcScopes = true; }\r\n var requestScopes = addOidcScopes ? __spreadArrays(scopes || [], OIDC_DEFAULT_SCOPES) : scopes || [];\r\n var scopeSet = new ScopeSet(requestScopes);\r\n this.parameters.set(AADServerParamKeys.SCOPE, encodeURIComponent(scopeSet.printScopes()));\r\n };\r\n /**\r\n * add clientId\r\n * @param clientId\r\n */\r\n RequestParameterBuilder.prototype.addClientId = function (clientId) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ID, encodeURIComponent(clientId));\r\n };\r\n /**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\n RequestParameterBuilder.prototype.addRedirectUri = function (redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.REDIRECT_URI, encodeURIComponent(redirectUri));\r\n };\r\n /**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\n RequestParameterBuilder.prototype.addPostLogoutRedirectUri = function (redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.POST_LOGOUT_URI, encodeURIComponent(redirectUri));\r\n };\r\n /**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\n RequestParameterBuilder.prototype.addIdTokenHint = function (idTokenHint) {\r\n this.parameters.set(AADServerParamKeys.ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\r\n };\r\n /**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\n RequestParameterBuilder.prototype.addDomainHint = function (domainHint) {\r\n this.parameters.set(SSOTypes.DOMAIN_HINT, encodeURIComponent(domainHint));\r\n };\r\n /**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\n RequestParameterBuilder.prototype.addLoginHint = function (loginHint) {\r\n this.parameters.set(SSOTypes.LOGIN_HINT, encodeURIComponent(loginHint));\r\n };\r\n /**\r\n * add sid\r\n * @param sid\r\n */\r\n RequestParameterBuilder.prototype.addSid = function (sid) {\r\n this.parameters.set(SSOTypes.SID, encodeURIComponent(sid));\r\n };\r\n /**\r\n * add claims\r\n * @param claims\r\n */\r\n RequestParameterBuilder.prototype.addClaims = function (claims, clientCapabilities) {\r\n var mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n RequestValidator.validateClaims(mergedClaims);\r\n this.parameters.set(AADServerParamKeys.CLAIMS, encodeURIComponent(mergedClaims));\r\n };\r\n /**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\n RequestParameterBuilder.prototype.addCorrelationId = function (correlationId) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\r\n };\r\n /**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\n RequestParameterBuilder.prototype.addLibraryInfo = function (libraryInfo) {\r\n // Telemetry Info\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku);\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_VER, libraryInfo.version);\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os);\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CPU, libraryInfo.cpu);\r\n };\r\n /**\r\n * add prompt\r\n * @param prompt\r\n */\r\n RequestParameterBuilder.prototype.addPrompt = function (prompt) {\r\n RequestValidator.validatePrompt(prompt);\r\n this.parameters.set(\"\" + AADServerParamKeys.PROMPT, encodeURIComponent(prompt));\r\n };\r\n /**\r\n * add state\r\n * @param state\r\n */\r\n RequestParameterBuilder.prototype.addState = function (state) {\r\n if (!StringUtils.isEmpty(state)) {\r\n this.parameters.set(AADServerParamKeys.STATE, encodeURIComponent(state));\r\n }\r\n };\r\n /**\r\n * add nonce\r\n * @param nonce\r\n */\r\n RequestParameterBuilder.prototype.addNonce = function (nonce) {\r\n this.parameters.set(AADServerParamKeys.NONCE, encodeURIComponent(nonce));\r\n };\r\n /**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n RequestParameterBuilder.prototype.addCodeChallengeParams = function (codeChallenge, codeChallengeMethod) {\r\n RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\r\n if (codeChallenge && codeChallengeMethod) {\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE, encodeURIComponent(codeChallenge));\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\r\n }\r\n else {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n }\r\n };\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n RequestParameterBuilder.prototype.addAuthorizationCode = function (code) {\r\n this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code));\r\n };\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n RequestParameterBuilder.prototype.addDeviceCode = function (code) {\r\n this.parameters.set(AADServerParamKeys.DEVICE_CODE, encodeURIComponent(code));\r\n };\r\n /**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\n RequestParameterBuilder.prototype.addRefreshToken = function (refreshToken) {\r\n this.parameters.set(AADServerParamKeys.REFRESH_TOKEN, encodeURIComponent(refreshToken));\r\n };\r\n /**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\n RequestParameterBuilder.prototype.addCodeVerifier = function (codeVerifier) {\r\n this.parameters.set(AADServerParamKeys.CODE_VERIFIER, encodeURIComponent(codeVerifier));\r\n };\r\n /**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\n RequestParameterBuilder.prototype.addClientSecret = function (clientSecret) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_SECRET, encodeURIComponent(clientSecret));\r\n };\r\n /**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n RequestParameterBuilder.prototype.addClientAssertion = function (clientAssertion) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\r\n };\r\n /**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\n RequestParameterBuilder.prototype.addClientAssertionType = function (clientAssertionType) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\r\n };\r\n /**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n RequestParameterBuilder.prototype.addOboAssertion = function (oboAssertion) {\r\n this.parameters.set(AADServerParamKeys.OBO_ASSERTION, encodeURIComponent(oboAssertion));\r\n };\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n RequestParameterBuilder.prototype.addRequestTokenUse = function (tokenUse) {\r\n this.parameters.set(AADServerParamKeys.REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\r\n };\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n RequestParameterBuilder.prototype.addGrantType = function (grantType) {\r\n this.parameters.set(AADServerParamKeys.GRANT_TYPE, encodeURIComponent(grantType));\r\n };\r\n /**\r\n * add client info\r\n *\r\n */\r\n RequestParameterBuilder.prototype.addClientInfo = function () {\r\n this.parameters.set(ClientInfo, \"1\");\r\n };\r\n /**\r\n * add extraQueryParams\r\n * @param eQparams\r\n */\r\n RequestParameterBuilder.prototype.addExtraQueryParameters = function (eQparams) {\r\n var _this = this;\r\n RequestValidator.sanitizeEQParams(eQparams, this.parameters);\r\n Object.keys(eQparams).forEach(function (key) {\r\n _this.parameters.set(key, eQparams[key]);\r\n });\r\n };\r\n RequestParameterBuilder.prototype.addClientCapabilitiesToClaims = function (claims, clientCapabilities) {\r\n var mergedClaims;\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n }\r\n else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n }\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\r\n values: clientCapabilities\r\n };\r\n }\r\n return JSON.stringify(mergedClaims);\r\n };\r\n /**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\n RequestParameterBuilder.prototype.addUsername = function (username) {\r\n this.parameters.set(PasswordGrantConstants.username, username);\r\n };\r\n /**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\n RequestParameterBuilder.prototype.addPassword = function (password) {\r\n this.parameters.set(PasswordGrantConstants.password, password);\r\n };\r\n /**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\n RequestParameterBuilder.prototype.addPopToken = function (cnfString) {\r\n if (!StringUtils.isEmpty(cnfString)) {\r\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.POP);\r\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(cnfString));\r\n }\r\n };\r\n /**\r\n * Utility to create a URL from the params map\r\n */\r\n RequestParameterBuilder.prototype.createQueryString = function () {\r\n var queryParameterArray = new Array();\r\n this.parameters.forEach(function (value, key) {\r\n queryParameterArray.push(key + \"=\" + value);\r\n });\r\n return queryParameterArray.join(\"&\");\r\n };\r\n return RequestParameterBuilder;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ID_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-idtoken-clientId-contoso.com-\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * }\r\n */\r\nvar IdTokenEntity = /** @class */ (function (_super) {\r\n __extends(IdTokenEntity, _super);\r\n function IdTokenEntity() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n IdTokenEntity.createIdTokenEntity = function (homeAccountId, environment, idToken, clientId, tenantId, oboAssertion) {\r\n var idTokenEntity = new IdTokenEntity();\r\n idTokenEntity.credentialType = CredentialType.ID_TOKEN;\r\n idTokenEntity.homeAccountId = homeAccountId;\r\n idTokenEntity.environment = environment;\r\n idTokenEntity.clientId = clientId;\r\n idTokenEntity.secret = idToken;\r\n idTokenEntity.realm = tenantId;\r\n idTokenEntity.oboAssertion = oboAssertion;\r\n return idTokenEntity;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n IdTokenEntity.isIdTokenEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN);\r\n };\r\n return IdTokenEntity;\r\n}(CredentialEntity));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility class which exposes functions for managing date and time operations.\r\n */\r\nvar TimeUtils = /** @class */ (function () {\r\n function TimeUtils() {\r\n }\r\n /**\r\n * return the current time in Unix time (seconds).\r\n */\r\n TimeUtils.nowSeconds = function () {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n };\r\n /**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\n TimeUtils.isTokenExpired = function (expiresOn, offset) {\r\n // check for access token expiry\r\n var expirationSec = Number(expiresOn) || 0;\r\n var offsetCurrentTimeSec = TimeUtils.nowSeconds() + offset;\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return (offsetCurrentTimeSec > expirationSec);\r\n };\r\n return TimeUtils;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ACCESS_TOKEN Credential Type\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-accesstoken-clientId-contoso.com-user.read\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * cachedAt: Absolute device time when entry was created in the cache.\r\n * expiresOn: Token expiry time, calculated based on current UTC time in seconds. Represented as a string.\r\n * extendedExpiresOn: Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds.\r\n * keyId: used for POP and SSH tokenTypes\r\n * tokenType: Type of the token issued. Usually \"Bearer\"\r\n * }\r\n */\r\nvar AccessTokenEntity = /** @class */ (function (_super) {\r\n __extends(AccessTokenEntity, _super);\r\n function AccessTokenEntity() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\n AccessTokenEntity.createAccessTokenEntity = function (homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, tokenType, oboAssertion) {\r\n var atEntity = new AccessTokenEntity();\r\n atEntity.homeAccountId = homeAccountId;\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN;\r\n atEntity.secret = accessToken;\r\n var currentTime = TimeUtils.nowSeconds();\r\n atEntity.cachedAt = currentTime.toString();\r\n /*\r\n * Token expiry time.\r\n * This value should be  calculated based on the current UTC time measured locally and the value  expires_in Represented as a string in JSON.\r\n */\r\n atEntity.expiresOn = expiresOn.toString();\r\n atEntity.extendedExpiresOn = extExpiresOn.toString();\r\n atEntity.environment = environment;\r\n atEntity.clientId = clientId;\r\n atEntity.realm = tenantId;\r\n atEntity.target = scopes;\r\n atEntity.oboAssertion = oboAssertion;\r\n atEntity.tokenType = StringUtils.isEmpty(tokenType) ? AuthenticationScheme.BEARER : tokenType;\r\n return atEntity;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AccessTokenEntity.isAccessTokenEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN);\r\n };\r\n return AccessTokenEntity;\r\n}(CredentialEntity));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * REFRESH_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-refreshtoken-clientId--\r\n *\r\n * Value:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * }\r\n */\r\nvar RefreshTokenEntity = /** @class */ (function (_super) {\r\n __extends(RefreshTokenEntity, _super);\r\n function RefreshTokenEntity() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n RefreshTokenEntity.createRefreshTokenEntity = function (homeAccountId, environment, refreshToken, clientId, familyId, oboAssertion) {\r\n var rtEntity = new RefreshTokenEntity();\r\n rtEntity.clientId = clientId;\r\n rtEntity.credentialType = CredentialType.REFRESH_TOKEN;\r\n rtEntity.environment = environment;\r\n rtEntity.homeAccountId = homeAccountId;\r\n rtEntity.secret = refreshToken;\r\n rtEntity.oboAssertion = oboAssertion;\r\n if (familyId)\r\n rtEntity.familyId = familyId;\r\n return rtEntity;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n RefreshTokenEntity.isRefreshTokenEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN);\r\n };\r\n return RefreshTokenEntity;\r\n}(CredentialEntity));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * InteractionRequiredAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar InteractionRequiredAuthErrorMessage = [\r\n \"interaction_required\",\r\n \"consent_required\",\r\n \"login_required\"\r\n];\r\nvar InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\"\r\n];\r\n/**\r\n * Error thrown when user interaction is required at the auth server.\r\n */\r\nvar InteractionRequiredAuthError = /** @class */ (function (_super) {\r\n __extends(InteractionRequiredAuthError, _super);\r\n function InteractionRequiredAuthError(errorCode, errorMessage, subError) {\r\n var _this = _super.call(this, errorCode, errorMessage, subError) || this;\r\n _this.name = \"InteractionRequiredAuthError\";\r\n Object.setPrototypeOf(_this, InteractionRequiredAuthError.prototype);\r\n return _this;\r\n }\r\n InteractionRequiredAuthError.isInteractionRequiredError = function (errorCode, errorString, subError) {\r\n var isInteractionRequiredErrorCode = !!errorCode && InteractionRequiredAuthErrorMessage.indexOf(errorCode) > -1;\r\n var isInteractionRequiredSubError = !!subError && InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n var isInteractionRequiredErrorDesc = !!errorString && InteractionRequiredAuthErrorMessage.some(function (irErrorCode) {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n return isInteractionRequiredErrorCode || isInteractionRequiredErrorDesc || isInteractionRequiredSubError;\r\n };\r\n return InteractionRequiredAuthError;\r\n}(ServerError));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar CacheRecord = /** @class */ (function () {\r\n function CacheRecord(accountEntity, idTokenEntity, accessTokenEntity, refreshTokenEntity, appMetadataEntity) {\r\n this.account = accountEntity || null;\r\n this.idToken = idTokenEntity || null;\r\n this.accessToken = accessTokenEntity || null;\r\n this.refreshToken = refreshTokenEntity || null;\r\n this.appMetadata = appMetadataEntity || null;\r\n }\r\n return CacheRecord;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nvar ProtocolUtils = /** @class */ (function () {\r\n function ProtocolUtils() {\r\n }\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState\r\n * @param randomGuid\r\n */\r\n ProtocolUtils.setRequestState = function (cryptoObj, userState, meta) {\r\n var libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return !StringUtils.isEmpty(userState) ? \"\" + libraryState + Constants.RESOURCE_DELIM + userState : libraryState;\r\n };\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid\r\n * @param cryptoObj\r\n */\r\n ProtocolUtils.generateLibraryState = function (cryptoObj, meta) {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"generateLibraryState\");\r\n }\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n var stateObj = {\r\n id: cryptoObj.createNewGuid()\r\n };\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n var stateString = JSON.stringify(stateObj);\r\n return cryptoObj.base64Encode(stateString);\r\n };\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state\r\n * @param cryptoObj\r\n */\r\n ProtocolUtils.parseRequestState = function (cryptoObj, state) {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"parseRequestState\");\r\n }\r\n if (StringUtils.isEmpty(state)) {\r\n throw ClientAuthError.createInvalidStateError(state, \"Null, undefined or empty state\");\r\n }\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n var splitState = decodeURIComponent(state).split(Constants.RESOURCE_DELIM);\r\n var libraryState = splitState[0];\r\n var userState = splitState.length > 1 ? splitState.slice(1).join(Constants.RESOURCE_DELIM) : \"\";\r\n var libraryStateString = cryptoObj.base64Decode(libraryState);\r\n var libraryStateObj = JSON.parse(libraryStateString);\r\n return {\r\n userRequestState: !StringUtils.isEmpty(userState) ? userState : \"\",\r\n libraryState: libraryStateObj\r\n };\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n };\r\n return ProtocolUtils;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nvar UrlString = /** @class */ (function () {\r\n function UrlString(url) {\r\n this._urlString = url;\r\n if (StringUtils.isEmpty(this._urlString)) {\r\n // Throws error if url is empty\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n if (StringUtils.isEmpty(this.getHash())) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n Object.defineProperty(UrlString.prototype, \"urlString\", {\r\n get: function () {\r\n return this._urlString;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url\r\n */\r\n UrlString.canonicalizeUri = function (url) {\r\n if (url) {\r\n url = url.toLowerCase();\r\n if (StringUtils.endsWith(url, \"?\")) {\r\n url = url.slice(0, -1);\r\n }\r\n else if (StringUtils.endsWith(url, \"?/\")) {\r\n url = url.slice(0, -2);\r\n }\r\n if (!StringUtils.endsWith(url, \"/\")) {\r\n url += \"/\";\r\n }\r\n }\r\n return url;\r\n };\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n UrlString.prototype.validateAsUri = function () {\r\n // Attempts to parse url for uri components\r\n var components;\r\n try {\r\n components = this.getUrlComponents();\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createUrlParseError(e);\r\n }\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw ClientConfigurationError.createUrlParseError(\"Given url string: \" + this.urlString);\r\n }\r\n // Throw error if uri is insecure.\r\n if (!components.Protocol || components.Protocol.toLowerCase() !== \"https:\") {\r\n throw ClientConfigurationError.createInsecureAuthorityUriError(this.urlString);\r\n }\r\n };\r\n /**\r\n * Function to remove query string params from url. Returns the new url.\r\n * @param url\r\n * @param name\r\n */\r\n UrlString.prototype.urlRemoveQueryStringParameter = function (name) {\r\n var regex = new RegExp(\"(\\\\&\" + name + \"=)[^\\&]+\");\r\n this._urlString = this.urlString.replace(regex, \"\");\r\n // name=value&\r\n regex = new RegExp(\"(\" + name + \"=)[^\\&]+&\");\r\n this._urlString = this.urlString.replace(regex, \"\");\r\n // name=value\r\n regex = new RegExp(\"(\" + name + \"=)[^\\&]+\");\r\n this._urlString = this.urlString.replace(regex, \"\");\r\n return this.urlString;\r\n };\r\n UrlString.removeHashFromUrl = function (url) {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n };\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n UrlString.prototype.replaceTenantPath = function (tenantId) {\r\n var urlObject = this.getUrlComponents();\r\n var pathArray = urlObject.PathSegments;\r\n if (tenantId && (pathArray.length !== 0 && (pathArray[0] === AADAuthorityConstants.COMMON || pathArray[0] === AADAuthorityConstants.ORGANIZATIONS))) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n };\r\n /**\r\n * Returns the anchor part(#) of the URL\r\n */\r\n UrlString.prototype.getHash = function () {\r\n return UrlString.parseHash(this.urlString);\r\n };\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n UrlString.prototype.getUrlComponents = function () {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n var regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n // If url string does not match regEx, we throw an error\r\n var match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(\"Given url string: \" + this.urlString);\r\n }\r\n // Url component object\r\n var urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7]\r\n };\r\n var pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter(function (val) { return val && val.length > 0; }); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n if (!StringUtils.isEmpty(urlComponents.QueryString) && urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1);\r\n }\r\n return urlComponents;\r\n };\r\n UrlString.getDomainFromUrl = function (url) {\r\n var regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n var match = url.match(regEx);\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(\"Given url string: \" + url);\r\n }\r\n return match[2];\r\n };\r\n UrlString.getAbsoluteUrl = function (relativeUrl, baseUrl) {\r\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\r\n var url = new UrlString(baseUrl);\r\n var baseComponents = url.getUrlComponents();\r\n return baseComponents.Protocol + \"//\" + baseComponents.HostNameAndPort + relativeUrl;\r\n }\r\n return relativeUrl;\r\n };\r\n /**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString\r\n */\r\n UrlString.parseHash = function (hashString) {\r\n var hashIndex1 = hashString.indexOf(\"#\");\r\n var hashIndex2 = hashString.indexOf(\"#/\");\r\n if (hashIndex2 > -1) {\r\n return hashString.substring(hashIndex2 + 2);\r\n }\r\n else if (hashIndex1 > -1) {\r\n return hashString.substring(hashIndex1 + 1);\r\n }\r\n return \"\";\r\n };\r\n UrlString.constructAuthorityUriFromObject = function (urlObject) {\r\n return new UrlString(urlObject.Protocol + \"//\" + urlObject.HostNameAndPort + \"/\" + urlObject.PathSegments.join(\"/\"));\r\n };\r\n /**\r\n * Returns URL hash as server auth code response object.\r\n */\r\n UrlString.getDeserializedHash = function (hash) {\r\n // Check if given hash is empty\r\n if (StringUtils.isEmpty(hash)) {\r\n return {};\r\n }\r\n // Strip the # symbol if present\r\n var parsedHash = UrlString.parseHash(hash);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n var deserializedHash = StringUtils.queryStringToObject(StringUtils.isEmpty(parsedHash) ? hash : parsedHash);\r\n // Check if deserialization didn't work\r\n if (!deserializedHash) {\r\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedHash));\r\n }\r\n return deserializedHash;\r\n };\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n */\r\n UrlString.hashContainsKnownProperties = function (hash) {\r\n if (StringUtils.isEmpty(hash)) {\r\n return false;\r\n }\r\n var parameters = UrlString.getDeserializedHash(hash);\r\n return !!(parameters.code ||\r\n parameters.error_description ||\r\n parameters.error ||\r\n parameters.state);\r\n };\r\n return UrlString;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar KeyLocation;\r\n(function (KeyLocation) {\r\n KeyLocation[\"SW\"] = \"sw\";\r\n KeyLocation[\"UHW\"] = \"uhw\";\r\n})(KeyLocation || (KeyLocation = {}));\r\nvar PopTokenGenerator = /** @class */ (function () {\r\n function PopTokenGenerator(cryptoUtils) {\r\n this.cryptoUtils = cryptoUtils;\r\n }\r\n PopTokenGenerator.prototype.generateCnf = function (resourceRequestMethod, resourceRequestUri) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var kidThumbprint, reqCnf;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.cryptoUtils.getPublicKeyThumbprint(resourceRequestMethod, resourceRequestUri)];\r\n case 1:\r\n kidThumbprint = _a.sent();\r\n reqCnf = {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW\r\n };\r\n return [2 /*return*/, this.cryptoUtils.base64Encode(JSON.stringify(reqCnf))];\r\n }\r\n });\r\n });\r\n };\r\n PopTokenGenerator.prototype.signPopToken = function (accessToken, resourceRequestMethod, resourceRequestUri, shrClaims) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenClaims, resourceUrlString, resourceUrlComponents;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n tokenClaims = AuthToken.extractTokenClaims(accessToken, this.cryptoUtils);\r\n resourceUrlString = new UrlString(resourceRequestUri);\r\n resourceUrlComponents = resourceUrlString.getUrlComponents();\r\n if (!((_a = tokenClaims === null || tokenClaims === void 0 ? void 0 : tokenClaims.cnf) === null || _a === void 0 ? void 0 : _a.kid)) {\r\n throw ClientAuthError.createTokenClaimsRequiredError();\r\n }\r\n return [4 /*yield*/, this.cryptoUtils.signJwt({\r\n at: accessToken,\r\n ts: \"\" + TimeUtils.nowSeconds(),\r\n m: resourceRequestMethod.toUpperCase(),\r\n u: resourceUrlComponents.HostNameAndPort || \"\",\r\n nonce: this.cryptoUtils.createNewGuid(),\r\n p: resourceUrlComponents.AbsolutePath,\r\n q: [[], resourceUrlComponents.QueryString],\r\n client_claims: shrClaims || undefined\r\n }, tokenClaims.cnf.kid)];\r\n case 1: return [2 /*return*/, _b.sent()];\r\n }\r\n });\r\n });\r\n };\r\n return PopTokenGenerator;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * APP_METADATA Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: appmetadata--\r\n *\r\n * Value:\r\n * {\r\n * clientId: client ID of the application\r\n * environment: entity that issued the token, represented as a full host\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * }\r\n */\r\nvar AppMetadataEntity = /** @class */ (function () {\r\n function AppMetadataEntity() {\r\n }\r\n /**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\r\n */\r\n AppMetadataEntity.prototype.generateAppMetadataKey = function () {\r\n return AppMetadataEntity.generateAppMetadataCacheKey(this.environment, this.clientId);\r\n };\r\n /**\r\n * Generate AppMetadata Cache Key\r\n */\r\n AppMetadataEntity.generateAppMetadataCacheKey = function (environment, clientId) {\r\n var appMetaDataKeyArray = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Creates AppMetadataEntity\r\n * @param clientId\r\n * @param environment\r\n * @param familyId\r\n */\r\n AppMetadataEntity.createAppMetadataEntity = function (clientId, environment, familyId) {\r\n var appMetadata = new AppMetadataEntity();\r\n appMetadata.clientId = clientId;\r\n appMetadata.environment = environment;\r\n if (familyId) {\r\n appMetadata.familyId = familyId;\r\n }\r\n return appMetadata;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AppMetadataEntity.isAppMetadataEntity = function (key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\"));\r\n };\r\n return AppMetadataEntity;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */ var TokenCacheContext = /** @class */ (function () {\r\n function TokenCacheContext(tokenCache, hasChanged) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n Object.defineProperty(TokenCacheContext.prototype, \"cacheHasChanged\", {\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get: function () {\r\n return this.hasChanged;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TokenCacheContext.prototype, \"tokenCache\", {\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get: function () {\r\n return this.cache;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return TokenCacheContext;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class that handles response parsing.\r\n */\r\nvar ResponseHandler = /** @class */ (function () {\r\n function ResponseHandler(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n }\r\n /**\r\n * Function which validates server authorization code response.\r\n * @param serverResponseHash\r\n * @param cachedState\r\n * @param cryptoObj\r\n */\r\n ResponseHandler.prototype.validateServerAuthorizationCodeResponse = function (serverResponseHash, cachedState, cryptoObj) {\r\n if (!serverResponseHash.state || !cachedState) {\r\n throw !serverResponseHash.state ? ClientAuthError.createStateNotFoundError(\"Server State\") : ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n if (decodeURIComponent(serverResponseHash.state) !== decodeURIComponent(cachedState)) {\r\n throw ClientAuthError.createStateMismatchError();\r\n }\r\n // Check for error\r\n if (serverResponseHash.error || serverResponseHash.error_description || serverResponseHash.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponseHash.error, serverResponseHash.error_description, serverResponseHash.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\r\n }\r\n throw new ServerError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\r\n }\r\n if (serverResponseHash.client_info) {\r\n buildClientInfo(serverResponseHash.client_info, cryptoObj);\r\n }\r\n };\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n */\r\n ResponseHandler.prototype.validateTokenResponse = function (serverResponse) {\r\n // Check for error\r\n if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror);\r\n }\r\n var errString = serverResponse.error_codes + \" - [\" + serverResponse.timestamp + \"]: \" + serverResponse.error_description + \" - Correlation ID: \" + serverResponse.correlation_id + \" - Trace ID: \" + serverResponse.trace_id;\r\n throw new ServerError(serverResponse.error, errString);\r\n }\r\n };\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n ResponseHandler.prototype.handleServerTokenResponse = function (serverTokenResponse, authority, reqTimestamp, request, authCodePayload, oboAssertion, handlingRefreshTokenResponse) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var idTokenObj, requestStateObj, cacheRecord, cacheContext, key, account;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (serverTokenResponse.id_token) {\r\n idTokenObj = new AuthToken(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj);\r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && !StringUtils.isEmpty(authCodePayload.nonce)) {\r\n if (idTokenObj.claims.nonce !== authCodePayload.nonce) {\r\n throw ClientAuthError.createNonceMismatchError();\r\n }\r\n }\r\n }\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenObj);\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, idTokenObj, request.scopes, oboAssertion, authCodePayload);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 4, 7]);\r\n if (!(this.persistencePlugin && this.serializableCache)) return [3 /*break*/, 3];\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n return [4 /*yield*/, this.persistencePlugin.beforeCacheAccess(cacheContext)];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal.\r\n */\r\n if (handlingRefreshTokenResponse && cacheRecord.account) {\r\n key = cacheRecord.account.generateAccountKey();\r\n account = this.cacheStorage.getAccount(key);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return [2 /*return*/, ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj)];\r\n }\r\n }\r\n this.cacheStorage.saveCacheRecord(cacheRecord);\r\n return [3 /*break*/, 7];\r\n case 4:\r\n if (!(this.persistencePlugin && this.serializableCache && cacheContext)) return [3 /*break*/, 6];\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n return [4 /*yield*/, this.persistencePlugin.afterCacheAccess(cacheContext)];\r\n case 5:\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: return [7 /*endfinally*/];\r\n case 7: return [2 /*return*/, ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n ResponseHandler.prototype.generateCacheRecord = function (serverTokenResponse, authority, reqTimestamp, idTokenObj, requestScopes, oboAssertion, authCodePayload) {\r\n var env = authority.getPreferredCache();\r\n if (StringUtils.isEmpty(env)) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n // IdToken: non AAD scenarios can have empty realm\r\n var cachedIdToken;\r\n var cachedAccount;\r\n if (!StringUtils.isEmpty(serverTokenResponse.id_token) && !!idTokenObj) {\r\n cachedIdToken = IdTokenEntity.createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token || Constants.EMPTY_STRING, this.clientId, idTokenObj.claims.tid || Constants.EMPTY_STRING, oboAssertion);\r\n cachedAccount = this.generateAccountEntity(serverTokenResponse, idTokenObj, authority, oboAssertion, authCodePayload);\r\n }\r\n // AccessToken\r\n var cachedAccessToken = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.access_token)) {\r\n // If scopes not returned in server response, use request scopes\r\n var responseScopes = serverTokenResponse.scope ? ScopeSet.fromString(serverTokenResponse.scope) : new ScopeSet(requestScopes || []);\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n var expiresIn = (typeof serverTokenResponse.expires_in === \"string\" ? parseInt(serverTokenResponse.expires_in, 10) : serverTokenResponse.expires_in) || 0;\r\n var extExpiresIn = (typeof serverTokenResponse.ext_expires_in === \"string\" ? parseInt(serverTokenResponse.ext_expires_in, 10) : serverTokenResponse.ext_expires_in) || 0;\r\n var tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n var extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = AccessTokenEntity.createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token || Constants.EMPTY_STRING, this.clientId, idTokenObj ? idTokenObj.claims.tid || Constants.EMPTY_STRING : authority.tenant, responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, serverTokenResponse.token_type, oboAssertion);\r\n }\r\n // refreshToken\r\n var cachedRefreshToken = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.refresh_token)) {\r\n cachedRefreshToken = RefreshTokenEntity.createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token || Constants.EMPTY_STRING, this.clientId, serverTokenResponse.foci, oboAssertion);\r\n }\r\n // appMetadata\r\n var cachedAppMetadata = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.foci)) {\r\n cachedAppMetadata = AppMetadataEntity.createAppMetadataEntity(this.clientId, env, serverTokenResponse.foci);\r\n }\r\n return new CacheRecord(cachedAccount, cachedIdToken, cachedAccessToken, cachedRefreshToken, cachedAppMetadata);\r\n };\r\n /**\r\n * Generate Account\r\n * @param serverTokenResponse\r\n * @param idToken\r\n * @param authority\r\n */\r\n ResponseHandler.prototype.generateAccountEntity = function (serverTokenResponse, idToken, authority, oboAssertion, authCodePayload) {\r\n var authorityType = authority.authorityType;\r\n var cloudGraphHostName = authCodePayload ? authCodePayload.cloud_graph_host_name : \"\";\r\n var msGraphhost = authCodePayload ? authCodePayload.msgraph_host : \"\";\r\n // ADFS does not require client_info in the response\r\n if (authorityType === AuthorityType.Adfs) {\r\n this.logger.verbose(\"Authority type is ADFS, creating ADFS account\");\r\n return AccountEntity.createGenericAccount(authority, this.homeAccountIdentifier, idToken, oboAssertion, cloudGraphHostName, msGraphhost);\r\n }\r\n // This fallback applies to B2C as well as they fall under an AAD account type.\r\n if (StringUtils.isEmpty(serverTokenResponse.client_info) && authority.protocolMode === \"AAD\") {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n return serverTokenResponse.client_info ?\r\n AccountEntity.createAccount(serverTokenResponse.client_info, this.homeAccountIdentifier, authority, idToken, oboAssertion, cloudGraphHostName, msGraphhost) :\r\n AccountEntity.createGenericAccount(authority, this.homeAccountIdentifier, idToken, oboAssertion, cloudGraphHostName, msGraphhost);\r\n };\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n ResponseHandler.generateAuthenticationResult = function (cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenObj, requestState) {\r\n var _a, _b, _c;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var accessToken, responseScopes, expiresOn, extExpiresOn, familyId, popTokenGenerator, uid, tid;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n accessToken = \"\";\r\n responseScopes = [];\r\n expiresOn = null;\r\n familyId = Constants.EMPTY_STRING;\r\n if (!cacheRecord.accessToken) return [3 /*break*/, 4];\r\n if (!(cacheRecord.accessToken.tokenType === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n if (!request.resourceRequestMethod || !request.resourceRequestUri) {\r\n throw ClientConfigurationError.createResourceRequestParametersRequiredError();\r\n }\r\n return [4 /*yield*/, popTokenGenerator.signPopToken(cacheRecord.accessToken.secret, request.resourceRequestMethod, request.resourceRequestUri, request.shrClaims)];\r\n case 1:\r\n accessToken = _d.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n accessToken = cacheRecord.accessToken.secret;\r\n _d.label = 3;\r\n case 3:\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n _d.label = 4;\r\n case 4:\r\n if (cacheRecord.appMetadata) {\r\n familyId = cacheRecord.appMetadata.familyId === THE_FAMILY_ID ? THE_FAMILY_ID : Constants.EMPTY_STRING;\r\n }\r\n uid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.oid) || (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.sub) || Constants.EMPTY_STRING;\r\n tid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.tid) || Constants.EMPTY_STRING;\r\n return [2 /*return*/, {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: cacheRecord.account ? cacheRecord.account.getAccountInfo() : null,\r\n idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\r\n idTokenClaims: idTokenObj ? idTokenObj.claims : {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n extExpiresOn: extExpiresOn,\r\n familyId: familyId,\r\n tokenType: ((_a = cacheRecord.accessToken) === null || _a === void 0 ? void 0 : _a.tokenType) || Constants.EMPTY_STRING,\r\n state: requestState ? requestState.userRequestState : Constants.EMPTY_STRING,\r\n cloudGraphHostName: ((_b = cacheRecord.account) === null || _b === void 0 ? void 0 : _b.cloudGraphHostName) || Constants.EMPTY_STRING,\r\n msGraphHost: ((_c = cacheRecord.account) === null || _c === void 0 ? void 0 : _c.msGraphHost) || Constants.EMPTY_STRING\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n return ResponseHandler;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n */\r\nvar AuthorizationCodeClient = /** @class */ (function (_super) {\r\n __extends(AuthorizationCodeClient, _super);\r\n function AuthorizationCodeClient(configuration) {\r\n return _super.call(this, configuration) || this;\r\n }\r\n /**\r\n * Creates the URL of the authorization request letting the user input credentials and consent to the\r\n * application. The URL target the /authorize endpoint of the authority configured in the\r\n * application object.\r\n *\r\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\r\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\r\n * acquireToken(AuthorizationCodeRequest)\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.getAuthCodeUrl = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var queryString;\r\n return __generator(this, function (_a) {\r\n queryString = this.createAuthCodeUrlQueryString(request);\r\n return [2 /*return*/, this.authority.authorizationEndpoint + \"?\" + queryString];\r\n });\r\n });\r\n };\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.acquireToken = function (request, authCodePayload) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reqTimestamp, response, responseHandler;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.info(\"in acquireToken call\");\r\n if (!request || StringUtils.isEmpty(request.code)) {\r\n throw ClientAuthError.createTokenRequestCannotBeMadeError();\r\n }\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.executeTokenRequest(this.authority, request)];\r\n case 1:\r\n response = _a.sent();\r\n responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n return [4 /*yield*/, responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, authCodePayload)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Handles the hash fragment response from public client code request. Returns a code response used by\r\n * the client to exchange for a token in acquireToken.\r\n * @param hashFragment\r\n */\r\n AuthorizationCodeClient.prototype.handleFragmentResponse = function (hashFragment, cachedState) {\r\n // Handle responses.\r\n var responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\r\n // Deserialize hash fragment response parameters.\r\n var hashUrlString = new UrlString(hashFragment);\r\n // Deserialize hash fragment response parameters.\r\n var serverParams = UrlString.getDeserializedHash(hashUrlString.getHash());\r\n // Get code response\r\n responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState, this.cryptoUtils);\r\n // throw when there is no auth code in the response\r\n if (!serverParams.code) {\r\n throw ClientAuthError.createNoAuthCodeInServerResponseError();\r\n }\r\n return __assign(__assign({}, serverParams), { \r\n // Code param is optional in ServerAuthorizationCodeResponse but required in AuthorizationCodePaylod\r\n code: serverParams.code });\r\n };\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n AuthorizationCodeClient.prototype.getLogoutUri = function (logoutRequest) {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw ClientConfigurationError.createEmptyLogoutRequestError();\r\n }\r\n if (logoutRequest.account) {\r\n // Clear given account.\r\n this.cacheManager.removeAccount(AccountEntity.generateAccountCacheKey(logoutRequest.account));\r\n }\r\n else {\r\n // Clear all accounts and tokens\r\n this.cacheManager.clear();\r\n }\r\n var queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n // Construct logout URI.\r\n return StringUtils.isEmpty(queryString) ? this.authority.endSessionEndpoint : this.authority.endSessionEndpoint + \"?\" + queryString;\r\n };\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.executeTokenRequest = function (authority, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var thumbprint, requestBody, headers;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes\r\n };\r\n return [4 /*yield*/, this.createTokenRequestBody(request)];\r\n case 1:\r\n requestBody = _a.sent();\r\n headers = this.createDefaultTokenRequestHeaders();\r\n return [2 /*return*/, this.executePostToTokenEndpoint(authority.tokenEndpoint, requestBody, headers, thumbprint)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createTokenRequestBody = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var parameterBuilder, clientAssertion, popTokenGenerator, cnfString, correlationId;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n // validate the redirectUri (to be a non null value)\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n parameterBuilder.addScopes(request.scopes);\r\n // add code: user set, not validated\r\n parameterBuilder.addAuthorizationCode(request.code);\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n parameterBuilder.addCodeVerifier(request.codeVerifier);\r\n }\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\r\n parameterBuilder.addClientInfo();\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP && !!request.resourceRequestMethod && !!request.resourceRequestUri)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(request.resourceRequestMethod, request.resourceRequestUri)];\r\n case 1:\r\n cnfString = _a.sent();\r\n parameterBuilder.addPopToken(cnfString);\r\n _a.label = 2;\r\n case 2:\r\n correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n return [2 /*return*/, parameterBuilder.createQueryString()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createAuthCodeUrlQueryString = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n var requestScopes = __spreadArrays(request.scopes || [], request.extraScopesToConsent || []);\r\n parameterBuilder.addScopes(requestScopes);\r\n // validate the redirectUri (to be a non null value)\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n // generate the correlationId if not set by the user and add\r\n var correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n // add response_mode. If not passed in it defaults to query.\r\n parameterBuilder.addResponseMode(request.responseMode);\r\n // add response_type = code\r\n parameterBuilder.addResponseTypeCode();\r\n // add library info parameters\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n // add client_info=1\r\n parameterBuilder.addClientInfo();\r\n if (request.codeChallenge && request.codeChallengeMethod) {\r\n parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\r\n }\r\n if (request.prompt) {\r\n parameterBuilder.addPrompt(request.prompt);\r\n }\r\n if (request.domainHint) {\r\n parameterBuilder.addDomainHint(request.domainHint);\r\n }\r\n // Add sid or loginHint with preference for sid -> loginHint -> username of AccountInfo object\r\n if (request.sid) {\r\n parameterBuilder.addSid(request.sid);\r\n }\r\n else if (request.account) {\r\n var accountSid = this.extractAccountSid(request.account);\r\n // If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n if (accountSid) {\r\n parameterBuilder.addSid(accountSid);\r\n }\r\n else if (request.loginHint) {\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n }\r\n else if (request.account.username) {\r\n // Fallback to account username if provided\r\n parameterBuilder.addLoginHint(request.account.username);\r\n }\r\n }\r\n else if (request.loginHint) {\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n }\r\n if (request.nonce) {\r\n parameterBuilder.addNonce(request.nonce);\r\n }\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createLogoutUrlQueryString = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n if (request.postLogoutRedirectUri) {\r\n parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\r\n }\r\n if (request.correlationId) {\r\n parameterBuilder.addCorrelationId(request.correlationId);\r\n }\r\n if (request.idTokenHint) {\r\n parameterBuilder.addIdTokenHint(request.idTokenHint);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n /**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account\r\n */\r\n AuthorizationCodeClient.prototype.extractAccountSid = function (account) {\r\n if (account.idTokenClaims) {\r\n var tokenClaims = account.idTokenClaims;\r\n return tokenClaims.sid || null;\r\n }\r\n return null;\r\n };\r\n return AuthorizationCodeClient;\r\n}(BaseClient));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * OAuth2.0 Device code client\r\n */\r\nvar DeviceCodeClient = /** @class */ (function (_super) {\r\n __extends(DeviceCodeClient, _super);\r\n function DeviceCodeClient(configuration) {\r\n return _super.call(this, configuration) || this;\r\n }\r\n /**\r\n * Gets device code from device code endpoint, calls back to with device code response, and\r\n * polls token endpoint to exchange device code for tokens\r\n * @param request\r\n */\r\n DeviceCodeClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var deviceCodeResponse, reqTimestamp, response, responseHandler;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getDeviceCode(request)];\r\n case 1:\r\n deviceCodeResponse = _a.sent();\r\n request.deviceCodeCallback(deviceCodeResponse);\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.acquireTokenWithDeviceCode(request, deviceCodeResponse)];\r\n case 2:\r\n response = _a.sent();\r\n responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response);\r\n return [4 /*yield*/, responseHandler.handleServerTokenResponse(response, this.authority, reqTimestamp, request)];\r\n case 3: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates device code request and executes http GET\r\n * @param request\r\n */\r\n DeviceCodeClient.prototype.getDeviceCode = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var queryString, headers, thumbprint;\r\n return __generator(this, function (_a) {\r\n queryString = this.createQueryString(request);\r\n headers = this.createDefaultTokenRequestHeaders();\r\n thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes\r\n };\r\n return [2 /*return*/, this.executePostRequestToDeviceCodeEndpoint(this.authority.deviceCodeEndpoint, queryString, headers, thumbprint)];\r\n });\r\n });\r\n };\r\n /**\r\n * Executes POST request to device code endpoint\r\n * @param deviceCodeEndpoint\r\n * @param queryString\r\n * @param headers\r\n */\r\n DeviceCodeClient.prototype.executePostRequestToDeviceCodeEndpoint = function (deviceCodeEndpoint, queryString, headers, thumbprint) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, userCode, deviceCode, verificationUri, expiresIn, interval, message;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, this.networkManager.sendPostRequest(thumbprint, deviceCodeEndpoint, {\r\n body: queryString,\r\n headers: headers\r\n })];\r\n case 1:\r\n _a = (_b.sent()).body, userCode = _a.user_code, deviceCode = _a.device_code, verificationUri = _a.verification_uri, expiresIn = _a.expires_in, interval = _a.interval, message = _a.message;\r\n return [2 /*return*/, {\r\n userCode: userCode,\r\n deviceCode: deviceCode,\r\n verificationUri: verificationUri,\r\n expiresIn: expiresIn,\r\n interval: interval,\r\n message: message\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Create device code endpoint query parameters and returns string\r\n */\r\n DeviceCodeClient.prototype.createQueryString = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addScopes(request.scopes);\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n /**\r\n * Creates token request with device code response and polls token endpoint at interval set by the device code\r\n * response\r\n * @param request\r\n * @param deviceCodeResponse\r\n */\r\n DeviceCodeClient.prototype.acquireTokenWithDeviceCode = function (request, deviceCodeResponse) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestBody, headers, userSpecifiedTimeout, deviceCodeExpirationTime, pollingIntervalMilli;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n requestBody = this.createTokenRequestBody(request, deviceCodeResponse);\r\n headers = this.createDefaultTokenRequestHeaders();\r\n userSpecifiedTimeout = request.timeout ? TimeUtils.nowSeconds() + request.timeout : undefined;\r\n deviceCodeExpirationTime = TimeUtils.nowSeconds() + deviceCodeResponse.expiresIn;\r\n pollingIntervalMilli = deviceCodeResponse.interval * 1000;\r\n /*\r\n * Poll token endpoint while (device code is not expired AND operation has not been cancelled by\r\n * setting CancellationToken.cancel = true). POST request is sent at interval set by pollingIntervalMilli\r\n */\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var intervalId = setInterval(function () { return __awaiter(_this, void 0, void 0, function () {\r\n var thumbprint, response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 6, , 7]);\r\n if (!request.cancel) return [3 /*break*/, 1];\r\n this.logger.error(\"Token request cancelled by setting DeviceCodeRequest.cancel = true\");\r\n clearInterval(intervalId);\r\n reject(ClientAuthError.createDeviceCodeCancelledError());\r\n return [3 /*break*/, 5];\r\n case 1:\r\n if (!(userSpecifiedTimeout && userSpecifiedTimeout < deviceCodeExpirationTime && TimeUtils.nowSeconds() > userSpecifiedTimeout)) return [3 /*break*/, 2];\r\n this.logger.error(\"User defined timeout for device code polling reached. The timeout was set for \" + userSpecifiedTimeout);\r\n clearInterval(intervalId);\r\n reject(ClientAuthError.createUserTimeoutReachedError());\r\n return [3 /*break*/, 5];\r\n case 2:\r\n if (!(TimeUtils.nowSeconds() > deviceCodeExpirationTime)) return [3 /*break*/, 3];\r\n if (userSpecifiedTimeout) {\r\n this.logger.verbose(\"User specified timeout ignored as the device code has expired before the timeout elapsed. The user specified timeout was set for \" + userSpecifiedTimeout);\r\n }\r\n this.logger.error(\"Device code expired. Expiration time of device code was \" + deviceCodeExpirationTime);\r\n clearInterval(intervalId);\r\n reject(ClientAuthError.createDeviceCodeExpiredError());\r\n return [3 /*break*/, 5];\r\n case 3:\r\n thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes\r\n };\r\n return [4 /*yield*/, this.executePostToTokenEndpoint(this.authority.tokenEndpoint, requestBody, headers, thumbprint)];\r\n case 4:\r\n response = _a.sent();\r\n if (response.body && response.body.error === Constants.AUTHORIZATION_PENDING) {\r\n // user authorization is pending. Sleep for polling interval and try again\r\n this.logger.info(response.body.error_description || \"no_error_description\");\r\n }\r\n else {\r\n clearInterval(intervalId);\r\n resolve(response.body);\r\n }\r\n _a.label = 5;\r\n case 5: return [3 /*break*/, 7];\r\n case 6:\r\n error_1 = _a.sent();\r\n clearInterval(intervalId);\r\n reject(error_1);\r\n return [3 /*break*/, 7];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n }); }, pollingIntervalMilli);\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Creates query parameters and converts to string.\r\n * @param request\r\n * @param deviceCodeResponse\r\n */\r\n DeviceCodeClient.prototype.createTokenRequestBody = function (request, deviceCodeResponse) {\r\n var requestParameters = new RequestParameterBuilder();\r\n requestParameters.addScopes(request.scopes);\r\n requestParameters.addClientId(this.config.authOptions.clientId);\r\n requestParameters.addGrantType(GrantType.DEVICE_CODE_GRANT);\r\n requestParameters.addDeviceCode(deviceCodeResponse.deviceCode);\r\n var correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n requestParameters.addCorrelationId(correlationId);\r\n requestParameters.addClientInfo();\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n requestParameters.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n return requestParameters.createQueryString();\r\n };\r\n return DeviceCodeClient;\r\n}(BaseClient));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * OAuth2.0 refresh token client\r\n */\r\nvar RefreshTokenClient = /** @class */ (function (_super) {\r\n __extends(RefreshTokenClient, _super);\r\n function RefreshTokenClient(configuration) {\r\n return _super.call(this, configuration) || this;\r\n }\r\n RefreshTokenClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reqTimestamp, response, responseHandler;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.executeTokenRequest(request, this.authority)];\r\n case 1:\r\n response = _a.sent();\r\n responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n return [2 /*return*/, responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, undefined, undefined, true)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.acquireTokenByRefreshToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isFOCI, noFamilyRTInCache, clientMismatchErrorWithFamilyRT;\r\n return __generator(this, function (_a) {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment, this.config.authOptions.clientId);\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n return [2 /*return*/, this.acquireTokenWithCachedRefreshToken(request, true)];\r\n }\r\n catch (e) {\r\n noFamilyRTInCache = e instanceof ClientAuthError && e.errorCode === ClientAuthErrorMessage.noTokensFoundError.code;\r\n clientMismatchErrorWithFamilyRT = e instanceof ServerError && e.errorCode === Errors.INVALID_GRANT_ERROR && e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n return [2 /*return*/, this.acquireTokenWithCachedRefreshToken(request, false)];\r\n // throw in all other cases\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n // fall back to application refresh token acquisition\r\n return [2 /*return*/, this.acquireTokenWithCachedRefreshToken(request, false)];\r\n });\r\n });\r\n };\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.acquireTokenWithCachedRefreshToken = function (request, foci) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var refreshToken, refreshTokenRequest;\r\n return __generator(this, function (_a) {\r\n refreshToken = this.cacheManager.readRefreshTokenFromCache(this.config.authOptions.clientId, request.account, foci);\r\n // no refresh Token\r\n if (!refreshToken) {\r\n throw ClientAuthError.createNoTokensFoundError();\r\n }\r\n refreshTokenRequest = __assign(__assign({}, request), { refreshToken: refreshToken.secret, authenticationScheme: AuthenticationScheme.BEARER });\r\n return [2 /*return*/, this.acquireToken(refreshTokenRequest)];\r\n });\r\n });\r\n };\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n RefreshTokenClient.prototype.executeTokenRequest = function (request, authority) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestBody, headers, thumbprint;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.createTokenRequestBody(request)];\r\n case 1:\r\n requestBody = _a.sent();\r\n headers = this.createDefaultTokenRequestHeaders();\r\n thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes\r\n };\r\n return [2 /*return*/, this.executePostToTokenEndpoint(authority.tokenEndpoint, requestBody, headers, thumbprint)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.createTokenRequestBody = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var parameterBuilder, correlationId, clientAssertion, popTokenGenerator, _a, _b;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n parameterBuilder.addScopes(request.scopes);\r\n parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\r\n parameterBuilder.addClientInfo();\r\n correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n parameterBuilder.addRefreshToken(request.refreshToken);\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n if (!request.resourceRequestMethod || !request.resourceRequestUri) {\r\n throw ClientConfigurationError.createResourceRequestParametersRequiredError();\r\n }\r\n _b = (_a = parameterBuilder).addPopToken;\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(request.resourceRequestMethod, request.resourceRequestUri)];\r\n case 1:\r\n _b.apply(_a, [_c.sent()]);\r\n _c.label = 2;\r\n case 2:\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n return [2 /*return*/, parameterBuilder.createQueryString()];\r\n }\r\n });\r\n });\r\n };\r\n return RefreshTokenClient;\r\n}(BaseClient));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * OAuth2.0 client credential grant\r\n */\r\nvar ClientCredentialClient = /** @class */ (function (_super) {\r\n __extends(ClientCredentialClient, _super);\r\n function ClientCredentialClient(configuration) {\r\n return _super.call(this, configuration) || this;\r\n }\r\n /**\r\n * Public API to acquire a token with ClientCredential Flow for Confidential clients\r\n * @param request\r\n */\r\n ClientCredentialClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cachedAuthenticationResult;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.scopeSet = new ScopeSet(request.scopes || []);\r\n if (!request.skipCache) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.executeTokenRequest(request, this.authority)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2: return [4 /*yield*/, this.getCachedAuthenticationResult(request)];\r\n case 3:\r\n cachedAuthenticationResult = _a.sent();\r\n if (!cachedAuthenticationResult) return [3 /*break*/, 4];\r\n return [2 /*return*/, cachedAuthenticationResult];\r\n case 4: return [4 /*yield*/, this.executeTokenRequest(request, this.authority)];\r\n case 5: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * looks up cache if the tokens are cached already\r\n */\r\n ClientCredentialClient.prototype.getCachedAuthenticationResult = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cachedAccessToken;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n cachedAccessToken = this.readAccessTokenFromCache();\r\n if (!cachedAccessToken ||\r\n TimeUtils.isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n return [2 /*return*/, null];\r\n }\r\n return [4 /*yield*/, ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, {\r\n account: null,\r\n idToken: null,\r\n accessToken: cachedAccessToken,\r\n refreshToken: null,\r\n appMetadata: null\r\n }, true, request)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Reads access token from the cache\r\n * TODO: Move this call to cacheManager instead\r\n */\r\n ClientCredentialClient.prototype.readAccessTokenFromCache = function () {\r\n var accessTokenFilter = {\r\n homeAccountId: \"\",\r\n environment: this.authority.canonicalAuthorityUrlComponents.HostNameAndPort,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n clientId: this.config.authOptions.clientId,\r\n realm: this.authority.tenant,\r\n target: this.scopeSet.printScopesLowerCase()\r\n };\r\n var credentialCache = this.cacheManager.getCredentialsFilteredBy(accessTokenFilter);\r\n var accessTokens = Object.keys(credentialCache.accessTokens).map(function (key) { return credentialCache.accessTokens[key]; });\r\n if (accessTokens.length < 1) {\r\n return null;\r\n }\r\n else if (accessTokens.length > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n return accessTokens[0];\r\n };\r\n /**\r\n * Makes a network call to request the token from the service\r\n * @param request\r\n * @param authority\r\n */\r\n ClientCredentialClient.prototype.executeTokenRequest = function (request, authority) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestBody, headers, thumbprint, reqTimestamp, response, responseHandler, tokenResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n requestBody = this.createTokenRequestBody(request);\r\n headers = this.createDefaultTokenRequestHeaders();\r\n thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes\r\n };\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.executePostToTokenEndpoint(authority.tokenEndpoint, requestBody, headers, thumbprint)];\r\n case 1:\r\n response = _a.sent();\r\n responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n return [4 /*yield*/, responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request)];\r\n case 2:\r\n tokenResponse = _a.sent();\r\n return [2 /*return*/, tokenResponse];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * generate the request to the server in the acceptable format\r\n * @param request\r\n */\r\n ClientCredentialClient.prototype.createTokenRequestBody = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n parameterBuilder.addScopes(request.scopes, false);\r\n parameterBuilder.addGrantType(GrantType.CLIENT_CREDENTIALS_GRANT);\r\n var correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n var clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n return ClientCredentialClient;\r\n}(BaseClient));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * On-Behalf-Of client\r\n */\r\nvar OnBehalfOfClient = /** @class */ (function (_super) {\r\n __extends(OnBehalfOfClient, _super);\r\n function OnBehalfOfClient(configuration) {\r\n return _super.call(this, configuration) || this;\r\n }\r\n /**\r\n * Public API to acquire tokens with on behalf of flow\r\n * @param request\r\n */\r\n OnBehalfOfClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cachedAuthenticationResult;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.scopeSet = new ScopeSet(request.scopes || []);\r\n if (!request.skipCache) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.executeTokenRequest(request, this.authority)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2: return [4 /*yield*/, this.getCachedAuthenticationResult(request)];\r\n case 3:\r\n cachedAuthenticationResult = _a.sent();\r\n if (!cachedAuthenticationResult) return [3 /*break*/, 4];\r\n return [2 /*return*/, cachedAuthenticationResult];\r\n case 4: return [4 /*yield*/, this.executeTokenRequest(request, this.authority)];\r\n case 5: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * look up cache for tokens\r\n * @param request\r\n */\r\n OnBehalfOfClient.prototype.getCachedAuthenticationResult = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cachedAccessToken, cachedIdToken, idTokenObject, cachedAccount, localAccountId, accountInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n cachedAccessToken = this.readAccessTokenFromCache(request);\r\n if (!cachedAccessToken ||\r\n TimeUtils.isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n return [2 /*return*/, null];\r\n }\r\n cachedIdToken = this.readIdTokenFromCache(request);\r\n cachedAccount = null;\r\n if (cachedIdToken) {\r\n idTokenObject = new AuthToken(cachedIdToken.secret, this.config.cryptoInterface);\r\n localAccountId = idTokenObject.claims.oid ? idTokenObject.claims.oid : idTokenObject.claims.sub;\r\n accountInfo = {\r\n homeAccountId: cachedIdToken.homeAccountId,\r\n environment: cachedIdToken.environment,\r\n tenantId: cachedIdToken.realm,\r\n username: Constants.EMPTY_STRING,\r\n localAccountId: localAccountId || \"\"\r\n };\r\n cachedAccount = this.readAccountFromCache(accountInfo);\r\n }\r\n return [4 /*yield*/, ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, {\r\n account: cachedAccount,\r\n accessToken: cachedAccessToken,\r\n idToken: cachedIdToken,\r\n refreshToken: null,\r\n appMetadata: null\r\n }, true, request, idTokenObject)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * read access token from cache TODO: CacheManager API should be used here\r\n * @param request\r\n */\r\n OnBehalfOfClient.prototype.readAccessTokenFromCache = function (request) {\r\n var accessTokenFilter = {\r\n environment: this.authority.canonicalAuthorityUrlComponents.HostNameAndPort,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n clientId: this.config.authOptions.clientId,\r\n realm: this.authority.tenant,\r\n target: this.scopeSet.printScopesLowerCase(),\r\n oboAssertion: request.oboAssertion\r\n };\r\n var credentialCache = this.cacheManager.getCredentialsFilteredBy(accessTokenFilter);\r\n var accessTokens = Object.keys(credentialCache.accessTokens).map(function (key) { return credentialCache.accessTokens[key]; });\r\n var numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n return null;\r\n }\r\n else if (numAccessTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n return accessTokens[0];\r\n };\r\n /**\r\n * read idtoken from cache TODO: CacheManager API should be used here instead\r\n * @param request\r\n */\r\n OnBehalfOfClient.prototype.readIdTokenFromCache = function (request) {\r\n var idTokenFilter = {\r\n environment: this.authority.canonicalAuthorityUrlComponents.HostNameAndPort,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: this.config.authOptions.clientId,\r\n realm: this.authority.tenant,\r\n oboAssertion: request.oboAssertion\r\n };\r\n var credentialCache = this.cacheManager.getCredentialsFilteredBy(idTokenFilter);\r\n var idTokens = Object.keys(credentialCache.idTokens).map(function (key) { return credentialCache.idTokens[key]; });\r\n // When acquiring a token on behalf of an application, there might not be an id token in the cache\r\n if (idTokens.length < 1) {\r\n return null;\r\n }\r\n return idTokens[0];\r\n };\r\n /**\r\n * read account from cache, TODO: CacheManager API should be used here instead\r\n * @param account\r\n */\r\n OnBehalfOfClient.prototype.readAccountFromCache = function (account) {\r\n return this.cacheManager.readAccountFromCache(account);\r\n };\r\n /**\r\n * Make a network call to the server requesting credentials\r\n * @param request\r\n * @param authority\r\n */\r\n OnBehalfOfClient.prototype.executeTokenRequest = function (request, authority) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestBody, headers, thumbprint, reqTimestamp, response, responseHandler, tokenResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n requestBody = this.createTokenRequestBody(request);\r\n headers = this.createDefaultTokenRequestHeaders();\r\n thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes\r\n };\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.executePostToTokenEndpoint(authority.tokenEndpoint, requestBody, headers, thumbprint)];\r\n case 1:\r\n response = _a.sent();\r\n responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n return [4 /*yield*/, responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request)];\r\n case 2:\r\n tokenResponse = _a.sent();\r\n return [2 /*return*/, tokenResponse];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * generate a server request in accepable format\r\n * @param request\r\n */\r\n OnBehalfOfClient.prototype.createTokenRequestBody = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n parameterBuilder.addScopes(request.scopes);\r\n parameterBuilder.addGrantType(GrantType.JWT_BEARER);\r\n parameterBuilder.addClientInfo();\r\n var correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n parameterBuilder.addRequestTokenUse(AADServerParamKeys.ON_BEHALF_OF);\r\n parameterBuilder.addOboAssertion(request.oboAssertion);\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n var clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n return OnBehalfOfClient;\r\n}(BaseClient));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentFlowClient = /** @class */ (function (_super) {\r\n __extends(SilentFlowClient, _super);\r\n function SilentFlowClient(configuration) {\r\n return _super.call(this, configuration) || this;\r\n }\r\n /**\r\n * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew\r\n * the given token and returns the renewed token\r\n * @param request\r\n */\r\n SilentFlowClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1, refreshTokenClient;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.acquireCachedToken(request)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof ClientAuthError && e_1.errorCode === ClientAuthErrorMessage.tokenRefreshRequired.code) {\r\n refreshTokenClient = new RefreshTokenClient(this.config);\r\n return [2 /*return*/, refreshTokenClient.acquireTokenByRefreshToken(request)];\r\n }\r\n else {\r\n throw e_1;\r\n }\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n SilentFlowClient.prototype.acquireCachedToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestScopes, environment, cacheRecord;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n requestScopes = new ScopeSet(request.scopes || []);\r\n environment = request.authority || this.authority.getPreferredCache();\r\n cacheRecord = this.cacheManager.readCacheRecord(request.account, this.config.authOptions.clientId, requestScopes, environment);\r\n if (!this.isRefreshRequired(request, cacheRecord.accessToken)) return [3 /*break*/, 1];\r\n throw ClientAuthError.createRefreshRequiredError();\r\n case 1:\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n return [4 /*yield*/, this.generateResultFromCacheRecord(cacheRecord, request)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n SilentFlowClient.prototype.generateResultFromCacheRecord = function (cacheRecord, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var idTokenObj;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (cacheRecord.idToken) {\r\n idTokenObj = new AuthToken(cacheRecord.idToken.secret, this.config.cryptoInterface);\r\n }\r\n return [4 /*yield*/, ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenObj)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Given a request object and an accessTokenEntity determine if the accessToken needs to be refreshed\r\n * @param request\r\n * @param cachedAccessToken\r\n */\r\n SilentFlowClient.prototype.isRefreshRequired = function (request, cachedAccessToken) {\r\n if (request.forceRefresh || request.claims) {\r\n // Must refresh due to request parameters\r\n return true;\r\n }\r\n else if (!cachedAccessToken || TimeUtils.isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n // Must refresh due to expired or non-existent access_token\r\n return true;\r\n }\r\n return false;\r\n };\r\n return SilentFlowClient;\r\n}(BaseClient));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Oauth2.0 Password grant client\r\n * Note: We are only supporting public clients for password grant and for purely testing purposes\r\n */\r\nvar UsernamePasswordClient = /** @class */ (function (_super) {\r\n __extends(UsernamePasswordClient, _super);\r\n function UsernamePasswordClient(configuration) {\r\n return _super.call(this, configuration) || this;\r\n }\r\n /**\r\n * API to acquire a token by passing the username and password to the service in exchage of credentials\r\n * password_grant\r\n * @param request\r\n */\r\n UsernamePasswordClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reqTimestamp, response, responseHandler, tokenResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.info(\"in acquireToken call\");\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.executeTokenRequest(this.authority, request)];\r\n case 1:\r\n response = _a.sent();\r\n responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n tokenResponse = responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request);\r\n return [2 /*return*/, tokenResponse];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n UsernamePasswordClient.prototype.executeTokenRequest = function (authority, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var thumbprint, requestBody, headers;\r\n return __generator(this, function (_a) {\r\n thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes\r\n };\r\n requestBody = this.createTokenRequestBody(request);\r\n headers = this.createDefaultTokenRequestHeaders();\r\n return [2 /*return*/, this.executePostToTokenEndpoint(authority.tokenEndpoint, requestBody, headers, thumbprint)];\r\n });\r\n });\r\n };\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n UsernamePasswordClient.prototype.createTokenRequestBody = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n parameterBuilder.addUsername(request.username);\r\n parameterBuilder.addPassword(request.password);\r\n parameterBuilder.addScopes(request.scopes);\r\n parameterBuilder.addGrantType(GrantType.RESOURCE_OWNER_PASSWORD_GRANT);\r\n parameterBuilder.addClientInfo();\r\n var correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n return UsernamePasswordClient;\r\n}(BaseClient));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isOpenIdConfigResponse(response) {\r\n return (response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") &&\r\n response.hasOwnProperty(\"end_session_endpoint\") &&\r\n response.hasOwnProperty(\"issuer\"));\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nvar ProtocolMode;\r\n(function (ProtocolMode) {\r\n ProtocolMode[\"AAD\"] = \"AAD\";\r\n ProtocolMode[\"OIDC\"] = \"OIDC\";\r\n})(ProtocolMode || (ProtocolMode = {}));\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar AuthorityMetadataEntity = /** @class */ (function () {\r\n function AuthorityMetadataEntity() {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n }\r\n /**\r\n * Update the entity with new aliases, preferred_cache and preferred_network values\r\n * @param metadata\r\n * @param fromNetwork\r\n */\r\n AuthorityMetadataEntity.prototype.updateCloudDiscoveryMetadata = function (metadata, fromNetwork) {\r\n this.aliases = metadata.aliases;\r\n this.preferred_cache = metadata.preferred_cache;\r\n this.preferred_network = metadata.preferred_network;\r\n this.aliasesFromNetwork = fromNetwork;\r\n };\r\n /**\r\n * Update the entity with new endpoints\r\n * @param metadata\r\n * @param fromNetwork\r\n */\r\n AuthorityMetadataEntity.prototype.updateEndpointMetadata = function (metadata, fromNetwork) {\r\n this.authorization_endpoint = metadata.authorization_endpoint;\r\n this.token_endpoint = metadata.token_endpoint;\r\n this.end_session_endpoint = metadata.end_session_endpoint;\r\n this.issuer = metadata.issuer;\r\n this.endpointsFromNetwork = fromNetwork;\r\n };\r\n /**\r\n * Save the authority that was used to create this cache entry\r\n * @param authority\r\n */\r\n AuthorityMetadataEntity.prototype.updateCanonicalAuthority = function (authority) {\r\n this.canonical_authority = authority;\r\n };\r\n /**\r\n * Reset the exiresAt value\r\n */\r\n AuthorityMetadataEntity.prototype.resetExpiresAt = function () {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n };\r\n /**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\n AuthorityMetadataEntity.prototype.isExpired = function () {\r\n return this.expiresAt <= TimeUtils.nowSeconds();\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AuthorityMetadataEntity.isAuthorityMetadataEntity = function (key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"end_session_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\"));\r\n };\r\n return AuthorityMetadataEntity;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryResponse(response) {\r\n return (response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\"));\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n */\r\nvar Authority = /** @class */ (function () {\r\n function Authority(authority, networkInterface, cacheManager, authorityOptions) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n }\r\n Object.defineProperty(Authority.prototype, \"authorityType\", {\r\n // See above for AuthorityType\r\n get: function () {\r\n var pathSegments = this.canonicalAuthorityUrlComponents.PathSegments;\r\n if (pathSegments.length && pathSegments[0].toLowerCase() === Constants.ADFS) {\r\n return AuthorityType.Adfs;\r\n }\r\n return AuthorityType.Default;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"protocolMode\", {\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n get: function () {\r\n return this.authorityOptions.protocolMode;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"options\", {\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n get: function () {\r\n return this.authorityOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"canonicalAuthority\", {\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n get: function () {\r\n return this._canonicalAuthority.urlString;\r\n },\r\n /**\r\n * Sets canonical authority.\r\n */\r\n set: function (url) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"canonicalAuthorityUrlComponents\", {\r\n /**\r\n * Get authority components.\r\n */\r\n get: function () {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\r\n }\r\n return this._canonicalAuthorityUrlComponents;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"hostnameAndPort\", {\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n get: function () {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"tenant\", {\r\n /**\r\n * Get tenant for authority.\r\n */\r\n get: function () {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"authorizationEndpoint\", {\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.authorization_endpoint);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"tokenEndpoint\", {\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.token_endpoint);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"deviceCodeEndpoint\", {\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"endSessionEndpoint\", {\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.end_session_endpoint);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"selfSignedJwtAudience\", {\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.issuer);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n Authority.prototype.replaceTenant = function (urlString) {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n };\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString\r\n */\r\n Authority.prototype.replacePath = function (urlString) {\r\n var endpoint = urlString;\r\n var cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n var cachedAuthorityParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n var currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n currentAuthorityParts.forEach(function (currentPart, index) {\r\n var cachedPart = cachedAuthorityParts[index];\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(\"/\" + cachedPart + \"/\", \"/\" + currentPart + \"/\");\r\n }\r\n });\r\n return endpoint;\r\n };\r\n Object.defineProperty(Authority.prototype, \"defaultOpenIdConfigurationEndpoint\", {\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n get: function () {\r\n if (this.authorityType === AuthorityType.Adfs || this.protocolMode === ProtocolMode.OIDC) {\r\n return this.canonicalAuthority + \".well-known/openid-configuration\";\r\n }\r\n return this.canonicalAuthority + \"v2.0/.well-known/openid-configuration\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Boolean that returns whethr or not tenant discovery has been completed.\r\n */\r\n Authority.prototype.discoveryComplete = function () {\r\n return !!this.metadata;\r\n };\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n Authority.prototype.resolveEndpointsAsync = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadataEntity, cloudDiscoverySource, endpointSource, cacheKey;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = new AuthorityMetadataEntity();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n return [4 /*yield*/, this.updateCloudDiscoveryMetadata(metadataEntity)];\r\n case 1:\r\n cloudDiscoverySource = _a.sent();\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n return [4 /*yield*/, this.updateEndpointMetadata(metadataEntity)];\r\n case 2:\r\n endpointSource = _a.sent();\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.resetExpiresAt();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity\r\n */\r\n Authority.prototype.updateEndpointMetadata = function (metadataEntity) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadata;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metadata = this.getEndpointMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateEndpointMetadata(metadata, false);\r\n return [2 /*return*/, AuthorityMetadataSource.CONFIG];\r\n }\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return [2 /*return*/, AuthorityMetadataSource.CACHE];\r\n }\r\n return [4 /*yield*/, this.getEndpointMetadataFromNetwork()];\r\n case 1:\r\n metadata = _a.sent();\r\n if (metadata) {\r\n metadataEntity.updateEndpointMetadata(metadata, true);\r\n return [2 /*return*/, AuthorityMetadataSource.NETWORK];\r\n }\r\n else {\r\n throw ClientAuthError.createUnableToGetOpenidConfigError(this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached authority metadata can be used for the requested authority\r\n * Protects against same domain different authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n Authority.prototype.isAuthoritySameType = function (metadataEntity) {\r\n var cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n var cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\r\n };\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n Authority.prototype.getEndpointMetadataFromConfig = function () {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n */\r\n Authority.prototype.getEndpointMetadataFromNetwork = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.networkInterface.sendGetRequestAsync(this.defaultOpenIdConfigurationEndpoint)];\r\n case 1:\r\n response = _a.sent();\r\n return [2 /*return*/, isOpenIdConfigResponse(response.body) ? response.body : null];\r\n case 2:\r\n e_1 = _a.sent();\r\n return [2 /*return*/, null];\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache and returns where the information was retrived from\r\n * @param cachedMetadata\r\n * @param newMetadata\r\n */\r\n Authority.prototype.updateCloudDiscoveryMetadata = function (metadataEntity) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadata;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\r\n return [2 /*return*/, AuthorityMetadataSource.CONFIG];\r\n }\r\n // If The cached metadata came from config but that config was not passed to this instance, we must go to the network\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return [2 /*return*/, AuthorityMetadataSource.CACHE];\r\n }\r\n return [4 /*yield*/, this.getCloudDiscoveryMetadataFromNetwork()];\r\n case 1:\r\n metadata = _a.sent();\r\n if (metadata) {\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\r\n return [2 /*return*/, AuthorityMetadataSource.NETWORK];\r\n }\r\n else {\r\n // Metadata could not be obtained from config, cache or network\r\n throw ClientConfigurationError.createUntrustedAuthorityError();\r\n }\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n Authority.prototype.getCloudDiscoveryMetadataFromConfig = function () {\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n try {\r\n var parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata);\r\n var metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n if (metadata) {\r\n return metadata;\r\n }\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\r\n }\r\n }\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return null;\r\n };\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n * @param networkInterface\r\n */\r\n Authority.prototype.getCloudDiscoveryMetadataFromNetwork = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var instanceDiscoveryEndpoint, match, response, metadata, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n instanceDiscoveryEndpoint = \"\" + Constants.AAD_INSTANCE_DISCOVERY_ENDPT + this.canonicalAuthority + \"oauth2/v2.0/authorize\";\r\n match = null;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint)];\r\n case 2:\r\n response = _a.sent();\r\n metadata = isCloudInstanceDiscoveryResponse(response.body) ? response.body.metadata : [];\r\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_2 = _a.sent();\r\n return [2 /*return*/, null];\r\n case 4:\r\n if (!match) {\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded \r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return [2 /*return*/, match];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n Authority.prototype.isInKnownAuthorities = function () {\r\n var _this = this;\r\n var matches = this.authorityOptions.knownAuthorities.filter(function (authority) {\r\n return UrlString.getDomainFromUrl(authority).toLowerCase() === _this.hostnameAndPort;\r\n });\r\n return matches.length > 0;\r\n };\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host\r\n */\r\n Authority.createCloudDiscoveryMetadataFromHost = function (host) {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host]\r\n };\r\n };\r\n /**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response\r\n * @param authority\r\n */\r\n Authority.getCloudDiscoveryMetadataFromNetworkResponse = function (response, authority) {\r\n for (var i = 0; i < response.length; i++) {\r\n var metadata = response[i];\r\n if (metadata.aliases.indexOf(authority) > -1) {\r\n return metadata;\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n Authority.prototype.getPreferredCache = function () {\r\n if (this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n };\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host\r\n */\r\n Authority.prototype.isAlias = function (host) {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n };\r\n return Authority;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar AuthorityFactory = /** @class */ (function () {\r\n function AuthorityFactory() {\r\n }\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n */\r\n AuthorityFactory.createDiscoveredInstance = function (authorityUri, networkClient, cacheManager, authorityOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var acquireTokenAuthority, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n acquireTokenAuthority = AuthorityFactory.createInstance(authorityUri, networkClient, cacheManager, authorityOptions);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, acquireTokenAuthority.resolveEndpointsAsync()];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, acquireTokenAuthority];\r\n case 3:\r\n e_1 = _a.sent();\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(e_1);\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Does not perform endpoint discovery.\r\n *\r\n * @param authorityUrl\r\n * @param networkInterface\r\n * @param protocolMode\r\n */\r\n AuthorityFactory.createInstance = function (authorityUrl, networkInterface, cacheManager, authorityOptions) {\r\n // Throw error if authority url is empty\r\n if (StringUtils.isEmpty(authorityUrl)) {\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions);\r\n };\r\n return AuthorityFactory;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ServerTelemetryEntity = /** @class */ (function () {\r\n function ServerTelemetryEntity() {\r\n this.failedRequests = [];\r\n this.errors = [];\r\n this.cacheHits = 0;\r\n }\r\n /**\r\n * validates if a given cache entry is \"Telemetry\", parses \r\n * @param key\r\n * @param entity\r\n */\r\n ServerTelemetryEntity.isServerTelemetryEntity = function (key, entity) {\r\n var validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n var validateEntity = true;\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n return validateKey && validateEntity;\r\n };\r\n return ServerTelemetryEntity;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ThrottlingEntity = /** @class */ (function () {\r\n function ThrottlingEntity() {\r\n }\r\n /**\r\n * validates if a given cache entry is \"Throttling\", parses \r\n * @param key\r\n * @param entity\r\n */\r\n ThrottlingEntity.isThrottlingEntity = function (key, entity) {\r\n var validateKey = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n var validateEntity = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n return validateKey && validateEntity;\r\n };\r\n return ThrottlingEntity;\r\n}());\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar StubbedNetworkModule = {\r\n sendGetRequestAsync: function () {\r\n var notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n },\r\n sendPostRequestAsync: function () {\r\n var notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n }\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ServerTelemetryManager = /** @class */ (function () {\r\n function ServerTelemetryManager(telemetryRequest, cacheManager) {\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.forceRefresh = telemetryRequest.forceRefresh || false;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\r\n this.telemetryCacheKey = SERVER_TELEM_CONSTANTS.CACHE_KEY + Separators.CACHE_KEY_SEPARATOR + telemetryRequest.clientId;\r\n }\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n ServerTelemetryManager.prototype.generateCurrentRequestHeaderValue = function () {\r\n var forceRefreshInt = this.forceRefresh ? 1 : 0;\r\n var request = \"\" + this.apiId + SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR + forceRefreshInt;\r\n var platformFields = [this.wrapperSKU, this.wrapperVer].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, request, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n };\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n ServerTelemetryManager.prototype.generateLastRequestHeaderValue = function () {\r\n var lastRequests = this.getLastRequests();\r\n var maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n var failedRequests = lastRequests.failedRequests.slice(0, 2 * maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n var errors = lastRequests.errors.slice(0, maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n var errorCount = lastRequests.errors.length;\r\n // Indicate whether this header contains all data or partial data\r\n var overflow = maxErrors < errorCount ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n var platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, lastRequests.cacheHits, failedRequests, errors, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n };\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n ServerTelemetryManager.prototype.cacheFailedRequest = function (error) {\r\n var lastRequests = this.getLastRequests();\r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n if (!StringUtils.isEmpty(error.subError)) {\r\n lastRequests.errors.push(error.subError);\r\n }\r\n else if (!StringUtils.isEmpty(error.errorCode)) {\r\n lastRequests.errors.push(error.errorCode);\r\n }\r\n else if (!!error && error.toString()) {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return;\r\n };\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n ServerTelemetryManager.prototype.incrementCacheHits = function () {\r\n var lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return lastRequests.cacheHits;\r\n };\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n ServerTelemetryManager.prototype.getLastRequests = function () {\r\n var initialValue = new ServerTelemetryEntity();\r\n var lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey);\r\n return lastRequests || initialValue;\r\n };\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n ServerTelemetryManager.prototype.clearTelemetryCache = function () {\r\n var lastRequests = this.getLastRequests();\r\n var numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n var errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey);\r\n }\r\n else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n var serverTelemEntity = new ServerTelemetryEntity();\r\n serverTelemEntity.failedRequests = lastRequests.failedRequests.slice(numErrorsFlushed * 2); // failedRequests contains 2 items for each error\r\n serverTelemEntity.errors = lastRequests.errors.slice(numErrorsFlushed);\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\r\n }\r\n };\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n ServerTelemetryManager.maxErrorsToSend = function (serverTelemetryEntity) {\r\n var i;\r\n var maxErrors = 0;\r\n var dataSize = 0;\r\n var errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n var apiId = serverTelemetryEntity.failedRequests[2 * i] || Constants.EMPTY_STRING;\r\n var correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] || Constants.EMPTY_STRING;\r\n var errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\r\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\r\n dataSize += apiId.toString().length + correlationId.toString().length + errorCode.length + 3;\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return maxErrors;\r\n };\r\n return ServerTelemetryManager;\r\n}());\n\nexport { AccessTokenEntity, AccountEntity, AppMetadataEntity, AuthError, AuthErrorMessage, AuthToken, AuthenticationScheme, Authority, AuthorityFactory, AuthorityMetadataEntity, AuthorityType, AuthorizationCodeClient, CacheAccountType, CacheManager, CacheSchemaType, CacheType, ClientAuthError, ClientAuthErrorMessage, ClientConfigurationError, ClientConfigurationErrorMessage, ClientCredentialClient, Constants, CredentialEntity, CredentialType, DEFAULT_CRYPTO_IMPLEMENTATION, DEFAULT_SYSTEM_OPTIONS, DefaultStorageClass, DeviceCodeClient, AuthToken as IdToken, IdTokenEntity, InteractionRequiredAuthError, LogLevel, Logger, NetworkManager, OIDC_DEFAULT_SCOPES, OnBehalfOfClient, PersistentCacheKeys, PromptValue, ProtocolMode, ProtocolUtils, RefreshTokenClient, RefreshTokenEntity, ResponseMode, ServerError, ServerTelemetryEntity, ServerTelemetryManager, SilentFlowClient, StringUtils, StubbedNetworkModule, ThrottlingEntity, ThrottlingUtils, TimeUtils, TokenCacheContext, UrlString, UsernamePasswordClient };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy9Db25zdGFudHMudHMiLCIuLi9zcmMvZXJyb3IvQXV0aEVycm9yLnRzIiwiLi4vc3JjL2NyeXB0by9JQ3J5cHRvLnRzIiwiLi4vc3JjL2Vycm9yL0NsaWVudEF1dGhFcnJvci50cyIsIi4uL3NyYy91dGlscy9TdHJpbmdVdGlscy50cyIsIi4uL3NyYy9sb2dnZXIvTG9nZ2VyLnRzIiwiLi4vc3JjL3BhY2thZ2VNZXRhZGF0YS50cyIsIi4uL3NyYy9jYWNoZS9lbnRpdGllcy9DcmVkZW50aWFsRW50aXR5LnRzIiwiLi4vc3JjL2Vycm9yL0NsaWVudENvbmZpZ3VyYXRpb25FcnJvci50cyIsIi4uL3NyYy9yZXF1ZXN0L1Njb3BlU2V0LnRzIiwiLi4vc3JjL2FjY291bnQvQ2xpZW50SW5mby50cyIsIi4uL3NyYy9hdXRob3JpdHkvQXV0aG9yaXR5VHlwZS50cyIsIi4uL3NyYy9jYWNoZS9lbnRpdGllcy9BY2NvdW50RW50aXR5LnRzIiwiLi4vc3JjL2FjY291bnQvQXV0aFRva2VuLnRzIiwiLi4vc3JjL2NhY2hlL0NhY2hlTWFuYWdlci50cyIsIi4uL3NyYy9jb25maWcvQ2xpZW50Q29uZmlndXJhdGlvbi50cyIsIi4uL3NyYy9lcnJvci9TZXJ2ZXJFcnJvci50cyIsIi4uL3NyYy9uZXR3b3JrL1Rocm90dGxpbmdVdGlscy50cyIsIi4uL3NyYy9uZXR3b3JrL05ldHdvcmtNYW5hZ2VyLnRzIiwiLi4vc3JjL2NsaWVudC9CYXNlQ2xpZW50LnRzIiwiLi4vc3JjL3JlcXVlc3QvUmVxdWVzdFZhbGlkYXRvci50cyIsIi4uL3NyYy9yZXF1ZXN0L1JlcXVlc3RQYXJhbWV0ZXJCdWlsZGVyLnRzIiwiLi4vc3JjL2NhY2hlL2VudGl0aWVzL0lkVG9rZW5FbnRpdHkudHMiLCIuLi9zcmMvdXRpbHMvVGltZVV0aWxzLnRzIiwiLi4vc3JjL2NhY2hlL2VudGl0aWVzL0FjY2Vzc1Rva2VuRW50aXR5LnRzIiwiLi4vc3JjL2NhY2hlL2VudGl0aWVzL1JlZnJlc2hUb2tlbkVudGl0eS50cyIsIi4uL3NyYy9lcnJvci9JbnRlcmFjdGlvblJlcXVpcmVkQXV0aEVycm9yLnRzIiwiLi4vc3JjL2NhY2hlL2VudGl0aWVzL0NhY2hlUmVjb3JkLnRzIiwiLi4vc3JjL3V0aWxzL1Byb3RvY29sVXRpbHMudHMiLCIuLi9zcmMvdXJsL1VybFN0cmluZy50cyIsIi4uL3NyYy9jcnlwdG8vUG9wVG9rZW5HZW5lcmF0b3IudHMiLCIuLi9zcmMvY2FjaGUvZW50aXRpZXMvQXBwTWV0YWRhdGFFbnRpdHkudHMiLCIuLi9zcmMvY2FjaGUvcGVyc2lzdGVuY2UvVG9rZW5DYWNoZUNvbnRleHQudHMiLCIuLi9zcmMvcmVzcG9uc2UvUmVzcG9uc2VIYW5kbGVyLnRzIiwiLi4vc3JjL2NsaWVudC9BdXRob3JpemF0aW9uQ29kZUNsaWVudC50cyIsIi4uL3NyYy9jbGllbnQvRGV2aWNlQ29kZUNsaWVudC50cyIsIi4uL3NyYy9jbGllbnQvUmVmcmVzaFRva2VuQ2xpZW50LnRzIiwiLi4vc3JjL2NsaWVudC9DbGllbnRDcmVkZW50aWFsQ2xpZW50LnRzIiwiLi4vc3JjL2NsaWVudC9PbkJlaGFsZk9mQ2xpZW50LnRzIiwiLi4vc3JjL2NsaWVudC9TaWxlbnRGbG93Q2xpZW50LnRzIiwiLi4vc3JjL2NsaWVudC9Vc2VybmFtZVBhc3N3b3JkQ2xpZW50LnRzIiwiLi4vc3JjL2F1dGhvcml0eS9PcGVuSWRDb25maWdSZXNwb25zZS50cyIsIi4uL3NyYy9hdXRob3JpdHkvUHJvdG9jb2xNb2RlLnRzIiwiLi4vc3JjL2NhY2hlL2VudGl0aWVzL0F1dGhvcml0eU1ldGFkYXRhRW50aXR5LnRzIiwiLi4vc3JjL2F1dGhvcml0eS9DbG91ZEluc3RhbmNlRGlzY292ZXJ5UmVzcG9uc2UudHMiLCIuLi9zcmMvYXV0aG9yaXR5L0F1dGhvcml0eS50cyIsIi4uL3NyYy9hdXRob3JpdHkvQXV0aG9yaXR5RmFjdG9yeS50cyIsIi4uL3NyYy9jYWNoZS9lbnRpdGllcy9TZXJ2ZXJUZWxlbWV0cnlFbnRpdHkudHMiLCIuLi9zcmMvY2FjaGUvZW50aXRpZXMvVGhyb3R0bGluZ0VudGl0eS50cyIsIi4uL3NyYy9uZXR3b3JrL0lOZXR3b3JrTW9kdWxlLnRzIiwiLi4vc3JjL3RlbGVtZXRyeS9zZXJ2ZXIvU2VydmVyVGVsZW1ldHJ5TWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmV4cG9ydCBjb25zdCBDb25zdGFudHMgPSB7XHJcbiAgICBMSUJSQVJZX05BTUU6IFwiTVNBTC5KU1wiLFxyXG4gICAgU0tVOiBcIm1zYWwuanMuY29tbW9uXCIsXHJcbiAgICAvLyBQcmVmaXggZm9yIGFsbCBsaWJyYXJ5IGNhY2hlIGVudHJpZXNcclxuICAgIENBQ0hFX1BSRUZJWDogXCJtc2FsXCIsXHJcbiAgICAvLyBkZWZhdWx0IGF1dGhvcml0eVxyXG4gICAgREVGQVVMVF9BVVRIT1JJVFk6IFwiaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnRvbmxpbmUuY29tL2NvbW1vbi9cIixcclxuICAgIERFRkFVTFRfQVVUSE9SSVRZX0hPU1Q6IFwibG9naW4ubWljcm9zb2Z0b25saW5lLmNvbVwiLFxyXG4gICAgLy8gQURGUyBTdHJpbmdcclxuICAgIEFERlM6IFwiYWRmc1wiLFxyXG4gICAgLy8gRGVmYXVsdCBBQUQgSW5zdGFuY2UgRGlzY292ZXJ5IEVuZHBvaW50XHJcbiAgICBBQURfSU5TVEFOQ0VfRElTQ09WRVJZX0VORFBUOiBcImh0dHBzOi8vbG9naW4ubWljcm9zb2Z0b25saW5lLmNvbS9jb21tb24vZGlzY292ZXJ5L2luc3RhbmNlP2FwaS12ZXJzaW9uPTEuMSZhdXRob3JpemF0aW9uX2VuZHBvaW50PVwiLFxyXG4gICAgLy8gUmVzb3VyY2UgZGVsaW1pdGVyIC0gdXNlZCBmb3IgY2VydGFpbiBjYWNoZSBlbnRyaWVzXHJcbiAgICBSRVNPVVJDRV9ERUxJTTogXCJ8XCIsXHJcbiAgICAvLyBQbGFjZWhvbGRlciBmb3Igbm9uLWV4aXN0ZW50IGFjY291bnQgaWRzL29iamVjdHNcclxuICAgIE5PX0FDQ09VTlQ6IFwiTk9fQUNDT1VOVFwiLFxyXG4gICAgLy8gQ2xhaW1zXHJcbiAgICBDTEFJTVM6IFwiY2xhaW1zXCIsXHJcbiAgICAvLyBDb25zdW1lciBVVElEXHJcbiAgICBDT05TVU1FUl9VVElEOiBcIjkxODgwNDBkLTZjNjctNGM1Yi1iMTEyLTM2YTMwNGI2NmRhZFwiLFxyXG4gICAgLy8gRGVmYXVsdCBzY29wZXNcclxuICAgIE9QRU5JRF9TQ09QRTogXCJvcGVuaWRcIixcclxuICAgIFBST0ZJTEVfU0NPUEU6IFwicHJvZmlsZVwiLFxyXG4gICAgT0ZGTElORV9BQ0NFU1NfU0NPUEU6IFwib2ZmbGluZV9hY2Nlc3NcIixcclxuICAgIEVNQUlMX1NDT1BFOiBcImVtYWlsXCIsXHJcbiAgICAvLyBEZWZhdWx0IHJlc3BvbnNlIHR5cGUgZm9yIGF1dGhvcml6YXRpb24gY29kZSBmbG93XHJcbiAgICBDT0RFX1JFU1BPTlNFX1RZUEU6IFwiY29kZVwiLFxyXG4gICAgQ09ERV9HUkFOVF9UWVBFOiBcImF1dGhvcml6YXRpb25fY29kZVwiLFxyXG4gICAgUlRfR1JBTlRfVFlQRTogXCJyZWZyZXNoX3Rva2VuXCIsXHJcbiAgICBGUkFHTUVOVF9SRVNQT05TRV9NT0RFOiBcImZyYWdtZW50XCIsXHJcbiAgICBTMjU2X0NPREVfQ0hBTExFTkdFX01FVEhPRDogXCJTMjU2XCIsXHJcbiAgICBVUkxfRk9STV9DT05URU5UX1RZUEU6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLThcIixcclxuICAgIEFVVEhPUklaQVRJT05fUEVORElORzogXCJhdXRob3JpemF0aW9uX3BlbmRpbmdcIixcclxuICAgIE5PVF9ERUZJTkVEOiBcIm5vdF9kZWZpbmVkXCIsXHJcbiAgICBFTVBUWV9TVFJJTkc6IFwiXCIsXHJcbiAgICBGT1JXQVJEX1NMQVNIOiBcIi9cIlxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IE9JRENfREVGQVVMVF9TQ09QRVMgPSBbXHJcbiAgICBDb25zdGFudHMuT1BFTklEX1NDT1BFLFxyXG4gICAgQ29uc3RhbnRzLlBST0ZJTEVfU0NPUEUsXHJcbiAgICBDb25zdGFudHMuT0ZGTElORV9BQ0NFU1NfU0NPUEVcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBPSURDX1NDT1BFUyA9IFtcclxuICAgIC4uLk9JRENfREVGQVVMVF9TQ09QRVMsXHJcbiAgICBDb25zdGFudHMuRU1BSUxfU0NPUEVcclxuXTtcclxuXHJcbi8qKlxyXG4gKiBSZXF1ZXN0IGhlYWRlciBuYW1lc1xyXG4gKi9cclxuZXhwb3J0IGVudW0gSGVhZGVyTmFtZXMge1xyXG4gICAgQ09OVEVOVF9UWVBFID0gXCJDb250ZW50LVR5cGVcIixcclxuICAgIFhfQ0xJRU5UX0NVUlJfVEVMRU0gPSBcIngtY2xpZW50LWN1cnJlbnQtdGVsZW1ldHJ5XCIsXHJcbiAgICBYX0NMSUVOVF9MQVNUX1RFTEVNID0gXCJ4LWNsaWVudC1sYXN0LXRlbGVtZXRyeVwiLFxyXG4gICAgUkVUUllfQUZURVIgPSBcIlJldHJ5LUFmdGVyXCIsXHJcbiAgICBYX01TX0xJQl9DQVBBQklMSVRZID0gXCJ4LW1zLWxpYi1jYXBhYmlsaXR5XCIsXHJcbiAgICBYX01TX0xJQl9DQVBBQklMSVRZX1ZBTFVFID0gXCJyZXRyeS1hZnRlciwgaDQyOVwiXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQZXJzaXN0ZW50IGNhY2hlIGtleXMgTVNBTCB3aGljaCBzdGF5IHdoaWxlIHVzZXIgaXMgbG9nZ2VkIGluLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gUGVyc2lzdGVudENhY2hlS2V5cyB7XHJcbiAgICBJRF9UT0tFTiA9IFwiaWR0b2tlblwiLFxyXG4gICAgQ0xJRU5UX0lORk8gPSBcImNsaWVudC5pbmZvXCIsXHJcbiAgICBBREFMX0lEX1RPS0VOID0gXCJhZGFsLmlkdG9rZW5cIixcclxuICAgIEVSUk9SID0gXCJlcnJvclwiLFxyXG4gICAgRVJST1JfREVTQyA9IFwiZXJyb3IuZGVzY3JpcHRpb25cIlxyXG59XHJcblxyXG4vKipcclxuICogU3RyaW5nIGNvbnN0YW50cyByZWxhdGVkIHRvIEFBRCBBdXRob3JpdHlcclxuICovXHJcbmV4cG9ydCBlbnVtIEFBREF1dGhvcml0eUNvbnN0YW50cyB7XHJcbiAgICBDT01NT04gPSBcImNvbW1vblwiLFxyXG4gICAgT1JHQU5JWkFUSU9OUyA9IFwib3JnYW5pemF0aW9uc1wiLFxyXG4gICAgQ09OU1VNRVJTID0gXCJjb25zdW1lcnNcIlxyXG59XHJcblxyXG4vKipcclxuICogS2V5cyBpbiB0aGUgaGFzaFBhcmFtcyBzZW50IGJ5IEFBRCBTZXJ2ZXJcclxuICovXHJcbmV4cG9ydCBlbnVtIEFBRFNlcnZlclBhcmFtS2V5cyB7XHJcbiAgICBDTElFTlRfSUQgPSBcImNsaWVudF9pZFwiLFxyXG4gICAgUkVESVJFQ1RfVVJJID0gXCJyZWRpcmVjdF91cmlcIixcclxuICAgIFJFU1BPTlNFX1RZUEUgPSBcInJlc3BvbnNlX3R5cGVcIixcclxuICAgIFJFU1BPTlNFX01PREUgPSBcInJlc3BvbnNlX21vZGVcIixcclxuICAgIEdSQU5UX1RZUEUgPSBcImdyYW50X3R5cGVcIixcclxuICAgIENMQUlNUyA9IFwiY2xhaW1zXCIsXHJcbiAgICBTQ09QRSA9IFwic2NvcGVcIixcclxuICAgIEVSUk9SID0gXCJlcnJvclwiLFxyXG4gICAgRVJST1JfREVTQ1JJUFRJT04gPSBcImVycm9yX2Rlc2NyaXB0aW9uXCIsXHJcbiAgICBBQ0NFU1NfVE9LRU4gPSBcImFjY2Vzc190b2tlblwiLFxyXG4gICAgSURfVE9LRU4gPSBcImlkX3Rva2VuXCIsXHJcbiAgICBSRUZSRVNIX1RPS0VOID0gXCJyZWZyZXNoX3Rva2VuXCIsXHJcbiAgICBFWFBJUkVTX0lOID0gXCJleHBpcmVzX2luXCIsXHJcbiAgICBTVEFURSA9IFwic3RhdGVcIixcclxuICAgIE5PTkNFID0gXCJub25jZVwiLFxyXG4gICAgUFJPTVBUID0gXCJwcm9tcHRcIixcclxuICAgIFNFU1NJT05fU1RBVEUgPSBcInNlc3Npb25fc3RhdGVcIixcclxuICAgIENMSUVOVF9JTkZPID0gXCJjbGllbnRfaW5mb1wiLFxyXG4gICAgQ09ERSA9IFwiY29kZVwiLFxyXG4gICAgQ09ERV9DSEFMTEVOR0UgPSBcImNvZGVfY2hhbGxlbmdlXCIsXHJcbiAgICBDT0RFX0NIQUxMRU5HRV9NRVRIT0QgPSBcImNvZGVfY2hhbGxlbmdlX21ldGhvZFwiLFxyXG4gICAgQ09ERV9WRVJJRklFUiA9IFwiY29kZV92ZXJpZmllclwiLFxyXG4gICAgQ0xJRU5UX1JFUVVFU1RfSUQgPSBcImNsaWVudC1yZXF1ZXN0LWlkXCIsXHJcbiAgICBYX0NMSUVOVF9TS1UgPSBcIngtY2xpZW50LVNLVVwiLFxyXG4gICAgWF9DTElFTlRfVkVSID0gXCJ4LWNsaWVudC1WRVJcIixcclxuICAgIFhfQ0xJRU5UX09TID0gXCJ4LWNsaWVudC1PU1wiLFxyXG4gICAgWF9DTElFTlRfQ1BVID0gXCJ4LWNsaWVudC1DUFVcIixcclxuICAgIFBPU1RfTE9HT1VUX1VSSSA9IFwicG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpXCIsXHJcbiAgICBJRF9UT0tFTl9ISU5UPSBcImlkX3Rva2VuX2hpbnRcIixcclxuICAgIERFVklDRV9DT0RFID0gXCJkZXZpY2VfY29kZVwiLFxyXG4gICAgQ0xJRU5UX1NFQ1JFVCA9IFwiY2xpZW50X3NlY3JldFwiLFxyXG4gICAgQ0xJRU5UX0FTU0VSVElPTiA9IFwiY2xpZW50X2Fzc2VydGlvblwiLFxyXG4gICAgQ0xJRU5UX0FTU0VSVElPTl9UWVBFID0gXCJjbGllbnRfYXNzZXJ0aW9uX3R5cGVcIixcclxuICAgIFRPS0VOX1RZUEUgPSBcInRva2VuX3R5cGVcIixcclxuICAgIFJFUV9DTkYgPSBcInJlcV9jbmZcIixcclxuICAgIE9CT19BU1NFUlRJT04gPSBcImFzc2VydGlvblwiLFxyXG4gICAgUkVRVUVTVEVEX1RPS0VOX1VTRSA9IFwicmVxdWVzdGVkX3Rva2VuX3VzZVwiLFxyXG4gICAgT05fQkVIQUxGX09GID0gXCJvbl9iZWhhbGZfb2ZcIixcclxuICAgIEZPQ0kgPSBcImZvY2lcIlxyXG59XHJcblxyXG4vKipcclxuICogQ2xhaW1zIHJlcXVlc3Qga2V5c1xyXG4gKi9cclxuZXhwb3J0IGVudW0gQ2xhaW1zUmVxdWVzdEtleXMge1xyXG4gICAgQUNDRVNTX1RPS0VOID0gXCJhY2Nlc3NfdG9rZW5cIixcclxuICAgIFhNU19DQyA9IFwieG1zX2NjXCJcclxufVxyXG5cclxuLyoqXHJcbiAqIHdlIGNvbnNpZGVyZWQgbWFraW5nIHRoaXMgXCJlbnVtXCIgaW4gdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiBzdHJpbmcsIGhvd2V2ZXIgaXQgbG9va3MgbGlrZSB0aGUgYWxsb3dlZCBsaXN0IG9mXHJcbiAqIHByb21wdCB2YWx1ZXMga2VwdCBjaGFuZ2luZyBvdmVyIHBhc3QgY291cGxlIG9mIHllYXJzLiBUaGVyZSBhcmUgc29tZSB1bmRvY3VtZW50ZWQgcHJvbXB0IHZhbHVlcyBmb3Igc29tZVxyXG4gKiBpbnRlcm5hbCBwYXJ0bmVycyB0b28sIGhlbmNlIHRoZSBjaG9pY2Ugb2YgZ2VuZXJpYyBcInN0cmluZ1wiIHR5cGUgaW5zdGVhZCBvZiB0aGUgXCJlbnVtXCJcclxuICovXHJcbmV4cG9ydCBjb25zdCBQcm9tcHRWYWx1ZSA9IHtcclxuICAgIExPR0lOOiBcImxvZ2luXCIsXHJcbiAgICBTRUxFQ1RfQUNDT1VOVDogXCJzZWxlY3RfYWNjb3VudFwiLFxyXG4gICAgQ09OU0VOVDogXCJjb25zZW50XCIsXHJcbiAgICBOT05FOiBcIm5vbmVcIixcclxufTtcclxuXHJcbi8qKlxyXG4gKiBTU08gVHlwZXMgLSBnZW5lcmF0ZWQgdG8gcG9wdWxhdGUgaGludHNcclxuICovXHJcbmV4cG9ydCBlbnVtIFNTT1R5cGVzIHtcclxuICAgIEFDQ09VTlQgPSBcImFjY291bnRcIixcclxuICAgIFNJRCA9IFwic2lkXCIsXHJcbiAgICBMT0dJTl9ISU5UID0gXCJsb2dpbl9oaW50XCIsXHJcbiAgICBJRF9UT0tFTiA9IFwiaWRfdG9rZW5cIixcclxuICAgIERPTUFJTl9ISU5UID0gXCJkb21haW5faGludFwiLFxyXG4gICAgT1JHQU5JWkFUSU9OUyA9IFwib3JnYW5pemF0aW9uc1wiLFxyXG4gICAgQ09OU1VNRVJTID0gXCJjb25zdW1lcnNcIixcclxuICAgIEFDQ09VTlRfSUQgPSBcImFjY291bnRJZGVudGlmaWVyXCIsXHJcbiAgICBIT01FQUNDT1VOVF9JRCA9IFwiaG9tZUFjY291bnRJZGVudGlmaWVyXCJcclxufVxyXG5cclxuLyoqXHJcbiAqIERpc2FsbG93ZWQgZXh0cmEgcXVlcnkgcGFyYW1ldGVycy5cclxuICovXHJcbmV4cG9ydCBjb25zdCBCbGFja2xpc3RlZEVRUGFyYW1zID0gW1xyXG4gICAgU1NPVHlwZXMuU0lELFxyXG4gICAgU1NPVHlwZXMuTE9HSU5fSElOVFxyXG5dO1xyXG5cclxuLyoqXHJcbiAqIGFsbG93ZWQgdmFsdWVzIGZvciBjb2RlVmVyaWZpZXJcclxuICovXHJcbmV4cG9ydCBjb25zdCBDb2RlQ2hhbGxlbmdlTWV0aG9kVmFsdWVzID0ge1xyXG4gICAgUExBSU46IFwicGxhaW5cIixcclxuICAgIFMyNTY6IFwiUzI1NlwiXHJcbn07XHJcblxyXG4vKipcclxuICogVGhlIG1ldGhvZCB1c2VkIHRvIGVuY29kZSB0aGUgY29kZSB2ZXJpZmllciBmb3IgdGhlIGNvZGUgY2hhbGxlbmdlIHBhcmFtZXRlci4gY2FuIGJlIG9uZVxyXG4gKiBvZiBwbGFpbiBvciBzMjU2LiBpZiBleGNsdWRlZCwgY29kZSBjaGFsbGVuZ2UgaXMgYXNzdW1lZCB0byBiZSBwbGFpbnRleHQuIGZvciBtb3JlXHJcbiAqIGluZm9ybWF0aW9uLCBzZWUgdGhlIHBrY2UgcmNmOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzYzNlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IENvZGVDaGFsbGVuZ2VNZXRob2RWYWx1ZXNBcnJheTogc3RyaW5nW10gPSBbXHJcbiAgICBDb2RlQ2hhbGxlbmdlTWV0aG9kVmFsdWVzLlBMQUlOLFxyXG4gICAgQ29kZUNoYWxsZW5nZU1ldGhvZFZhbHVlcy5TMjU2XHJcbl07XHJcblxyXG4vKipcclxuICogYWxsb3dlZCB2YWx1ZXMgZm9yIHJlc3BvbnNlX21vZGVcclxuICovXHJcbmV4cG9ydCBlbnVtIFJlc3BvbnNlTW9kZSB7XHJcbiAgICBRVUVSWSA9IFwicXVlcnlcIixcclxuICAgIEZSQUdNRU5UID0gXCJmcmFnbWVudFwiLFxyXG4gICAgRk9STV9QT1NUID0gXCJmb3JtX3Bvc3RcIlxyXG59XHJcblxyXG4vKipcclxuICogYWxsb3dlZCBncmFudF90eXBlXHJcbiAqL1xyXG5leHBvcnQgZW51bSBHcmFudFR5cGUge1xyXG4gICAgSU1QTElDSVRfR1JBTlQgPSBcImltcGxpY2l0XCIsXHJcbiAgICBBVVRIT1JJWkFUSU9OX0NPREVfR1JBTlQgPSBcImF1dGhvcml6YXRpb25fY29kZVwiLFxyXG4gICAgQ0xJRU5UX0NSRURFTlRJQUxTX0dSQU5UID0gXCJjbGllbnRfY3JlZGVudGlhbHNcIixcclxuICAgIFJFU09VUkNFX09XTkVSX1BBU1NXT1JEX0dSQU5UID0gXCJwYXNzd29yZFwiLFxyXG4gICAgUkVGUkVTSF9UT0tFTl9HUkFOVCA9IFwicmVmcmVzaF90b2tlblwiLFxyXG4gICAgREVWSUNFX0NPREVfR1JBTlQgPSBcImRldmljZV9jb2RlXCIsXHJcbiAgICBKV1RfQkVBUkVSID0gXCJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Z3JhbnQtdHlwZTpqd3QtYmVhcmVyXCJcclxufVxyXG5cclxuLyoqXHJcbiAqIEFjY291bnQgdHlwZXMgaW4gQ2FjaGVcclxuICovXHJcbmV4cG9ydCBlbnVtIENhY2hlQWNjb3VudFR5cGUge1xyXG4gICAgTVNTVFNfQUNDT1VOVF9UWVBFID0gXCJNU1NUU1wiLFxyXG4gICAgQURGU19BQ0NPVU5UX1RZUEUgPSBcIkFERlNcIixcclxuICAgIE1TQVYxX0FDQ09VTlRfVFlQRSA9IFwiTVNBXCIsXHJcbiAgICBHRU5FUklDX0FDQ09VTlRfVFlQRSA9IFwiR2VuZXJpY1wiIC8vIE5UTE0sIEtlcmJlcm9zLCBGQkEsIEJhc2ljIGV0Y1xyXG59XHJcblxyXG4vKipcclxuICogU2VwYXJhdG9ycyB1c2VkIGluIGNhY2hlXHJcbiAqL1xyXG5leHBvcnQgZW51bSBTZXBhcmF0b3JzIHtcclxuICAgIENBQ0hFX0tFWV9TRVBBUkFUT1IgPSBcIi1cIixcclxuICAgIENMSUVOVF9JTkZPX1NFUEFSQVRPUiA9IFwiLlwiXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVkZW50aWFsIFR5cGUgc3RvcmVkIGluIHRoZSBjYWNoZVxyXG4gKi9cclxuZXhwb3J0IGVudW0gQ3JlZGVudGlhbFR5cGUge1xyXG4gICAgSURfVE9LRU4gPSBcIklkVG9rZW5cIixcclxuICAgIEFDQ0VTU19UT0tFTiA9IFwiQWNjZXNzVG9rZW5cIixcclxuICAgIFJFRlJFU0hfVE9LRU4gPSBcIlJlZnJlc2hUb2tlblwiLFxyXG59XHJcblxyXG4vKipcclxuICogQ3JlZGVudGlhbCBUeXBlIHN0b3JlZCBpbiB0aGUgY2FjaGVcclxuICovXHJcbmV4cG9ydCBlbnVtIENhY2hlU2NoZW1hVHlwZSB7XHJcbiAgICBBQ0NPVU5UID0gXCJBY2NvdW50XCIsXHJcbiAgICBDUkVERU5USUFMID0gXCJDcmVkZW50aWFsXCIsXHJcbiAgICBJRF9UT0tFTiA9IFwiSWRUb2tlblwiLFxyXG4gICAgQUNDRVNTX1RPS0VOID0gXCJBY2Nlc3NUb2tlblwiLFxyXG4gICAgUkVGUkVTSF9UT0tFTiA9IFwiUmVmcmVzaFRva2VuXCIsXHJcbiAgICBBUFBfTUVUQURBVEEgPSBcIkFwcE1ldGFkYXRhXCIsXHJcbiAgICBURU1QT1JBUlkgPSBcIlRlbXBDYWNoZVwiLFxyXG4gICAgVEVMRU1FVFJZID0gXCJUZWxlbWV0cnlcIixcclxuICAgIFVOREVGSU5FRCA9IFwiVW5kZWZpbmVkXCIsXHJcbiAgICBUSFJPVFRMSU5HID0gXCJUaHJvdHRsaW5nXCJcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbWJpbmUgYWxsIGNhY2hlIHR5cGVzXHJcbiAqL1xyXG5leHBvcnQgZW51bSBDYWNoZVR5cGUge1xyXG4gICAgQURGUyA9IDEwMDEsXHJcbiAgICBNU0EgPSAxMDAyLFxyXG4gICAgTVNTVFMgPSAxMDAzLFxyXG4gICAgR0VORVJJQyA9IDEwMDQsXHJcbiAgICBBQ0NFU1NfVE9LRU4gPSAyMDAxLFxyXG4gICAgUkVGUkVTSF9UT0tFTiA9IDIwMDIsXHJcbiAgICBJRF9UT0tFTiA9IDIwMDMsXHJcbiAgICBBUFBfTUVUQURBVEEgPSAzMDAxLFxyXG4gICAgVU5ERUZJTkVEID0gOTk5OVxyXG59XHJcblxyXG4vKipcclxuICogTW9yZSBDYWNoZSByZWxhdGVkIGNvbnN0YW50c1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IEFQUF9NRVRBREFUQSA9IFwiYXBwbWV0YWRhdGFcIjtcclxuZXhwb3J0IGNvbnN0IENsaWVudEluZm8gPSBcImNsaWVudF9pbmZvXCI7XHJcbmV4cG9ydCBjb25zdCBUSEVfRkFNSUxZX0lEID0gXCIxXCI7XHJcblxyXG5leHBvcnQgY29uc3QgQVVUSE9SSVRZX01FVEFEQVRBX0NPTlNUQU5UUyA9IHtcclxuICAgIENBQ0hFX0tFWTogXCJhdXRob3JpdHktbWV0YWRhdGFcIixcclxuICAgIFJFRlJFU0hfVElNRV9TRUNPTkRTOiAzNjAwICogMjQgLy8gMjQgSG91cnNcclxufTtcclxuXHJcbmV4cG9ydCBlbnVtIEF1dGhvcml0eU1ldGFkYXRhU291cmNlIHtcclxuICAgIENPTkZJRyA9IFwiY29uZmlnXCIsXHJcbiAgICBDQUNIRSA9IFwiY2FjaGVcIixcclxuICAgIE5FVFdPUksgPSBcIm5ldHdvcmtcIlxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgU0VSVkVSX1RFTEVNX0NPTlNUQU5UUyA9IHtcclxuICAgIFNDSEVNQV9WRVJTSU9OOiAyLFxyXG4gICAgTUFYX0hFQURFUl9CWVRFUzogNDAwMCwgLy8gTWF4IGlzIDRLQiwgNDAwMCBCeXRlcyBwcm92aWRlcyA5NiBCeXRlIGJ1ZmZlciBmb3Igc2VwYXJhdG9ycywgc2NoZW1hIHZlcnNpb24sIGV0Yy4gXHJcbiAgICBDQUNIRV9LRVk6IFwic2VydmVyLXRlbGVtZXRyeVwiLFxyXG4gICAgQ0FURUdPUllfU0VQQVJBVE9SOiBcInxcIixcclxuICAgIFZBTFVFX1NFUEFSQVRPUjogXCIsXCIsXHJcbiAgICBPVkVSRkxPV19UUlVFOiBcIjFcIixcclxuICAgIE9WRVJGTE9XX0ZBTFNFOiBcIjBcIixcclxuICAgIFVOS05PV05fRVJST1I6IFwidW5rbm93bl9lcnJvclwiXHJcbn07XHJcblxyXG4vKipcclxuICogVHlwZSBvZiB0aGUgYXV0aGVudGljYXRpb24gcmVxdWVzdFxyXG4gKi9cclxuZXhwb3J0IGVudW0gQXV0aGVudGljYXRpb25TY2hlbWUge1xyXG4gICAgUE9QID0gXCJwb3BcIixcclxuICAgIEJFQVJFUiA9IFwiQmVhcmVyXCJcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnN0YW50cyByZWxhdGVkIHRvIHRocm90dGxpbmdcclxuICovXHJcbmV4cG9ydCBjb25zdCBUaHJvdHRsaW5nQ29uc3RhbnRzID0ge1xyXG4gICAgLy8gRGVmYXVsdCB0aW1lIHRvIHRocm90dGxlIFJlcXVlc3RUaHVtYnByaW50IGluIHNlY29uZHNcclxuICAgIERFRkFVTFRfVEhST1RUTEVfVElNRV9TRUNPTkRTOiA2MCxcclxuICAgIC8vIERlZmF1bHQgbWF4aW11bSB0aW1lIHRvIHRocm90dGxlIGluIHNlY29uZHMsIG92ZXJyaWRlcyB3aGF0IHRoZSBzZXJ2ZXIgc2VuZHMgYmFja1xyXG4gICAgREVGQVVMVF9NQVhfVEhST1RUTEVfVElNRV9TRUNPTkRTOiAzNjAwLFxyXG4gICAgLy8gUHJlZml4IGZvciBzdG9yaW5nIHRocm90dGxpbmcgZW50cmllc1xyXG4gICAgVEhST1RUTElOR19QUkVGSVg6IFwidGhyb3R0bGluZ1wiXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgRXJyb3JzID0ge1xyXG4gICAgSU5WQUxJRF9HUkFOVF9FUlJPUjogXCJpbnZhbGlkX2dyYW50XCIsXHJcbiAgICBDTElFTlRfTUlTTUFUQ0hfRVJST1I6IFwiY2xpZW50X21pc21hdGNoXCIsXHJcbn07XHJcblxyXG4vKipcclxuICogUGFzc3dvcmQgZ3JhbnQgcGFyYW1ldGVyc1xyXG4gKi9cclxuZXhwb3J0IGVudW0gUGFzc3dvcmRHcmFudENvbnN0YW50cyB7XHJcbiAgICB1c2VybmFtZSA9IFwidXNlcm5hbWVcIixcclxuICAgIHBhc3N3b3JkID0gXCJwYXNzd29yZFwiXHJcbn1cclxuIiwiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vdXRpbHMvQ29uc3RhbnRzXCI7XHJcblxyXG4vKipcclxuICogQXV0aEVycm9yTWVzc2FnZSBjbGFzcyBjb250YWluaW5nIHN0cmluZyBjb25zdGFudHMgdXNlZCBieSBlcnJvciBjb2RlcyBhbmQgbWVzc2FnZXMuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgQXV0aEVycm9yTWVzc2FnZSA9IHtcclxuICAgIHVuZXhwZWN0ZWRFcnJvcjoge1xyXG4gICAgICAgIGNvZGU6IFwidW5leHBlY3RlZF9lcnJvclwiLFxyXG4gICAgICAgIGRlc2M6IFwiVW5leHBlY3RlZCBlcnJvciBpbiBhdXRoZW50aWNhdGlvbi5cIlxyXG4gICAgfVxyXG59O1xyXG5cclxuLyoqXHJcbiAqIEdlbmVyYWwgZXJyb3IgY2xhc3MgdGhyb3duIGJ5IHRoZSBNU0FMLmpzIGxpYnJhcnkuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXV0aEVycm9yIGV4dGVuZHMgRXJyb3Ige1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvcnQgc3RyaW5nIGRlbm90aW5nIGVycm9yXHJcbiAgICAgKi9cclxuICAgIGVycm9yQ29kZTogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgZXJyb3JcclxuICAgICAqL1xyXG4gICAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXNjcmliZXMgdGhlIHN1YmNsYXNzIG9mIGFuIGVycm9yXHJcbiAgICAgKi9cclxuICAgIHN1YkVycm9yOiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoZXJyb3JDb2RlPzogc3RyaW5nLCBlcnJvck1lc3NhZ2U/OiBzdHJpbmcsIHN1YmVycm9yPzogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3JTdHJpbmcgPSBlcnJvck1lc3NhZ2UgPyBgJHtlcnJvckNvZGV9OiAke2Vycm9yTWVzc2FnZX1gIDogZXJyb3JDb2RlO1xyXG4gICAgICAgIHN1cGVyKGVycm9yU3RyaW5nKTtcclxuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQXV0aEVycm9yLnByb3RvdHlwZSk7XHJcblxyXG4gICAgICAgIHRoaXMuZXJyb3JDb2RlID0gZXJyb3JDb2RlIHx8IENvbnN0YW50cy5FTVBUWV9TVFJJTkc7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UgfHwgXCJcIjtcclxuICAgICAgICB0aGlzLnN1YkVycm9yID0gc3ViZXJyb3IgfHwgXCJcIjtcclxuICAgICAgICB0aGlzLm5hbWUgPSBcIkF1dGhFcnJvclwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBlcnJvciB0aGF0IGlzIHRocm93biB3aGVuIHNvbWV0aGluZyB1bmV4cGVjdGVkIGhhcHBlbnMgaW4gdGhlIGxpYnJhcnkuXHJcbiAgICAgKiBAcGFyYW0gZXJyRGVzY1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlVW5leHBlY3RlZEVycm9yKGVyckRlc2M6IHN0cmluZyk6IEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBdXRoRXJyb3IoQXV0aEVycm9yTWVzc2FnZS51bmV4cGVjdGVkRXJyb3IuY29kZSwgYCR7QXV0aEVycm9yTWVzc2FnZS51bmV4cGVjdGVkRXJyb3IuZGVzY306ICR7ZXJyRGVzY31gKTtcclxuICAgIH1cclxufVxyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEF1dGhFcnJvciB9IGZyb20gXCIuLi9lcnJvci9BdXRoRXJyb3JcIjtcclxuaW1wb3J0IHsgU2lnbmVkSHR0cFJlcXVlc3QgfSBmcm9tIFwiLi9TaWduZWRIdHRwUmVxdWVzdFwiO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBQa2NlQ29kZXMgdHlwZSBkZXNjcmliZXMgdGhlIHN0cnVjdHVyZVxyXG4gKiBvZiBvYmplY3RzIHRoYXQgY29udGFpbiBQS0NFIGNvZGVcclxuICogY2hhbGxlbmdlIGFuZCB2ZXJpZmllciBwYWlyc1xyXG4gKi9cclxuZXhwb3J0IHR5cGUgUGtjZUNvZGVzID0ge1xyXG4gICAgdmVyaWZpZXI6IHN0cmluZyxcclxuICAgIGNoYWxsZW5nZTogc3RyaW5nXHJcbn07XHJcblxyXG4vKipcclxuICogSW50ZXJmYWNlIGZvciBjcnlwdG8gZnVuY3Rpb25zIHVzZWQgYnkgbGlicmFyeVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJQ3J5cHRvIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIGd1aWQgcmFuZG9tbHkuXHJcbiAgICAgKi9cclxuICAgIGNyZWF0ZU5ld0d1aWQoKTogc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBiYXNlNjQgRW5jb2RlIHN0cmluZ1xyXG4gICAgICogQHBhcmFtIGlucHV0IFxyXG4gICAgICovXHJcbiAgICBiYXNlNjRFbmNvZGUoaW5wdXQ6IHN0cmluZyk6IHN0cmluZztcclxuICAgIC8qKlxyXG4gICAgICogYmFzZTY0IGRlY29kZSBzdHJpbmdcclxuICAgICAqIEBwYXJhbSBpbnB1dCBcclxuICAgICAqL1xyXG4gICAgYmFzZTY0RGVjb2RlKGlucHV0OiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYXRlIFBLQ0UgY29kZXMgZm9yIE9BdXRoLiBTZWUgUkZDIGhlcmU6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NjM2XHJcbiAgICAgKi9cclxuICAgIGdlbmVyYXRlUGtjZUNvZGVzKCk6IFByb21pc2U8UGtjZUNvZGVzPjtcclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIGFuIEpXSyBSU0EgUzI1NiBUaHVtYnByaW50XHJcbiAgICAgKiBAcGFyYW0gcmVzb3VyY2VSZXF1ZXN0TWV0aG9kIFxyXG4gICAgICogQHBhcmFtIHJlc291cmNlUmVxdWVzdFVyaSBcclxuICAgICAqL1xyXG4gICAgZ2V0UHVibGljS2V5VGh1bWJwcmludChyZXNvdXJjZVJlcXVlc3RNZXRob2Q6IHN0cmluZywgcmVzb3VyY2VSZXF1ZXN0VXJpOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz47XHJcbiAgICAvKiogXHJcbiAgICAgKiBSZXR1cm5zIGEgc2lnbmVkIHByb29mLW9mLXBvc3Nlc3Npb24gdG9rZW4gd2l0aCBhIGdpdmVuIGFjY2VzIHRva2VuIHRoYXQgY29udGFpbnMgYSBjbmYgY2xhaW0gd2l0aCB0aGUgcmVxdWlyZWQga2lkLlxyXG4gICAgICogQHBhcmFtIGFjY2Vzc1Rva2VuIFxyXG4gICAgICovXHJcbiAgICBzaWduSnd0KHBheWxvYWQ6IFNpZ25lZEh0dHBSZXF1ZXN0LCBraWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ1JZUFRPX0lNUExFTUVOVEFUSU9OOiBJQ3J5cHRvID0ge1xyXG4gICAgY3JlYXRlTmV3R3VpZDogKCk6IHN0cmluZyA9PiB7XHJcbiAgICAgICAgY29uc3Qgbm90SW1wbEVyciA9IFwiQ3J5cHRvIGludGVyZmFjZSAtIGNyZWF0ZU5ld0d1aWQoKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWRcIjtcclxuICAgICAgICB0aHJvdyBBdXRoRXJyb3IuY3JlYXRlVW5leHBlY3RlZEVycm9yKG5vdEltcGxFcnIpO1xyXG4gICAgfSxcclxuICAgIGJhc2U2NERlY29kZTogKCk6IHN0cmluZyA9PiB7XHJcbiAgICAgICAgY29uc3Qgbm90SW1wbEVyciA9IFwiQ3J5cHRvIGludGVyZmFjZSAtIGJhc2U2NERlY29kZSgpIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZFwiO1xyXG4gICAgICAgIHRocm93IEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkRXJyb3Iobm90SW1wbEVycik7XHJcbiAgICB9LFxyXG4gICAgYmFzZTY0RW5jb2RlOiAoKTogc3RyaW5nID0+IHtcclxuICAgICAgICBjb25zdCBub3RJbXBsRXJyID0gXCJDcnlwdG8gaW50ZXJmYWNlIC0gYmFzZTY0RW5jb2RlKCkgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkXCI7XHJcbiAgICAgICAgdGhyb3cgQXV0aEVycm9yLmNyZWF0ZVVuZXhwZWN0ZWRFcnJvcihub3RJbXBsRXJyKTtcclxuICAgIH0sXHJcbiAgICBhc3luYyBnZW5lcmF0ZVBrY2VDb2RlcygpOiBQcm9taXNlPFBrY2VDb2Rlcz4ge1xyXG4gICAgICAgIGNvbnN0IG5vdEltcGxFcnIgPSBcIkNyeXB0byBpbnRlcmZhY2UgLSBnZW5lcmF0ZVBrY2VDb2RlcygpIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZFwiO1xyXG4gICAgICAgIHRocm93IEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkRXJyb3Iobm90SW1wbEVycik7XHJcbiAgICB9LFxyXG4gICAgYXN5bmMgZ2V0UHVibGljS2V5VGh1bWJwcmludCgpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIGNvbnN0IG5vdEltcGxFcnIgPSBcIkNyeXB0byBpbnRlcmZhY2UgLSBnZXRQdWJsaWNLZXlUaHVtYnByaW50KCkgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkXCI7XHJcbiAgICAgICAgdGhyb3cgQXV0aEVycm9yLmNyZWF0ZVVuZXhwZWN0ZWRFcnJvcihub3RJbXBsRXJyKTtcclxuICAgIH0sXHJcbiAgICBhc3luYyBzaWduSnd0KCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgY29uc3Qgbm90SW1wbEVyciA9IFwiQ3J5cHRvIGludGVyZmFjZSAtIHNpZ25Kd3QoKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWRcIjtcclxuICAgICAgICB0aHJvdyBBdXRoRXJyb3IuY3JlYXRlVW5leHBlY3RlZEVycm9yKG5vdEltcGxFcnIpO1xyXG4gICAgfVxyXG59O1xyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEF1dGhFcnJvciB9IGZyb20gXCIuL0F1dGhFcnJvclwiO1xyXG5pbXBvcnQgeyBTY29wZVNldCB9IGZyb20gXCIuLi9yZXF1ZXN0L1Njb3BlU2V0XCI7XHJcblxyXG4vKipcclxuICogQ2xpZW50QXV0aEVycm9yTWVzc2FnZSBjbGFzcyBjb250YWluaW5nIHN0cmluZyBjb25zdGFudHMgdXNlZCBieSBlcnJvciBjb2RlcyBhbmQgbWVzc2FnZXMuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgQ2xpZW50QXV0aEVycm9yTWVzc2FnZSA9IHtcclxuICAgIGNsaWVudEluZm9EZWNvZGluZ0Vycm9yOiB7XHJcbiAgICAgICAgY29kZTogXCJjbGllbnRfaW5mb19kZWNvZGluZ19lcnJvclwiLFxyXG4gICAgICAgIGRlc2M6IFwiVGhlIGNsaWVudCBpbmZvIGNvdWxkIG5vdCBiZSBwYXJzZWQvZGVjb2RlZCBjb3JyZWN0bHkuIFBsZWFzZSByZXZpZXcgdGhlIHRyYWNlIHRvIGRldGVybWluZSB0aGUgcm9vdCBjYXVzZS5cIlxyXG4gICAgfSxcclxuICAgIGNsaWVudEluZm9FbXB0eUVycm9yOiB7XHJcbiAgICAgICAgY29kZTogXCJjbGllbnRfaW5mb19lbXB0eV9lcnJvclwiLFxyXG4gICAgICAgIGRlc2M6IFwiVGhlIGNsaWVudCBpbmZvIHdhcyBlbXB0eS4gUGxlYXNlIHJldmlldyB0aGUgdHJhY2UgdG8gZGV0ZXJtaW5lIHRoZSByb290IGNhdXNlLlwiXHJcbiAgICB9LFxyXG4gICAgdG9rZW5QYXJzaW5nRXJyb3I6IHtcclxuICAgICAgICBjb2RlOiBcInRva2VuX3BhcnNpbmdfZXJyb3JcIixcclxuICAgICAgICBkZXNjOiBcIlRva2VuIGNhbm5vdCBiZSBwYXJzZWQuIFBsZWFzZSByZXZpZXcgc3RhY2sgdHJhY2UgdG8gZGV0ZXJtaW5lIHJvb3QgY2F1c2UuXCJcclxuICAgIH0sXHJcbiAgICBudWxsT3JFbXB0eVRva2VuOiB7XHJcbiAgICAgICAgY29kZTogXCJudWxsX29yX2VtcHR5X3Rva2VuXCIsXHJcbiAgICAgICAgZGVzYzogXCJUaGUgdG9rZW4gaXMgbnVsbCBvciBlbXB0eS4gUGxlYXNlIHJldmlldyB0aGUgdHJhY2UgdG8gZGV0ZXJtaW5lIHRoZSByb290IGNhdXNlLlwiXHJcbiAgICB9LFxyXG4gICAgZW5kcG9pbnRSZXNvbHV0aW9uRXJyb3I6IHtcclxuICAgICAgICBjb2RlOiBcImVuZHBvaW50c19yZXNvbHV0aW9uX2Vycm9yXCIsXHJcbiAgICAgICAgZGVzYzogXCJFcnJvcjogY291bGQgbm90IHJlc29sdmUgZW5kcG9pbnRzLiBQbGVhc2UgY2hlY2sgbmV0d29yayBhbmQgdHJ5IGFnYWluLlwiXHJcbiAgICB9LFxyXG4gICAgbmV0d29ya0Vycm9yOiB7XHJcbiAgICAgICAgY29kZTogXCJuZXR3b3JrX2Vycm9yXCIsXHJcbiAgICAgICAgZGVzYzogXCJOZXR3b3JrIHJlcXVlc3QgZmFpbGVkLiBQbGVhc2UgY2hlY2sgbmV0d29yayB0cmFjZSB0byBkZXRlcm1pbmUgcm9vdCBjYXVzZS5cIlxyXG4gICAgfSxcclxuICAgIHVuYWJsZVRvR2V0T3BlbmlkQ29uZmlnRXJyb3I6IHtcclxuICAgICAgICBjb2RlOiBcIm9wZW5pZF9jb25maWdfZXJyb3JcIixcclxuICAgICAgICBkZXNjOiBcIkNvdWxkIG5vdCByZXRyaWV2ZSBlbmRwb2ludHMuIENoZWNrIHlvdXIgYXV0aG9yaXR5IGFuZCB2ZXJpZnkgdGhlIC53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uIGVuZHBvaW50IHJldHVybnMgdGhlIHJlcXVpcmVkIGVuZHBvaW50cy5cIlxyXG4gICAgfSxcclxuICAgIGhhc2hOb3REZXNlcmlhbGl6ZWQ6IHtcclxuICAgICAgICBjb2RlOiBcImhhc2hfbm90X2Rlc2VyaWFsaXplZFwiLFxyXG4gICAgICAgIGRlc2M6IFwiVGhlIGhhc2ggcGFyYW1ldGVycyBjb3VsZCBub3QgYmUgZGVzZXJpYWxpemVkLiBQbGVhc2UgcmV2aWV3IHRoZSB0cmFjZSB0byBkZXRlcm1pbmUgdGhlIHJvb3QgY2F1c2UuXCJcclxuICAgIH0sXHJcbiAgICBibGFua0d1aWRHZW5lcmF0ZWQ6IHtcclxuICAgICAgICBjb2RlOiBcImJsYW5rX2d1aWRfZ2VuZXJhdGVkXCIsXHJcbiAgICAgICAgZGVzYzogXCJUaGUgZ3VpZCBnZW5lcmF0ZWQgd2FzIGJsYW5rLiBQbGVhc2UgcmV2aWV3IHRoZSB0cmFjZSB0byBkZXRlcm1pbmUgdGhlIHJvb3QgY2F1c2UuXCJcclxuICAgIH0sXHJcbiAgICBpbnZhbGlkU3RhdGVFcnJvcjoge1xyXG4gICAgICAgIGNvZGU6IFwiaW52YWxpZF9zdGF0ZVwiLFxyXG4gICAgICAgIGRlc2M6IFwiU3RhdGUgd2FzIG5vdCB0aGUgZXhwZWN0ZWQgZm9ybWF0LiBQbGVhc2UgY2hlY2sgdGhlIGxvZ3MgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHJlcXVlc3Qgd2FzIHNlbnQgdXNpbmcgUHJvdG9jb2xVdGlscy5zZXRSZXF1ZXN0U3RhdGUoKS5cIlxyXG4gICAgfSxcclxuICAgIHN0YXRlTWlzbWF0Y2hFcnJvcjoge1xyXG4gICAgICAgIGNvZGU6IFwic3RhdGVfbWlzbWF0Y2hcIixcclxuICAgICAgICBkZXNjOiBcIlN0YXRlIG1pc21hdGNoIGVycm9yLiBQbGVhc2UgY2hlY2sgeW91ciBuZXR3b3JrLiBDb250aW51ZWQgcmVxdWVzdHMgbWF5IGNhdXNlIGNhY2hlIG92ZXJmbG93LlwiXHJcbiAgICB9LFxyXG4gICAgc3RhdGVOb3RGb3VuZEVycm9yOiB7XHJcbiAgICAgICAgY29kZTogXCJzdGF0ZV9ub3RfZm91bmRcIixcclxuICAgICAgICBkZXNjOiBcIlN0YXRlIG5vdCBmb3VuZFwiXHJcbiAgICB9LFxyXG4gICAgbm9uY2VNaXNtYXRjaEVycm9yOiB7XHJcbiAgICAgICAgY29kZTogXCJub25jZV9taXNtYXRjaFwiLFxyXG4gICAgICAgIGRlc2M6IFwiTm9uY2UgbWlzbWF0Y2ggZXJyb3IuIFRoaXMgbWF5IGJlIGNhdXNlZCBieSBhIHJhY2UgY29uZGl0aW9uIGluIGNvbmN1cnJlbnQgcmVxdWVzdHMuXCJcclxuICAgIH0sXHJcbiAgICBub25jZU5vdEZvdW5kRXJyb3I6IHtcclxuICAgICAgICBjb2RlOiBcIm5vbmNlX25vdF9mb3VuZFwiLFxyXG4gICAgICAgIGRlc2M6IFwibm9uY2Ugbm90IGZvdW5kXCJcclxuICAgIH0sXHJcbiAgICBub1Rva2Vuc0ZvdW5kRXJyb3I6IHtcclxuICAgICAgICBjb2RlOiBcIm5vX3Rva2Vuc19mb3VuZFwiLFxyXG4gICAgICAgIGRlc2M6IFwiTm8gdG9rZW5zIHdlcmUgZm91bmQgZm9yIHRoZSBnaXZlbiBzY29wZXMsIGFuZCBubyBhdXRob3JpemF0aW9uIGNvZGUgd2FzIHBhc3NlZCB0byBhY3F1aXJlVG9rZW4uIFlvdSBtdXN0IHJldHJpZXZlIGFuIGF1dGhvcml6YXRpb24gY29kZSBiZWZvcmUgbWFraW5nIGEgY2FsbCB0byBhY3F1aXJlVG9rZW4oKS5cIlxyXG4gICAgfSxcclxuICAgIG11bHRpcGxlTWF0Y2hpbmdUb2tlbnM6IHtcclxuICAgICAgICBjb2RlOiBcIm11bHRpcGxlX21hdGNoaW5nX3Rva2Vuc1wiLFxyXG4gICAgICAgIGRlc2M6IFwiVGhlIGNhY2hlIGNvbnRhaW5zIG11bHRpcGxlIHRva2VucyBzYXRpc2Z5aW5nIHRoZSByZXF1aXJlbWVudHMuIFwiICtcclxuICAgICAgICAgICAgXCJDYWxsIEFjcXVpcmVUb2tlbiBhZ2FpbiBwcm92aWRpbmcgbW9yZSByZXF1aXJlbWVudHMgc3VjaCBhcyBhdXRob3JpdHkgb3IgYWNjb3VudC5cIlxyXG4gICAgfSxcclxuICAgIG11bHRpcGxlTWF0Y2hpbmdBY2NvdW50czoge1xyXG4gICAgICAgIGNvZGU6IFwibXVsdGlwbGVfbWF0Y2hpbmdfYWNjb3VudHNcIixcclxuICAgICAgICBkZXNjOiBcIlRoZSBjYWNoZSBjb250YWlucyBtdWx0aXBsZSBhY2NvdW50cyBzYXRpc2Z5aW5nIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLiBQbGVhc2UgcGFzcyBtb3JlIGluZm8gdG8gb2J0YWluIHRoZSBjb3JyZWN0IGFjY291bnRcIlxyXG4gICAgfSxcclxuICAgIG11bHRpcGxlTWF0Y2hpbmdBcHBNZXRhZGF0YToge1xyXG4gICAgICAgIGNvZGU6IFwibXVsdGlwbGVfbWF0Y2hpbmdfYXBwTWV0YWRhdGFcIixcclxuICAgICAgICBkZXNjOiBcIlRoZSBjYWNoZSBjb250YWlucyBtdWx0aXBsZSBhcHBNZXRhZGF0YSBzYXRpc2Z5aW5nIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLiBQbGVhc2UgcGFzcyBtb3JlIGluZm8gdG8gb2J0YWluIHRoZSBjb3JyZWN0IGFwcE1ldGFkYXRhXCJcclxuICAgIH0sXHJcbiAgICB0b2tlblJlcXVlc3RDYW5ub3RCZU1hZGU6IHtcclxuICAgICAgICBjb2RlOiBcInJlcXVlc3RfY2Fubm90X2JlX21hZGVcIixcclxuICAgICAgICBkZXNjOiBcIlRva2VuIHJlcXVlc3QgY2Fubm90IGJlIG1hZGUgd2l0aG91dCBhdXRob3JpemF0aW9uIGNvZGUgb3IgcmVmcmVzaCB0b2tlbi5cIlxyXG4gICAgfSxcclxuICAgIGFwcGVuZEVtcHR5U2NvcGVFcnJvcjoge1xyXG4gICAgICAgIGNvZGU6IFwiY2Fubm90X2FwcGVuZF9lbXB0eV9zY29wZVwiLFxyXG4gICAgICAgIGRlc2M6IFwiQ2Fubm90IGFwcGVuZCBudWxsIG9yIGVtcHR5IHNjb3BlIHRvIFNjb3BlU2V0LiBQbGVhc2UgY2hlY2sgdGhlIHN0YWNrIHRyYWNlIGZvciBtb3JlIGluZm8uXCJcclxuICAgIH0sXHJcbiAgICByZW1vdmVFbXB0eVNjb3BlRXJyb3I6IHtcclxuICAgICAgICBjb2RlOiBcImNhbm5vdF9yZW1vdmVfZW1wdHlfc2NvcGVcIixcclxuICAgICAgICBkZXNjOiBcIkNhbm5vdCByZW1vdmUgbnVsbCBvciBlbXB0eSBzY29wZSBmcm9tIFNjb3BlU2V0LiBQbGVhc2UgY2hlY2sgdGhlIHN0YWNrIHRyYWNlIGZvciBtb3JlIGluZm8uXCJcclxuICAgIH0sXHJcbiAgICBhcHBlbmRTY29wZVNldEVycm9yOiB7XHJcbiAgICAgICAgY29kZTogXCJjYW5ub3RfYXBwZW5kX3Njb3Blc2V0XCIsXHJcbiAgICAgICAgZGVzYzogXCJDYW5ub3QgYXBwZW5kIFNjb3BlU2V0IGR1ZSB0byBlcnJvci5cIlxyXG4gICAgfSxcclxuICAgIGVtcHR5SW5wdXRTY29wZVNldEVycm9yOiB7XHJcbiAgICAgICAgY29kZTogXCJlbXB0eV9pbnB1dF9zY29wZXNldFwiLFxyXG4gICAgICAgIGRlc2M6IFwiRW1wdHkgaW5wdXQgU2NvcGVTZXQgY2Fubm90IGJlIHByb2Nlc3NlZC5cIlxyXG4gICAgfSxcclxuICAgIERldmljZUNvZGVQb2xsaW5nQ2FuY2VsbGVkOiB7XHJcbiAgICAgICAgY29kZTogXCJkZXZpY2VfY29kZV9wb2xsaW5nX2NhbmNlbGxlZFwiLFxyXG4gICAgICAgIGRlc2M6IFwiQ2FsbGVyIGhhcyBjYW5jZWxsZWQgdG9rZW4gZW5kcG9pbnQgcG9sbGluZyBkdXJpbmcgZGV2aWNlIGNvZGUgZmxvdyBieSBzZXR0aW5nIERldmljZUNvZGVSZXF1ZXN0LmNhbmNlbCA9IHRydWUuXCJcclxuICAgIH0sXHJcbiAgICBEZXZpY2VDb2RlRXhwaXJlZDoge1xyXG4gICAgICAgIGNvZGU6IFwiZGV2aWNlX2NvZGVfZXhwaXJlZFwiLFxyXG4gICAgICAgIGRlc2M6IFwiRGV2aWNlIGNvZGUgaXMgZXhwaXJlZC5cIlxyXG4gICAgfSxcclxuICAgIE5vQWNjb3VudEluU2lsZW50UmVxdWVzdDoge1xyXG4gICAgICAgIGNvZGU6IFwibm9fYWNjb3VudF9pbl9zaWxlbnRfcmVxdWVzdFwiLFxyXG4gICAgICAgIGRlc2M6IFwiUGxlYXNlIHBhc3MgYW4gYWNjb3VudCBvYmplY3QsIHNpbGVudCBmbG93IGlzIG5vdCBzdXBwb3J0ZWQgd2l0aG91dCBhY2NvdW50IGluZm9ybWF0aW9uXCJcclxuICAgIH0sXHJcbiAgICBpbnZhbGlkQ2FjaGVSZWNvcmQ6IHtcclxuICAgICAgICBjb2RlOiBcImludmFsaWRfY2FjaGVfcmVjb3JkXCIsXHJcbiAgICAgICAgZGVzYzogXCJDYWNoZSByZWNvcmQgb2JqZWN0IHdhcyBudWxsIG9yIHVuZGVmaW5lZC5cIlxyXG4gICAgfSxcclxuICAgIGludmFsaWRDYWNoZUVudmlyb25tZW50OiB7XHJcbiAgICAgICAgY29kZTogXCJpbnZhbGlkX2NhY2hlX2Vudmlyb25tZW50XCIsXHJcbiAgICAgICAgZGVzYzogXCJJbnZhbGlkIGVudmlyb25tZW50IHdoZW4gYXR0ZW1wdGluZyB0byBjcmVhdGUgY2FjaGUgZW50cnlcIlxyXG4gICAgfSxcclxuICAgIG5vQWNjb3VudEZvdW5kOiB7XHJcbiAgICAgICAgY29kZTogXCJub19hY2NvdW50X2ZvdW5kXCIsXHJcbiAgICAgICAgZGVzYzogXCJObyBhY2NvdW50IGZvdW5kIGluIGNhY2hlIGZvciBnaXZlbiBrZXkuXCJcclxuICAgIH0sXHJcbiAgICBDYWNoZVBsdWdpbkVycm9yOiB7XHJcbiAgICAgICAgY29kZTogXCJubyBjYWNoZSBwbHVnaW4gc2V0IG9uIENhY2hlTWFuYWdlclwiLFxyXG4gICAgICAgIGRlc2M6IFwiSUNhY2hlUGx1Z2luIG5lZWRzIHRvIGJlIHNldCBiZWZvcmUgdXNpbmcgcmVhZEZyb21TdG9yYWdlIG9yIHdyaXRlRnJvbVN0b3JhZ2VcIlxyXG4gICAgfSxcclxuICAgIG5vQ3J5cHRvT2JqOiB7XHJcbiAgICAgICAgY29kZTogXCJub19jcnlwdG9fb2JqZWN0XCIsXHJcbiAgICAgICAgZGVzYzogXCJObyBjcnlwdG8gb2JqZWN0IGRldGVjdGVkLiBUaGlzIGlzIHJlcXVpcmVkIGZvciB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbjogXCJcclxuICAgIH0sXHJcbiAgICBpbnZhbGlkQ2FjaGVUeXBlOiB7XHJcbiAgICAgICAgY29kZTogXCJpbnZhbGlkX2NhY2hlX3R5cGVcIixcclxuICAgICAgICBkZXNjOiBcIkludmFsaWQgY2FjaGUgdHlwZVwiXHJcbiAgICB9LFxyXG4gICAgdW5leHBlY3RlZEFjY291bnRUeXBlOiB7XHJcbiAgICAgICAgY29kZTogXCJ1bmV4cGVjdGVkX2FjY291bnRfdHlwZVwiLFxyXG4gICAgICAgIGRlc2M6IFwiVW5leHBlY3RlZCBhY2NvdW50IHR5cGUuXCJcclxuICAgIH0sXHJcbiAgICB1bmV4cGVjdGVkQ3JlZGVudGlhbFR5cGU6IHtcclxuICAgICAgICBjb2RlOiBcInVuZXhwZWN0ZWRfY3JlZGVudGlhbF90eXBlXCIsXHJcbiAgICAgICAgZGVzYzogXCJVbmV4cGVjdGVkIGNyZWRlbnRpYWwgdHlwZS5cIlxyXG4gICAgfSxcclxuICAgIGludmFsaWRBc3NlcnRpb246IHtcclxuICAgICAgICBjb2RlOiBcImludmFsaWRfYXNzZXJ0aW9uXCIsXHJcbiAgICAgICAgZGVzYzogXCJDbGllbnQgYXNzZXJ0aW9uIG11c3QgbWVldCByZXF1aXJlbWVudHMgZGVzY3JpYmVkIGluIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NTE1XCJcclxuICAgIH0sXHJcbiAgICBpbnZhbGlkQ2xpZW50Q3JlZGVudGlhbDoge1xyXG4gICAgICAgIGNvZGU6IFwiaW52YWxpZF9jbGllbnRfY3JlZGVudGlhbFwiLFxyXG4gICAgICAgIGRlc2M6IFwiQ2xpZW50IGNyZWRlbnRpYWwgKHNlY3JldCwgY2VydGlmaWNhdGUsIG9yIGFzc2VydGlvbikgbXVzdCBub3QgYmUgZW1wdHkgd2hlbiBjcmVhdGluZyBhIGNvbmZpZGVudGlhbCBjbGllbnQuIEFuIGFwcGxpY2F0aW9uIHNob3VsZCBhdCBtb3N0IGhhdmUgb25lIGNyZWRlbnRpYWxcIlxyXG4gICAgfSxcclxuICAgIHRva2VuUmVmcmVzaFJlcXVpcmVkOiB7XHJcbiAgICAgICAgY29kZTogXCJ0b2tlbl9yZWZyZXNoX3JlcXVpcmVkXCIsXHJcbiAgICAgICAgZGVzYzogXCJDYW5ub3QgcmV0dXJuIHRva2VuIGZyb20gY2FjaGUgYmVjYXVzZSBpdCBtdXN0IGJlIHJlZnJlc2hlZC4gVGhpcyBtYXkgYmUgZHVlIHRvIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJlYXNvbnM6IGZvcmNlUmVmcmVzaCBwYXJhbWV0ZXIgaXMgc2V0IHRvIHRydWUsIGNsYWltcyBoYXZlIGJlZW4gcmVxdWVzdGVkLCB0aGVyZSBpcyBubyBjYWNoZWQgYWNjZXNzIHRva2VuIG9yIGl0IGlzIGV4cGlyZWQuXCJcclxuICAgIH0sXHJcbiAgICB1c2VyVGltZW91dFJlYWNoZWQ6IHtcclxuICAgICAgICBjb2RlOiBcInVzZXJfdGltZW91dF9yZWFjaGVkXCIsXHJcbiAgICAgICAgZGVzYzogXCJVc2VyIGRlZmluZWQgdGltZW91dCBmb3IgZGV2aWNlIGNvZGUgcG9sbGluZyByZWFjaGVkXCIsXHJcbiAgICB9LFxyXG4gICAgdG9rZW5DbGFpbXNSZXF1aXJlZDoge1xyXG4gICAgICAgIGNvZGU6IFwidG9rZW5fY2xhaW1zX2NuZl9yZXF1aXJlZF9mb3Jfc2lnbmVkand0XCIsXHJcbiAgICAgICAgZGVzYzogXCJDYW5ub3QgZ2VuZXJhdGUgYSBQT1Agand0IGlmIHRoZSB0b2tlbl9jbGFpbXMgYXJlIG5vdCBwb3B1bGF0ZWRcIlxyXG4gICAgfSxcclxuICAgIG5vQXV0aG9yaXphdGlvbkNvZGVGcm9tU2VydmVyOiB7XHJcbiAgICAgICAgY29kZTogXCJhdXRob3JpemF0aW9uX2NvZGVfbWlzc2luZ19mcm9tX3NlcnZlcl9yZXNwb25zZVwiLFxyXG4gICAgICAgIGRlc2M6IFwiU3J2ZXIgcmVzcG9uc2UgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpemF0aW9uIGNvZGUgdG8gcHJvY2VlZFwiXHJcbiAgICB9XHJcbn07XHJcblxyXG4vKipcclxuICogRXJyb3IgdGhyb3duIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IgaW4gdGhlIGNsaWVudCBjb2RlIHJ1bm5pbmcgb24gdGhlIGJyb3dzZXIuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ2xpZW50QXV0aEVycm9yIGV4dGVuZHMgQXV0aEVycm9yIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihlcnJvckNvZGU6IHN0cmluZywgZXJyb3JNZXNzYWdlPzogc3RyaW5nKSB7XHJcbiAgICAgICAgc3VwZXIoZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IFwiQ2xpZW50QXV0aEVycm9yXCI7XHJcblxyXG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBDbGllbnRBdXRoRXJyb3IucHJvdG90eXBlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYW4gZXJyb3IgdGhyb3duIHdoZW4gY2xpZW50IGluZm8gb2JqZWN0IGRvZXNuJ3QgZGVjb2RlIGNvcnJlY3RseS5cclxuICAgICAqIEBwYXJhbSBjYXVnaHRFcnJvclxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlQ2xpZW50SW5mb0RlY29kaW5nRXJyb3IoY2F1Z2h0RXJyb3I6IHN0cmluZyk6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS5jbGllbnRJbmZvRGVjb2RpbmdFcnJvci5jb2RlLFxyXG4gICAgICAgICAgICBgJHtDbGllbnRBdXRoRXJyb3JNZXNzYWdlLmNsaWVudEluZm9EZWNvZGluZ0Vycm9yLmRlc2N9IEZhaWxlZCB3aXRoIGVycm9yOiAke2NhdWdodEVycm9yfWApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBlcnJvciB0aHJvd24gaWYgdGhlIGNsaWVudCBpbmZvIGlzIGVtcHR5LlxyXG4gICAgICogQHBhcmFtIHJhd0NsaWVudEluZm9cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZUNsaWVudEluZm9FbXB0eUVycm9yKCk6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS5jbGllbnRJbmZvRW1wdHlFcnJvci5jb2RlLFxyXG4gICAgICAgICAgICBgJHtDbGllbnRBdXRoRXJyb3JNZXNzYWdlLmNsaWVudEluZm9FbXB0eUVycm9yLmRlc2N9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGFuIGVycm9yIHRocm93biB3aGVuIHRoZSBpZCB0b2tlbiBleHRyYWN0aW9uIGVycm9ycyBvdXQuXHJcbiAgICAgKiBAcGFyYW0gZXJyXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVUb2tlblBhcnNpbmdFcnJvcihjYXVnaHRFeHRyYWN0aW9uRXJyb3I6IHN0cmluZyk6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS50b2tlblBhcnNpbmdFcnJvci5jb2RlLFxyXG4gICAgICAgICAgICBgJHtDbGllbnRBdXRoRXJyb3JNZXNzYWdlLnRva2VuUGFyc2luZ0Vycm9yLmRlc2N9IEZhaWxlZCB3aXRoIGVycm9yOiAke2NhdWdodEV4dHJhY3Rpb25FcnJvcn1gKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYW4gZXJyb3IgdGhyb3duIHdoZW4gdGhlIGlkIHRva2VuIHN0cmluZyBpcyBudWxsIG9yIGVtcHR5LlxyXG4gICAgICogQHBhcmFtIGludmFsaWRSYXdUb2tlblN0cmluZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlVG9rZW5OdWxsT3JFbXB0eUVycm9yKGludmFsaWRSYXdUb2tlblN0cmluZzogc3RyaW5nKSA6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS5udWxsT3JFbXB0eVRva2VuLmNvZGUsXHJcbiAgICAgICAgICAgIGAke0NsaWVudEF1dGhFcnJvck1lc3NhZ2UubnVsbE9yRW1wdHlUb2tlbi5kZXNjfSBSYXcgVG9rZW4gVmFsdWU6ICR7aW52YWxpZFJhd1Rva2VuU3RyaW5nfWApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBlcnJvciB0aHJvd24gd2hlbiB0aGUgZW5kcG9pbnQgZGlzY292ZXJ5IGRvZXNuJ3QgY29tcGxldGUgY29ycmVjdGx5LlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlRW5kcG9pbnREaXNjb3ZlcnlJbmNvbXBsZXRlRXJyb3IoZXJyRGV0YWlsOiBzdHJpbmcpOiBDbGllbnRBdXRoRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aEVycm9yKENsaWVudEF1dGhFcnJvck1lc3NhZ2UuZW5kcG9pbnRSZXNvbHV0aW9uRXJyb3IuY29kZSxcclxuICAgICAgICAgICAgYCR7Q2xpZW50QXV0aEVycm9yTWVzc2FnZS5lbmRwb2ludFJlc29sdXRpb25FcnJvci5kZXNjfSBEZXRhaWw6ICR7ZXJyRGV0YWlsfWApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBlcnJvciB0aHJvd24gd2hlbiB0aGUgZmV0Y2ggY2xpZW50IHRocm93c1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlTmV0d29ya0Vycm9yKGVuZHBvaW50OiBzdHJpbmcsIGVyckRldGFpbDogc3RyaW5nKTogQ2xpZW50QXV0aEVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudEF1dGhFcnJvcihDbGllbnRBdXRoRXJyb3JNZXNzYWdlLm5ldHdvcmtFcnJvci5jb2RlLFxyXG4gICAgICAgICAgICBgJHtDbGllbnRBdXRoRXJyb3JNZXNzYWdlLm5ldHdvcmtFcnJvci5kZXNjfSB8IEZldGNoIGNsaWVudCB0aHJldzogJHtlcnJEZXRhaWx9IHwgQXR0ZW1wdGVkIHRvIHJlYWNoOiAke2VuZHBvaW50LnNwbGl0KFwiP1wiKVswXX1gKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYW4gZXJyb3IgdGhyb3duIHdoZW4gdGhlIG9wZW5pZC1jb25maWd1cmF0aW9uIGVuZHBvaW50IGNhbm5vdCBiZSByZWFjaGVkIG9yIGRvZXMgbm90IGNvbnRhaW4gdGhlIHJlcXVpcmVkIGRhdGFcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZVVuYWJsZVRvR2V0T3BlbmlkQ29uZmlnRXJyb3IoZXJyRGV0YWlsOiBzdHJpbmcpOiBDbGllbnRBdXRoRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aEVycm9yKENsaWVudEF1dGhFcnJvck1lc3NhZ2UudW5hYmxlVG9HZXRPcGVuaWRDb25maWdFcnJvci5jb2RlLFxyXG4gICAgICAgICAgICBgJHtDbGllbnRBdXRoRXJyb3JNZXNzYWdlLnVuYWJsZVRvR2V0T3BlbmlkQ29uZmlnRXJyb3IuZGVzY30gQXR0ZW1wdGVkIHRvIHJldHJpZXZlIGVuZHBvaW50cyBmcm9tOiAke2VyckRldGFpbH1gKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYW4gZXJyb3IgdGhyb3duIHdoZW4gdGhlIGhhc2ggY2Fubm90IGJlIGRlc2VyaWFsaXplZC5cclxuICAgICAqIEBwYXJhbSBoYXNoUGFyYW1PYmpcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZUhhc2hOb3REZXNlcmlhbGl6ZWRFcnJvcihoYXNoUGFyYW1PYmo6IHN0cmluZyk6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS5oYXNoTm90RGVzZXJpYWxpemVkLmNvZGUsXHJcbiAgICAgICAgICAgIGAke0NsaWVudEF1dGhFcnJvck1lc3NhZ2UuaGFzaE5vdERlc2VyaWFsaXplZC5kZXNjfSBHaXZlbiBPYmplY3Q6ICR7aGFzaFBhcmFtT2JqfWApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBlcnJvciB0aHJvd24gd2hlbiB0aGUgc3RhdGUgY2Fubm90IGJlIHBhcnNlZC5cclxuICAgICAqIEBwYXJhbSBpbnZhbGlkU3RhdGVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZUludmFsaWRTdGF0ZUVycm9yKGludmFsaWRTdGF0ZTogc3RyaW5nLCBlcnJvclN0cmluZz86IHN0cmluZyk6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS5pbnZhbGlkU3RhdGVFcnJvci5jb2RlLFxyXG4gICAgICAgICAgICBgJHtDbGllbnRBdXRoRXJyb3JNZXNzYWdlLmludmFsaWRTdGF0ZUVycm9yLmRlc2N9IEludmFsaWQgU3RhdGU6ICR7aW52YWxpZFN0YXRlfSwgUm9vdCBFcnI6ICR7ZXJyb3JTdHJpbmd9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGFuIGVycm9yIHRocm93biB3aGVuIHR3byBzdGF0ZXMgZG8gbm90IG1hdGNoLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlU3RhdGVNaXNtYXRjaEVycm9yKCk6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS5zdGF0ZU1pc21hdGNoRXJyb3IuY29kZSxcclxuICAgICAgICAgICAgQ2xpZW50QXV0aEVycm9yTWVzc2FnZS5zdGF0ZU1pc21hdGNoRXJyb3IuZGVzYyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGFuIGVycm9yIHRocm93biB3aGVuIHRoZSBzdGF0ZSBpcyBub3QgcHJlc2VudFxyXG4gICAgICogQHBhcmFtIG1pc3NpbmdTdGF0ZVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlU3RhdGVOb3RGb3VuZEVycm9yKG1pc3NpbmdTdGF0ZTogc3RyaW5nKTogQ2xpZW50QXV0aEVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudEF1dGhFcnJvcihDbGllbnRBdXRoRXJyb3JNZXNzYWdlLnN0YXRlTm90Rm91bmRFcnJvci5jb2RlLFxyXG4gICAgICAgICAgICBgJHtDbGllbnRBdXRoRXJyb3JNZXNzYWdlLnN0YXRlTm90Rm91bmRFcnJvci5kZXNjfTogICR7bWlzc2luZ1N0YXRlfWApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBlcnJvciB0aHJvd24gd2hlbiB0aGUgbm9uY2UgZG9lcyBub3QgbWF0Y2guXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVOb25jZU1pc21hdGNoRXJyb3IoKTogQ2xpZW50QXV0aEVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudEF1dGhFcnJvcihDbGllbnRBdXRoRXJyb3JNZXNzYWdlLm5vbmNlTWlzbWF0Y2hFcnJvci5jb2RlLFxyXG4gICAgICAgICAgICBDbGllbnRBdXRoRXJyb3JNZXNzYWdlLm5vbmNlTWlzbWF0Y2hFcnJvci5kZXNjKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYW4gZXJyb3IgdGhyb3duIHdoZW4gdGhlIG1ub25jZSBpcyBub3QgcHJlc2VudFxyXG4gICAgICogQHBhcmFtIG1pc3NpbmdOb25jZVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlTm9uY2VOb3RGb3VuZEVycm9yKG1pc3NpbmdOb25jZTogc3RyaW5nKTogQ2xpZW50QXV0aEVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudEF1dGhFcnJvcihDbGllbnRBdXRoRXJyb3JNZXNzYWdlLm5vbmNlTm90Rm91bmRFcnJvci5jb2RlLFxyXG4gICAgICAgICAgICBgJHtDbGllbnRBdXRoRXJyb3JNZXNzYWdlLm5vbmNlTm90Rm91bmRFcnJvci5kZXNjfTogICR7bWlzc2luZ05vbmNlfWApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBlcnJvciB0aHJvd24gd2hlbiB0aGUgYXV0aG9yaXphdGlvbiBjb2RlIHJlcXVpcmVkIGZvciBhIHRva2VuIHJlcXVlc3QgaXMgbnVsbCBvciBlbXB0eS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZU5vVG9rZW5zRm91bmRFcnJvcigpOiBDbGllbnRBdXRoRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aEVycm9yKENsaWVudEF1dGhFcnJvck1lc3NhZ2Uubm9Ub2tlbnNGb3VuZEVycm9yLmNvZGUsIENsaWVudEF1dGhFcnJvck1lc3NhZ2Uubm9Ub2tlbnNGb3VuZEVycm9yLmRlc2MpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhyb3dzIGVycm9yIHdoZW4gbXVsdGlwbGUgdG9rZW5zIGFyZSBpbiBjYWNoZS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZU11bHRpcGxlTWF0Y2hpbmdUb2tlbnNJbkNhY2hlRXJyb3IoKTogQ2xpZW50QXV0aEVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudEF1dGhFcnJvcihDbGllbnRBdXRoRXJyb3JNZXNzYWdlLm11bHRpcGxlTWF0Y2hpbmdUb2tlbnMuY29kZSxcclxuICAgICAgICAgICAgYCR7Q2xpZW50QXV0aEVycm9yTWVzc2FnZS5tdWx0aXBsZU1hdGNoaW5nVG9rZW5zLmRlc2N9LmApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhyb3dzIGVycm9yIHdoZW4gbXVsdGlwbGUgYWNjb3VudHMgYXJlIGluIGNhY2hlIGZvciB0aGUgZ2l2ZW4gcGFyYW1zXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVNdWx0aXBsZU1hdGNoaW5nQWNjb3VudHNJbkNhY2hlRXJyb3IoKTogQ2xpZW50QXV0aEVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudEF1dGhFcnJvcihDbGllbnRBdXRoRXJyb3JNZXNzYWdlLm11bHRpcGxlTWF0Y2hpbmdBY2NvdW50cy5jb2RlLFxyXG4gICAgICAgICAgICBDbGllbnRBdXRoRXJyb3JNZXNzYWdlLm11bHRpcGxlTWF0Y2hpbmdBY2NvdW50cy5kZXNjKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRocm93cyBlcnJvciB3aGVuIG11bHRpcGxlIGFwcE1ldGFkYSBhcmUgaW4gY2FjaGUgZm9yIHRoZSBnaXZlbiBjbGllbnRJZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZU11bHRpcGxlTWF0Y2hpbmdBcHBNZXRhZGF0YUluQ2FjaGVFcnJvcigpOiBDbGllbnRBdXRoRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aEVycm9yKENsaWVudEF1dGhFcnJvck1lc3NhZ2UubXVsdGlwbGVNYXRjaGluZ0FwcE1ldGFkYXRhLmNvZGUsXHJcbiAgICAgICAgICAgIENsaWVudEF1dGhFcnJvck1lc3NhZ2UubXVsdGlwbGVNYXRjaGluZ0FwcE1ldGFkYXRhLmRlc2MpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhyb3dzIGVycm9yIHdoZW4gbm8gYXV0aCBjb2RlIG9yIHJlZnJlc2ggdG9rZW4gaXMgZ2l2ZW4gdG8gU2VydmVyVG9rZW5SZXF1ZXN0UGFyYW1ldGVycy5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZVRva2VuUmVxdWVzdENhbm5vdEJlTWFkZUVycm9yKCk6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS50b2tlblJlcXVlc3RDYW5ub3RCZU1hZGUuY29kZSwgQ2xpZW50QXV0aEVycm9yTWVzc2FnZS50b2tlblJlcXVlc3RDYW5ub3RCZU1hZGUuZGVzYyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaHJvd3MgZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGFwcGVuZCBhIG51bGwsIHVuZGVmaW5lZCBvciBlbXB0eSBzY29wZSB0byBhIHNldFxyXG4gICAgICogQHBhcmFtIGdpdmVuU2NvcGVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZUFwcGVuZEVtcHR5U2NvcGVUb1NldEVycm9yKGdpdmVuU2NvcGU6IHN0cmluZyk6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS5hcHBlbmRFbXB0eVNjb3BlRXJyb3IuY29kZSwgYCR7Q2xpZW50QXV0aEVycm9yTWVzc2FnZS5hcHBlbmRFbXB0eVNjb3BlRXJyb3IuZGVzY30gR2l2ZW4gU2NvcGU6ICR7Z2l2ZW5TY29wZX1gKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRocm93cyBlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gYXBwZW5kIGEgbnVsbCwgdW5kZWZpbmVkIG9yIGVtcHR5IHNjb3BlIHRvIGEgc2V0XHJcbiAgICAgKiBAcGFyYW0gZ2l2ZW5TY29wZVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlUmVtb3ZlRW1wdHlTY29wZUZyb21TZXRFcnJvcihnaXZlblNjb3BlOiBzdHJpbmcpOiBDbGllbnRBdXRoRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aEVycm9yKENsaWVudEF1dGhFcnJvck1lc3NhZ2UucmVtb3ZlRW1wdHlTY29wZUVycm9yLmNvZGUsIGAke0NsaWVudEF1dGhFcnJvck1lc3NhZ2UucmVtb3ZlRW1wdHlTY29wZUVycm9yLmRlc2N9IEdpdmVuIFNjb3BlOiAke2dpdmVuU2NvcGV9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaHJvd3MgZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGFwcGVuZCBudWxsIG9yIGVtcHR5IFNjb3BlU2V0LlxyXG4gICAgICogQHBhcmFtIGFwcGVuZEVycm9yXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVBcHBlbmRTY29wZVNldEVycm9yKGFwcGVuZEVycm9yOiBzdHJpbmcpOiBDbGllbnRBdXRoRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aEVycm9yKENsaWVudEF1dGhFcnJvck1lc3NhZ2UuYXBwZW5kU2NvcGVTZXRFcnJvci5jb2RlLCBgJHtDbGllbnRBdXRoRXJyb3JNZXNzYWdlLmFwcGVuZFNjb3BlU2V0RXJyb3IuZGVzY30gRGV0YWlsIEVycm9yOiAke2FwcGVuZEVycm9yfWApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhyb3dzIGVycm9yIGlmIFNjb3BlU2V0IGlzIG51bGwgb3IgdW5kZWZpbmVkLlxyXG4gICAgICogQHBhcmFtIGdpdmVuU2NvcGVTZXRcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZUVtcHR5SW5wdXRTY29wZVNldEVycm9yKGdpdmVuU2NvcGVTZXQ6IFNjb3BlU2V0KTogQ2xpZW50QXV0aEVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudEF1dGhFcnJvcihDbGllbnRBdXRoRXJyb3JNZXNzYWdlLmVtcHR5SW5wdXRTY29wZVNldEVycm9yLmNvZGUsIGAke0NsaWVudEF1dGhFcnJvck1lc3NhZ2UuZW1wdHlJbnB1dFNjb3BlU2V0RXJyb3IuZGVzY30gR2l2ZW4gU2NvcGVTZXQ6ICR7Z2l2ZW5TY29wZVNldH1gKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRocm93cyBlcnJvciBpZiB1c2VyIHNldHMgQ2FuY2VsbGF0aW9uVG9rZW4uY2FuY2VsID0gdHJ1ZSBkdXJpbmcgcG9sbGluZyBvZiB0b2tlbiBlbmRwb2ludCBkdXJpbmcgZGV2aWNlIGNvZGUgZmxvd1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlRGV2aWNlQ29kZUNhbmNlbGxlZEVycm9yKCk6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS5EZXZpY2VDb2RlUG9sbGluZ0NhbmNlbGxlZC5jb2RlLCBgJHtDbGllbnRBdXRoRXJyb3JNZXNzYWdlLkRldmljZUNvZGVQb2xsaW5nQ2FuY2VsbGVkLmRlc2N9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaHJvd3MgZXJyb3IgaWYgZGV2aWNlIGNvZGUgaXMgZXhwaXJlZFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlRGV2aWNlQ29kZUV4cGlyZWRFcnJvcigpOiBDbGllbnRBdXRoRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aEVycm9yKENsaWVudEF1dGhFcnJvck1lc3NhZ2UuRGV2aWNlQ29kZUV4cGlyZWQuY29kZSwgYCR7Q2xpZW50QXV0aEVycm9yTWVzc2FnZS5EZXZpY2VDb2RlRXhwaXJlZC5kZXNjfWApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhyb3dzIGVycm9yIHdoZW4gc2lsZW50IHJlcXVlc3RzIGFyZSBtYWRlIHdpdGhvdXQgYW4gYWNjb3VudCBvYmplY3RcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZU5vQWNjb3VudEluU2lsZW50UmVxdWVzdEVycm9yKCk6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS5Ob0FjY291bnRJblNpbGVudFJlcXVlc3QuY29kZSwgYCR7Q2xpZW50QXV0aEVycm9yTWVzc2FnZS5Ob0FjY291bnRJblNpbGVudFJlcXVlc3QuZGVzY31gKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRocm93cyBlcnJvciB3aGVuIGNhY2hlIHJlY29yZCBpcyBudWxsIG9yIHVuZGVmaW5lZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZU51bGxPclVuZGVmaW5lZENhY2hlUmVjb3JkKCk6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS5pbnZhbGlkQ2FjaGVSZWNvcmQuY29kZSwgQ2xpZW50QXV0aEVycm9yTWVzc2FnZS5pbnZhbGlkQ2FjaGVSZWNvcmQuZGVzYyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaHJvd3MgZXJyb3Igd2hlbiBwcm92aWRlZCBlbnZpcm9ubWVudCBpcyBub3QgcGFydCBvZiB0aGUgQ2xvdWREaXNjb3ZlcnlNZXRhZGF0YSBvYmplY3RcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZUludmFsaWRDYWNoZUVudmlyb25tZW50RXJyb3IoKTogQ2xpZW50QXV0aEVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudEF1dGhFcnJvcihDbGllbnRBdXRoRXJyb3JNZXNzYWdlLmludmFsaWRDYWNoZUVudmlyb25tZW50LmNvZGUsIENsaWVudEF1dGhFcnJvck1lc3NhZ2UuaW52YWxpZENhY2hlRW52aXJvbm1lbnQuZGVzYyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaHJvd3MgZXJyb3Igd2hlbiBhY2NvdW50IGlzIG5vdCBmb3VuZCBpbiBjYWNoZS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZU5vQWNjb3VudEZvdW5kRXJyb3IoKTogQ2xpZW50QXV0aEVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudEF1dGhFcnJvcihDbGllbnRBdXRoRXJyb3JNZXNzYWdlLm5vQWNjb3VudEZvdW5kLmNvZGUsIENsaWVudEF1dGhFcnJvck1lc3NhZ2Uubm9BY2NvdW50Rm91bmQuZGVzYyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaHJvd3MgZXJyb3IgaWYgSUNhY2hlUGx1Z2luIG5vdCBzZXQgb24gQ2FjaGVNYW5hZ2VyLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlQ2FjaGVQbHVnaW5FcnJvcigpOiBDbGllbnRBdXRoRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aEVycm9yKENsaWVudEF1dGhFcnJvck1lc3NhZ2UuQ2FjaGVQbHVnaW5FcnJvci5jb2RlLCBgJHtDbGllbnRBdXRoRXJyb3JNZXNzYWdlLkNhY2hlUGx1Z2luRXJyb3IuZGVzY31gKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRocm93cyBlcnJvciBpZiBjcnlwdG8gb2JqZWN0IG5vdCBmb3VuZC5cclxuICAgICAqIEBwYXJhbSBvcGVyYXRpb25OYW1lXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVOb0NyeXB0b09iamVjdEVycm9yKG9wZXJhdGlvbk5hbWU6IHN0cmluZyk6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS5ub0NyeXB0b09iai5jb2RlLCBgJHtDbGllbnRBdXRoRXJyb3JNZXNzYWdlLm5vQ3J5cHRvT2JqLmRlc2N9JHtvcGVyYXRpb25OYW1lfWApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhyb3dzIGVycm9yIGlmIGNhY2hlIHR5cGUgaXMgaW52YWxpZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZUludmFsaWRDYWNoZVR5cGVFcnJvcigpOiBDbGllbnRBdXRoRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aEVycm9yKENsaWVudEF1dGhFcnJvck1lc3NhZ2UuaW52YWxpZENhY2hlVHlwZS5jb2RlLCBgJHtDbGllbnRBdXRoRXJyb3JNZXNzYWdlLmludmFsaWRDYWNoZVR5cGUuZGVzY31gKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRocm93cyBlcnJvciBpZiB1bmV4cGVjdGVkIGFjY291bnQgdHlwZS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZVVuZXhwZWN0ZWRBY2NvdW50VHlwZUVycm9yKCk6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS51bmV4cGVjdGVkQWNjb3VudFR5cGUuY29kZSwgYCR7Q2xpZW50QXV0aEVycm9yTWVzc2FnZS51bmV4cGVjdGVkQWNjb3VudFR5cGUuZGVzY31gKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRocm93cyBlcnJvciBpZiB1bmV4cGVjdGVkIGNyZWRlbnRpYWwgdHlwZS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZVVuZXhwZWN0ZWRDcmVkZW50aWFsVHlwZUVycm9yKCk6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS51bmV4cGVjdGVkQ3JlZGVudGlhbFR5cGUuY29kZSwgYCR7Q2xpZW50QXV0aEVycm9yTWVzc2FnZS51bmV4cGVjdGVkQ3JlZGVudGlhbFR5cGUuZGVzY31gKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRocm93cyBlcnJvciBpZiBjbGllbnQgYXNzZXJ0aW9uIGlzIG5vdCB2YWxpZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZUludmFsaWRBc3NlcnRpb25FcnJvcigpOiBDbGllbnRBdXRoRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aEVycm9yKENsaWVudEF1dGhFcnJvck1lc3NhZ2UuaW52YWxpZEFzc2VydGlvbi5jb2RlLCBgJHtDbGllbnRBdXRoRXJyb3JNZXNzYWdlLmludmFsaWRBc3NlcnRpb24uZGVzY31gKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRocm93cyBlcnJvciBpZiBjbGllbnQgYXNzZXJ0aW9uIGlzIG5vdCB2YWxpZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZUludmFsaWRDcmVkZW50aWFsRXJyb3IoKTogQ2xpZW50QXV0aEVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudEF1dGhFcnJvcihDbGllbnRBdXRoRXJyb3JNZXNzYWdlLmludmFsaWRDbGllbnRDcmVkZW50aWFsLmNvZGUsIGAke0NsaWVudEF1dGhFcnJvck1lc3NhZ2UuaW52YWxpZENsaWVudENyZWRlbnRpYWwuZGVzY31gKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRocm93cyBlcnJvciBpZiB0b2tlbiBjYW5ub3QgYmUgcmV0cmlldmVkIGZyb20gY2FjaGUgZHVlIHRvIHJlZnJlc2ggYmVpbmcgcmVxdWlyZWQuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVSZWZyZXNoUmVxdWlyZWRFcnJvcigpOiBDbGllbnRBdXRoRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aEVycm9yKENsaWVudEF1dGhFcnJvck1lc3NhZ2UudG9rZW5SZWZyZXNoUmVxdWlyZWQuY29kZSwgQ2xpZW50QXV0aEVycm9yTWVzc2FnZS50b2tlblJlZnJlc2hSZXF1aXJlZC5kZXNjKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRocm93cyBlcnJvciBpZiB0aGUgdXNlciBkZWZpbmVkIHRpbWVvdXQgaXMgcmVhY2hlZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZVVzZXJUaW1lb3V0UmVhY2hlZEVycm9yKCk6IENsaWVudEF1dGhFcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoRXJyb3IoQ2xpZW50QXV0aEVycm9yTWVzc2FnZS51c2VyVGltZW91dFJlYWNoZWQuY29kZSwgQ2xpZW50QXV0aEVycm9yTWVzc2FnZS51c2VyVGltZW91dFJlYWNoZWQuZGVzYyk7XHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICAqIFRocm93cyBlcnJvciBpZiB0b2tlbiBjbGFpbXMgYXJlIG5vdCBwb3B1bGF0ZWQgZm9yIGEgc2lnbmVkIGp3dCBnZW5lcmF0aW9uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVUb2tlbkNsYWltc1JlcXVpcmVkRXJyb3IoKTogQ2xpZW50QXV0aEVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudEF1dGhFcnJvcihDbGllbnRBdXRoRXJyb3JNZXNzYWdlLnRva2VuQ2xhaW1zUmVxdWlyZWQuY29kZSwgQ2xpZW50QXV0aEVycm9yTWVzc2FnZS50b2tlbkNsYWltc1JlcXVpcmVkLmRlc2MpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhyb3dzIGVycm9yIHdoZW4gdGhlIGF1dGhvcml6YXRpb24gY29kZSBpcyBtaXNzaW5nIGZyb20gdGhlIHNlcnZlciByZXNwb25zZVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlTm9BdXRoQ29kZUluU2VydmVyUmVzcG9uc2VFcnJvcigpOiBDbGllbnRBdXRoRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aEVycm9yKENsaWVudEF1dGhFcnJvck1lc3NhZ2Uubm9BdXRob3JpemF0aW9uQ29kZUZyb21TZXJ2ZXIuY29kZSwgQ2xpZW50QXV0aEVycm9yTWVzc2FnZS5ub0F1dGhvcml6YXRpb25Db2RlRnJvbVNlcnZlci5kZXNjKTtcclxuICAgIH1cclxufVxyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IERlY29kZWRBdXRoVG9rZW4gfSBmcm9tIFwiLi4vYWNjb3VudC9EZWNvZGVkQXV0aFRva2VuXCI7XHJcbmltcG9ydCB7IENsaWVudEF1dGhFcnJvciB9IGZyb20gXCIuLi9lcnJvci9DbGllbnRBdXRoRXJyb3JcIjtcclxuXHJcbi8qKlxyXG4gKiBAaGlkZGVuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU3RyaW5nVXRpbHMge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVjb2RlIGEgSldUXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGF1dGhUb2tlblxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZGVjb2RlQXV0aFRva2VuKGF1dGhUb2tlbjogc3RyaW5nKTogRGVjb2RlZEF1dGhUb2tlbiB7XHJcbiAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzRW1wdHkoYXV0aFRva2VuKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRBdXRoRXJyb3IuY3JlYXRlVG9rZW5OdWxsT3JFbXB0eUVycm9yKGF1dGhUb2tlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRva2VuUGFydHNSZWdleCA9IC9eKFteXFwuXFxzXSopXFwuKFteXFwuXFxzXSspXFwuKFteXFwuXFxzXSopJC87XHJcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHRva2VuUGFydHNSZWdleC5leGVjKGF1dGhUb2tlbik7XHJcbiAgICAgICAgaWYgKCFtYXRjaGVzIHx8IG1hdGNoZXMubGVuZ3RoIDwgNCkge1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRBdXRoRXJyb3IuY3JlYXRlVG9rZW5QYXJzaW5nRXJyb3IoYEdpdmVuIHRva2VuIGlzIG1hbGZvcm1lZDogJHtKU09OLnN0cmluZ2lmeShhdXRoVG9rZW4pfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjcmFja2VkVG9rZW46IERlY29kZWRBdXRoVG9rZW4gPSB7XHJcbiAgICAgICAgICAgIGhlYWRlcjogbWF0Y2hlc1sxXSxcclxuICAgICAgICAgICAgSldTUGF5bG9hZDogbWF0Y2hlc1syXSxcclxuICAgICAgICAgICAgSldTU2lnOiBtYXRjaGVzWzNdXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gY3JhY2tlZFRva2VuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2sgaWYgYSBzdHJpbmcgaXMgZW1wdHkuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHN0clxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNFbXB0eShzdHI/OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHR5cGVvZiBzdHIgPT09IFwidW5kZWZpbmVkXCIgfHwgIXN0ciB8fCAwID09PSBzdHIubGVuZ3RoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc3RhcnRzV2l0aChzdHI6IHN0cmluZywgc2VhcmNoOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gc3RyLmluZGV4T2Yoc2VhcmNoKSA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZW5kc1dpdGgoc3RyOiBzdHJpbmcsIHNlYXJjaDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChzdHIubGVuZ3RoID49IHNlYXJjaC5sZW5ndGgpICYmIChzdHIubGFzdEluZGV4T2Yoc2VhcmNoKSA9PT0gKHN0ci5sZW5ndGggLSBzZWFyY2gubGVuZ3RoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXJzZXMgc3RyaW5nIGludG8gYW4gb2JqZWN0LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBxdWVyeVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcXVlcnlTdHJpbmdUb09iamVjdDxUPihxdWVyeTogc3RyaW5nKTogVCB7XHJcbiAgICAgICAgbGV0IG1hdGNoOiBBcnJheTxzdHJpbmc+IHwgbnVsbDsgLy8gUmVnZXggZm9yIHJlcGxhY2luZyBhZGRpdGlvbiBzeW1ib2wgd2l0aCBhIHNwYWNlXHJcbiAgICAgICAgY29uc3QgcGwgPSAvXFwrL2c7XHJcbiAgICAgICAgY29uc3Qgc2VhcmNoID0gLyhbXiY9XSspPShbXiZdKikvZztcclxuICAgICAgICBjb25zdCBkZWNvZGUgPSAoczogc3RyaW5nKTogc3RyaW5nID0+IGRlY29kZVVSSUNvbXBvbmVudChkZWNvZGVVUklDb21wb25lbnQocy5yZXBsYWNlKHBsLCBcIiBcIikpKTtcclxuICAgICAgICBjb25zdCBvYmo6IHt9ID0ge307XHJcbiAgICAgICAgbWF0Y2ggPSBzZWFyY2guZXhlYyhxdWVyeSk7XHJcbiAgICAgICAgd2hpbGUgKG1hdGNoKSB7XHJcbiAgICAgICAgICAgIG9ialtkZWNvZGUobWF0Y2hbMV0pXSA9IGRlY29kZShtYXRjaFsyXSk7XHJcbiAgICAgICAgICAgIG1hdGNoID0gc2VhcmNoLmV4ZWMocXVlcnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb2JqIGFzIFQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmltcyBlbnRyaWVzIGluIGFuIGFycmF5LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBhcnJcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHRyaW1BcnJheUVudHJpZXMoYXJyOiBBcnJheTxzdHJpbmc+KTogQXJyYXk8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIGFyci5tYXAoZW50cnkgPT4gZW50cnkudHJpbSgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgZW1wdHkgc3RyaW5ncyBmcm9tIGFycmF5XHJcbiAgICAgKiBAcGFyYW0gYXJyXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyByZW1vdmVFbXB0eVN0cmluZ3NGcm9tQXJyYXkoYXJyOiBBcnJheTxzdHJpbmc+KTogQXJyYXk8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIGFyci5maWx0ZXIoZW50cnkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gIVN0cmluZ1V0aWxzLmlzRW1wdHkoZW50cnkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXR0ZW1wdHMgdG8gcGFyc2UgYSBzdHJpbmcgaW50byBKU09OXHJcbiAgICAgKiBAcGFyYW0gc3RyXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBqc29uUGFyc2VIZWxwZXI8VD4oc3RyOiBzdHJpbmcpOiBUIHwgbnVsbCB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RyKSBhcyBUO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVzdHMgaWYgYSBnaXZlbiBzdHJpbmcgbWF0Y2hlcyBhIGdpdmVuIHBhdHRlcm4sIHdpdGggc3VwcG9ydCBmb3Igd2lsZGNhcmRzLlxyXG4gICAgICogQHBhcmFtIHBhdHRlcm4gV2lsZGNhcmQgcGF0dGVybiB0byBzdHJpbmcgbWF0Y2guIFN1cHBvcnRzIFwiKlwiIGZvciB3aWxkY2FyZHNcclxuICAgICAqIEBwYXJhbSBpbnB1dCBTdHJpbmcgdG8gbWF0Y2ggYWdhaW5zdFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgbWF0Y2hQYXR0ZXJuKHBhdHRlcm46IHN0cmluZywgaW5wdXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zMTE3MjQ4LzQ4ODg1NTlcclxuICAgICAgICBjb25zdCByZWdleDogUmVnRXhwID0gbmV3IFJlZ0V4cChwYXR0ZXJuLnJlcGxhY2UoL1xcKi9nLCBcIlteIF0qXCIpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QoaW5wdXQpO1xyXG4gICAgfVxyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tIFwiLi4vdXRpbHMvU3RyaW5nVXRpbHNcIjtcclxuaW1wb3J0IHsgTG9nZ2VyT3B0aW9ucyB9IGZyb20gXCIuLi9jb25maWcvQ2xpZW50Q29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vdXRpbHMvQ29uc3RhbnRzXCI7XHJcblxyXG4vKipcclxuICogT3B0aW9ucyBmb3IgbG9nZ2VyIG1lc3NhZ2VzLlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgTG9nZ2VyTWVzc2FnZU9wdGlvbnMgPSB7XHJcbiAgICBsb2dMZXZlbDogTG9nTGV2ZWwsXHJcbiAgICBjb3JyZWxhdGlvbklkPzogc3RyaW5nLFxyXG4gICAgY29udGFpbnNQaWk/OiBib29sZWFuLFxyXG4gICAgY29udGV4dD86IHN0cmluZ1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIExvZyBtZXNzYWdlIGxldmVsLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gTG9nTGV2ZWwge1xyXG4gICAgRXJyb3IsXHJcbiAgICBXYXJuaW5nLFxyXG4gICAgSW5mbyxcclxuICAgIFZlcmJvc2VcclxufVxyXG5cclxuLyoqXHJcbiAqIENhbGxiYWNrIHRvIHNlbmQgdGhlIG1lc3NhZ2VzIHRvLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJTG9nZ2VyQ2FsbGJhY2sge1xyXG4gICAgKGxldmVsOiBMb2dMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjb250YWluc1BpaTogYm9vbGVhbik6IHZvaWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDbGFzcyB3aGljaCBmYWNpbGl0YXRlcyBsb2dnaW5nIG9mIG1lc3NhZ2VzIHRvIGEgc3BlY2lmaWMgcGxhY2UuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTG9nZ2VyIHtcclxuXHJcbiAgICAvLyBDb3JyZWxhdGlvbiBJRCBmb3IgcmVxdWVzdCwgdXN1YWxseSBzZXQgYnkgdXNlci5cclxuICAgIHByaXZhdGUgY29ycmVsYXRpb25JZDogc3RyaW5nO1xyXG5cclxuICAgIC8vIEN1cnJlbnQgbG9nIGxldmVsLCBkZWZhdWx0cyB0byBpbmZvLlxyXG4gICAgcHJpdmF0ZSBsZXZlbDogTG9nTGV2ZWwgPSBMb2dMZXZlbC5JbmZvO1xyXG5cclxuICAgIC8vIEJvb2xlYW4gZGVzY3JpYmluZyB3aGV0aGVyIFBJSSBsb2dnaW5nIGlzIGFsbG93ZWQuXHJcbiAgICBwcml2YXRlIHBpaUxvZ2dpbmdFbmFibGVkOiBib29sZWFuO1xyXG5cclxuICAgIC8vIENhbGxiYWNrIHRvIHNlbmQgbWVzc2FnZXMgdG8uXHJcbiAgICBwcml2YXRlIGxvY2FsQ2FsbGJhY2s6IElMb2dnZXJDYWxsYmFjaztcclxuXHJcbiAgICAvLyBQYWNrYWdlIG5hbWUgaW1wbGVtZW50aW5nIHRoaXMgbG9nZ2VyXHJcbiAgICBwcml2YXRlIHBhY2thZ2VOYW1lOiBzdHJpbmc7XHJcblxyXG4gICAgLy8gUGFja2FnZSB2ZXJzaW9uIGltcGxlbWVudGluZyB0aGlzIGxvZ2dlclxyXG4gICAgcHJpdmF0ZSBwYWNrYWdlVmVyc2lvbjogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGxvZ2dlck9wdGlvbnM6IExvZ2dlck9wdGlvbnMsIHBhY2thZ2VOYW1lPzogc3RyaW5nLCBwYWNrYWdlVmVyc2lvbj86IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRMb2dnZXJDYWxsYmFjayA9ICgpID0+IHt9O1xyXG4gICAgICAgIHRoaXMubG9jYWxDYWxsYmFjayA9IGxvZ2dlck9wdGlvbnMubG9nZ2VyQ2FsbGJhY2sgfHwgZGVmYXVsdExvZ2dlckNhbGxiYWNrO1xyXG4gICAgICAgIHRoaXMucGlpTG9nZ2luZ0VuYWJsZWQgPSBsb2dnZXJPcHRpb25zLnBpaUxvZ2dpbmdFbmFibGVkIHx8IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubGV2ZWwgPSBsb2dnZXJPcHRpb25zLmxvZ0xldmVsIHx8IExvZ0xldmVsLkluZm87XHJcblxyXG4gICAgICAgIHRoaXMucGFja2FnZU5hbWUgPSBwYWNrYWdlTmFtZSB8fCBDb25zdGFudHMuRU1QVFlfU1RSSU5HO1xyXG4gICAgICAgIHRoaXMucGFja2FnZVZlcnNpb24gPSBwYWNrYWdlVmVyc2lvbiB8fCBDb25zdGFudHMuRU1QVFlfU1RSSU5HO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlIG5ldyBMb2dnZXIgd2l0aCBleGlzdGluZyBjb25maWd1cmF0aW9ucy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsb25lKHBhY2thZ2VOYW1lOiBzdHJpbmcsIHBhY2thZ2VWZXJzaW9uOiBzdHJpbmcpOiBMb2dnZXIge1xyXG4gICAgICAgIHJldHVybiBuZXcgTG9nZ2VyKHtsb2dnZXJDYWxsYmFjazogdGhpcy5sb2NhbENhbGxiYWNrLCBwaWlMb2dnaW5nRW5hYmxlZDogdGhpcy5waWlMb2dnaW5nRW5hYmxlZCwgbG9nTGV2ZWw6IHRoaXMubGV2ZWx9LCBwYWNrYWdlTmFtZSwgcGFja2FnZVZlcnNpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9nIG1lc3NhZ2Ugd2l0aCByZXF1aXJlZCBvcHRpb25zLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGxvZ01lc3NhZ2UobG9nTWVzc2FnZTogc3RyaW5nLCBvcHRpb25zOiBMb2dnZXJNZXNzYWdlT3B0aW9ucyk6IHZvaWQge1xyXG4gICAgICAgIGlmICgob3B0aW9ucy5sb2dMZXZlbCA+IHRoaXMubGV2ZWwpIHx8ICghdGhpcy5waWlMb2dnaW5nRW5hYmxlZCAmJiBvcHRpb25zLmNvbnRhaW5zUGlpKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkudG9VVENTdHJpbmcoKTtcclxuICAgICAgICBjb25zdCBsb2dIZWFkZXI6IHN0cmluZyA9IFN0cmluZ1V0aWxzLmlzRW1wdHkodGhpcy5jb3JyZWxhdGlvbklkKSA/IGBbJHt0aW1lc3RhbXB9XSA6IGAgOiBgWyR7dGltZXN0YW1wfV0gOiBbJHt0aGlzLmNvcnJlbGF0aW9uSWR9XWA7XHJcbiAgICAgICAgY29uc3QgbG9nID0gYCR7bG9nSGVhZGVyfSA6ICR7dGhpcy5wYWNrYWdlTmFtZX1AJHt0aGlzLnBhY2thZ2VWZXJzaW9ufSA6ICR7TG9nTGV2ZWxbb3B0aW9ucy5sb2dMZXZlbF19IC0gJHtsb2dNZXNzYWdlfWA7XHJcbiAgICAgICAgLy8gZGVidWcoYG1zYWw6JHtMb2dMZXZlbFtvcHRpb25zLmxvZ0xldmVsXX0ke29wdGlvbnMuY29udGFpbnNQaWkgPyBcIi1QaWlcIjogXCJcIn0ke29wdGlvbnMuY29udGV4dCA/IGA6JHtvcHRpb25zLmNvbnRleHR9YCA6IFwiXCJ9YCkobG9nTWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5leGVjdXRlQ2FsbGJhY2sob3B0aW9ucy5sb2dMZXZlbCwgbG9nLCBvcHRpb25zLmNvbnRhaW5zUGlpIHx8IGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV4ZWN1dGUgY2FsbGJhY2sgd2l0aCBtZXNzYWdlLlxyXG4gICAgICovXHJcbiAgICBleGVjdXRlQ2FsbGJhY2sobGV2ZWw6IExvZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNvbnRhaW5zUGlpOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMubG9jYWxDYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLmxvY2FsQ2FsbGJhY2sobGV2ZWwsIG1lc3NhZ2UsIGNvbnRhaW5zUGlpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2dzIGVycm9yIG1lc3NhZ2VzLlxyXG4gICAgICovXHJcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIGNvcnJlbGF0aW9uSWQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxvZ01lc3NhZ2UobWVzc2FnZSwge1xyXG4gICAgICAgICAgICBsb2dMZXZlbDogTG9nTGV2ZWwuRXJyb3IsXHJcbiAgICAgICAgICAgIGNvbnRhaW5zUGlpOiBmYWxzZSxcclxuICAgICAgICAgICAgY29ycmVsYXRpb25JZDogY29ycmVsYXRpb25JZCB8fCBcIlwiXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2dzIGVycm9yIG1lc3NhZ2VzIHdpdGggUElJLlxyXG4gICAgICovXHJcbiAgICBlcnJvclBpaShtZXNzYWdlOiBzdHJpbmcsIGNvcnJlbGF0aW9uSWQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxvZ01lc3NhZ2UobWVzc2FnZSwge1xyXG4gICAgICAgICAgICBsb2dMZXZlbDogTG9nTGV2ZWwuRXJyb3IsXHJcbiAgICAgICAgICAgIGNvbnRhaW5zUGlpOiB0cnVlLFxyXG4gICAgICAgICAgICBjb3JyZWxhdGlvbklkOiBjb3JyZWxhdGlvbklkIHx8IFwiXCJcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExvZ3Mgd2FybmluZyBtZXNzYWdlcy5cclxuICAgICAqL1xyXG4gICAgd2FybmluZyhtZXNzYWdlOiBzdHJpbmcsIGNvcnJlbGF0aW9uSWQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxvZ01lc3NhZ2UobWVzc2FnZSwge1xyXG4gICAgICAgICAgICBsb2dMZXZlbDogTG9nTGV2ZWwuV2FybmluZyxcclxuICAgICAgICAgICAgY29udGFpbnNQaWk6IGZhbHNlLFxyXG4gICAgICAgICAgICBjb3JyZWxhdGlvbklkOiBjb3JyZWxhdGlvbklkIHx8IFwiXCJcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExvZ3Mgd2FybmluZyBtZXNzYWdlcyB3aXRoIFBJSS5cclxuICAgICAqL1xyXG4gICAgd2FybmluZ1BpaShtZXNzYWdlOiBzdHJpbmcsIGNvcnJlbGF0aW9uSWQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxvZ01lc3NhZ2UobWVzc2FnZSwge1xyXG4gICAgICAgICAgICBsb2dMZXZlbDogTG9nTGV2ZWwuV2FybmluZyxcclxuICAgICAgICAgICAgY29udGFpbnNQaWk6IHRydWUsXHJcbiAgICAgICAgICAgIGNvcnJlbGF0aW9uSWQ6IGNvcnJlbGF0aW9uSWQgfHwgXCJcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyBpbmZvIG1lc3NhZ2VzLlxyXG4gICAgICovXHJcbiAgICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgY29ycmVsYXRpb25JZD86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubG9nTWVzc2FnZShtZXNzYWdlLCB7XHJcbiAgICAgICAgICAgIGxvZ0xldmVsOiBMb2dMZXZlbC5JbmZvLFxyXG4gICAgICAgICAgICBjb250YWluc1BpaTogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvcnJlbGF0aW9uSWQ6IGNvcnJlbGF0aW9uSWQgfHwgXCJcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyBpbmZvIG1lc3NhZ2VzIHdpdGggUElJLlxyXG4gICAgICovXHJcbiAgICBpbmZvUGlpKG1lc3NhZ2U6IHN0cmluZywgY29ycmVsYXRpb25JZD86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubG9nTWVzc2FnZShtZXNzYWdlLCB7XHJcbiAgICAgICAgICAgIGxvZ0xldmVsOiBMb2dMZXZlbC5JbmZvLFxyXG4gICAgICAgICAgICBjb250YWluc1BpaTogdHJ1ZSxcclxuICAgICAgICAgICAgY29ycmVsYXRpb25JZDogY29ycmVsYXRpb25JZCB8fCBcIlwiXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2dzIHZlcmJvc2UgbWVzc2FnZXMuXHJcbiAgICAgKi9cclxuICAgIHZlcmJvc2UobWVzc2FnZTogc3RyaW5nLCBjb3JyZWxhdGlvbklkPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5sb2dNZXNzYWdlKG1lc3NhZ2UsIHtcclxuICAgICAgICAgICAgbG9nTGV2ZWw6IExvZ0xldmVsLlZlcmJvc2UsXHJcbiAgICAgICAgICAgIGNvbnRhaW5zUGlpOiBmYWxzZSxcclxuICAgICAgICAgICAgY29ycmVsYXRpb25JZDogY29ycmVsYXRpb25JZCB8fCBcIlwiXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2dzIHZlcmJvc2UgbWVzc2FnZXMgd2l0aCBQSUkuXHJcbiAgICAgKi9cclxuICAgIHZlcmJvc2VQaWkobWVzc2FnZTogc3RyaW5nLCBjb3JyZWxhdGlvbklkPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5sb2dNZXNzYWdlKG1lc3NhZ2UsIHtcclxuICAgICAgICAgICAgbG9nTGV2ZWw6IExvZ0xldmVsLlZlcmJvc2UsXHJcbiAgICAgICAgICAgIGNvbnRhaW5zUGlpOiB0cnVlLFxyXG4gICAgICAgICAgICBjb3JyZWxhdGlvbklkOiBjb3JyZWxhdGlvbklkIHx8IFwiXCJcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgd2hldGhlciBQSUkgTG9nZ2luZyBpcyBlbmFibGVkIG9yIG5vdC5cclxuICAgICAqL1xyXG4gICAgaXNQaWlMb2dnaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5waWlMb2dnaW5nRW5hYmxlZCB8fCBmYWxzZTtcclxuICAgIH1cclxufVxyXG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBoZWFkZXIvaGVhZGVyICovXG5leHBvcnQgY29uc3QgbmFtZSA9IFwiQGF6dXJlL21zYWwtY29tbW9uXCI7XG5leHBvcnQgY29uc3QgdmVyc2lvbiA9IFwiNC4xLjBcIjtcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgU2VwYXJhdG9ycywgQ3JlZGVudGlhbFR5cGUsIENhY2hlVHlwZSwgQ29uc3RhbnRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBDbGllbnRBdXRoRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3IvQ2xpZW50QXV0aEVycm9yXCI7XHJcblxyXG4vKipcclxuICogQmFzZSB0eXBlIGZvciBjcmVkZW50aWFscyB0byBiZSBzdG9yZWQgaW4gdGhlIGNhY2hlOiBlZzogQUNDRVNTX1RPS0VOLCBJRF9UT0tFTiBldGNcclxuICpcclxuICogS2V5OlZhbHVlIFNjaGVtYTpcclxuICpcclxuICogS2V5OiA8aG9tZV9hY2NvdW50X2lkKj4tPGVudmlyb25tZW50Pi08Y3JlZGVudGlhbF90eXBlPi08Y2xpZW50X2lkPi08cmVhbG0qPi08dGFyZ2V0Kj5cclxuICpcclxuICogVmFsdWUgU2NoZW1hOlxyXG4gKiB7XHJcbiAqICAgICAgaG9tZUFjY291bnRJZDogaG9tZSBhY2NvdW50IGlkZW50aWZpZXIgZm9yIHRoZSBhdXRoIHNjaGVtZSxcclxuICogICAgICBlbnZpcm9ubWVudDogZW50aXR5IHRoYXQgaXNzdWVkIHRoZSB0b2tlbiwgcmVwcmVzZW50ZWQgYXMgYSBmdWxsIGhvc3RcclxuICogICAgICBjcmVkZW50aWFsVHlwZTogVHlwZSBvZiBjcmVkZW50aWFsIGFzIGEgc3RyaW5nLCBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6IFJlZnJlc2hUb2tlbiwgQWNjZXNzVG9rZW4sIElkVG9rZW4sIFBhc3N3b3JkLCBDb29raWUsIENlcnRpZmljYXRlLCBPdGhlclxyXG4gKiAgICAgIGNsaWVudElkOiBjbGllbnQgSUQgb2YgdGhlIGFwcGxpY2F0aW9uXHJcbiAqICAgICAgc2VjcmV0OiBBY3R1YWwgY3JlZGVudGlhbCBhcyBhIHN0cmluZ1xyXG4gKiAgICAgIGZhbWlseUlkOiBGYW1pbHkgSUQgaWRlbnRpZmllciwgdXN1YWxseSBvbmx5IHVzZWQgZm9yIHJlZnJlc2ggdG9rZW5zXHJcbiAqICAgICAgcmVhbG06IEZ1bGwgdGVuYW50IG9yIG9yZ2FuaXphdGlvbmFsIGlkZW50aWZpZXIgdGhhdCB0aGUgYWNjb3VudCBiZWxvbmdzIHRvXHJcbiAqICAgICAgdGFyZ2V0OiBQZXJtaXNzaW9ucyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgdG9rZW4sIG9yIGZvciByZWZyZXNoIHRva2VucywgdGhlIHJlc291cmNlIGlkZW50aWZpZXIuXHJcbiAqICAgICAgb2JvQXNzZXJ0aW9uOiBhY2Nlc3MgdG9rZW4gcGFzc2VkIGluIGFzIHBhcnQgb2YgT0JPIHJlcXVlc3RcclxuICogfVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENyZWRlbnRpYWxFbnRpdHkge1xyXG4gICAgaG9tZUFjY291bnRJZDogc3RyaW5nO1xyXG4gICAgZW52aXJvbm1lbnQ6IHN0cmluZztcclxuICAgIGNyZWRlbnRpYWxUeXBlOiBDcmVkZW50aWFsVHlwZTtcclxuICAgIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgICBzZWNyZXQ6IHN0cmluZztcclxuICAgIGZhbWlseUlkPzogc3RyaW5nO1xyXG4gICAgcmVhbG0/OiBzdHJpbmc7XHJcbiAgICB0YXJnZXQ/OiBzdHJpbmc7XHJcbiAgICBvYm9Bc3NlcnRpb24/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZW5lcmF0ZSBBY2NvdW50IElkIGtleSBjb21wb25lbnQgYXMgcGVyIHRoZSBzY2hlbWE6IDxob21lX2FjY291bnRfaWQ+LTxlbnZpcm9ubWVudD5cclxuICAgICAqL1xyXG4gICAgZ2VuZXJhdGVBY2NvdW50SWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gQ3JlZGVudGlhbEVudGl0eS5nZW5lcmF0ZUFjY291bnRJZEZvckNhY2hlS2V5KHRoaXMuaG9tZUFjY291bnRJZCwgdGhpcy5lbnZpcm9ubWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZW5lcmF0ZSBDcmVkZW50aWFsIElkIGtleSBjb21wb25lbnQgYXMgcGVyIHRoZSBzY2hlbWE6IDxjcmVkZW50aWFsX3R5cGU+LTxjbGllbnRfaWQ+LTxyZWFsbT5cclxuICAgICAqL1xyXG4gICAgZ2VuZXJhdGVDcmVkZW50aWFsSWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gQ3JlZGVudGlhbEVudGl0eS5nZW5lcmF0ZUNyZWRlbnRpYWxJZEZvckNhY2hlS2V5KFxyXG4gICAgICAgICAgICB0aGlzLmNyZWRlbnRpYWxUeXBlLFxyXG4gICAgICAgICAgICB0aGlzLmNsaWVudElkLFxyXG4gICAgICAgICAgICB0aGlzLnJlYWxtLFxyXG4gICAgICAgICAgICB0aGlzLmZhbWlseUlkXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYXRlIHRhcmdldCBrZXkgY29tcG9uZW50IGFzIHBlciBzY2hlbWE6IDx0YXJnZXQ+XHJcbiAgICAgKi9cclxuICAgIGdlbmVyYXRlVGFyZ2V0KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIENyZWRlbnRpYWxFbnRpdHkuZ2VuZXJhdGVUYXJnZXRGb3JDYWNoZUtleSh0aGlzLnRhcmdldCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBnZW5lcmF0ZXMgY3JlZGVudGlhbCBrZXlcclxuICAgICAqL1xyXG4gICAgZ2VuZXJhdGVDcmVkZW50aWFsS2V5KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIENyZWRlbnRpYWxFbnRpdHkuZ2VuZXJhdGVDcmVkZW50aWFsQ2FjaGVLZXkoXHJcbiAgICAgICAgICAgIHRoaXMuaG9tZUFjY291bnRJZCxcclxuICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudCxcclxuICAgICAgICAgICAgdGhpcy5jcmVkZW50aWFsVHlwZSxcclxuICAgICAgICAgICAgdGhpcy5jbGllbnRJZCxcclxuICAgICAgICAgICAgdGhpcy5yZWFsbSxcclxuICAgICAgICAgICAgdGhpcy50YXJnZXQsXHJcbiAgICAgICAgICAgIHRoaXMuZmFtaWx5SWRcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJucyB0aGUgdHlwZSBvZiB0aGUgY2FjaGUgKGluIHRoaXMgY2FzZSBjcmVkZW50aWFsKVxyXG4gICAgICovXHJcbiAgICBnZW5lcmF0ZVR5cGUoKTogbnVtYmVyIHtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMuY3JlZGVudGlhbFR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBDcmVkZW50aWFsVHlwZS5JRF9UT0tFTjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBDYWNoZVR5cGUuSURfVE9LRU47XHJcbiAgICAgICAgICAgIGNhc2UgQ3JlZGVudGlhbFR5cGUuQUNDRVNTX1RPS0VOOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIENhY2hlVHlwZS5BQ0NFU1NfVE9LRU47XHJcbiAgICAgICAgICAgIGNhc2UgQ3JlZGVudGlhbFR5cGUuUkVGUkVTSF9UT0tFTjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBDYWNoZVR5cGUuUkVGUkVTSF9UT0tFTjtcclxuICAgICAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZVVuZXhwZWN0ZWRDcmVkZW50aWFsVHlwZUVycm9yKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBoZWxwZXIgZnVuY3Rpb24gdG8gcmV0dXJuIGBDcmVkZW50aWFsVHlwZWBcclxuICAgICAqIEBwYXJhbSBrZXlcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldENyZWRlbnRpYWxUeXBlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoa2V5LmluZGV4T2YoQ3JlZGVudGlhbFR5cGUuQUNDRVNTX1RPS0VOLnRvTG93ZXJDYXNlKCkpICE9PSAtMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gQ3JlZGVudGlhbFR5cGUuQUNDRVNTX1RPS0VOO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoa2V5LmluZGV4T2YoQ3JlZGVudGlhbFR5cGUuSURfVE9LRU4udG9Mb3dlckNhc2UoKSkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBDcmVkZW50aWFsVHlwZS5JRF9UT0tFTjtcclxuICAgICAgICB9IGVsc2UgaWYgKGtleS5pbmRleE9mKENyZWRlbnRpYWxUeXBlLlJFRlJFU0hfVE9LRU4udG9Mb3dlckNhc2UoKSkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBDcmVkZW50aWFsVHlwZS5SRUZSRVNIX1RPS0VOO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIENvbnN0YW50cy5OT1RfREVGSU5FRDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGdlbmVyYXRlcyBjcmVkZW50aWFsIGtleVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2VuZXJhdGVDcmVkZW50aWFsQ2FjaGVLZXkoXHJcbiAgICAgICAgaG9tZUFjY291bnRJZDogc3RyaW5nLFxyXG4gICAgICAgIGVudmlyb25tZW50OiBzdHJpbmcsXHJcbiAgICAgICAgY3JlZGVudGlhbFR5cGU6IENyZWRlbnRpYWxUeXBlLFxyXG4gICAgICAgIGNsaWVudElkOiBzdHJpbmcsXHJcbiAgICAgICAgcmVhbG0/OiBzdHJpbmcsXHJcbiAgICAgICAgdGFyZ2V0Pzogc3RyaW5nLFxyXG4gICAgICAgIGZhbWlseUlkPzogc3RyaW5nXHJcbiAgICApOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGNyZWRlbnRpYWxLZXkgPSBbXHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVBY2NvdW50SWRGb3JDYWNoZUtleShob21lQWNjb3VudElkLCBlbnZpcm9ubWVudCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVDcmVkZW50aWFsSWRGb3JDYWNoZUtleShjcmVkZW50aWFsVHlwZSwgY2xpZW50SWQsIHJlYWxtLCBmYW1pbHlJZCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVUYXJnZXRGb3JDYWNoZUtleSh0YXJnZXQpLFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHJldHVybiBjcmVkZW50aWFsS2V5LmpvaW4oU2VwYXJhdG9ycy5DQUNIRV9LRVlfU0VQQVJBVE9SKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZ2VuZXJhdGVzIEFjY291bnQgSWQgZm9yIGtleXNcclxuICAgICAqIEBwYXJhbSBob21lQWNjb3VudElkXHJcbiAgICAgKiBAcGFyYW0gZW52aXJvbm1lbnRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVBY2NvdW50SWRGb3JDYWNoZUtleShcclxuICAgICAgICBob21lQWNjb3VudElkOiBzdHJpbmcsXHJcbiAgICAgICAgZW52aXJvbm1lbnQ6IHN0cmluZ1xyXG4gICAgKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBhY2NvdW50SWQ6IEFycmF5PHN0cmluZz4gPSBbaG9tZUFjY291bnRJZCwgZW52aXJvbm1lbnRdO1xyXG4gICAgICAgIHJldHVybiBhY2NvdW50SWQuam9pbihTZXBhcmF0b3JzLkNBQ0hFX0tFWV9TRVBBUkFUT1IpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZW5lcmF0ZXMgQ3JlZGVudGlhbCBJZCBmb3Iga2V5c1xyXG4gICAgICogQHBhcmFtIGNyZWRlbnRpYWxUeXBlXHJcbiAgICAgKiBAcGFyYW0gcmVhbG1cclxuICAgICAqIEBwYXJhbSBjbGllbnRJZFxyXG4gICAgICogQHBhcmFtIGZhbWlseUlkXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlQ3JlZGVudGlhbElkRm9yQ2FjaGVLZXkoXHJcbiAgICAgICAgY3JlZGVudGlhbFR5cGU6IENyZWRlbnRpYWxUeXBlLFxyXG4gICAgICAgIGNsaWVudElkOiBzdHJpbmcsXHJcbiAgICAgICAgcmVhbG0/OiBzdHJpbmcsXHJcbiAgICAgICAgZmFtaWx5SWQ/OiBzdHJpbmdcclxuICAgICk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgY2xpZW50T3JGYW1pbHlJZCA9XHJcbiAgICAgICAgICAgIGNyZWRlbnRpYWxUeXBlID09PSBDcmVkZW50aWFsVHlwZS5SRUZSRVNIX1RPS0VOXHJcbiAgICAgICAgICAgICAgICA/IGZhbWlseUlkIHx8IGNsaWVudElkXHJcbiAgICAgICAgICAgICAgICA6IGNsaWVudElkO1xyXG4gICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJZDogQXJyYXk8c3RyaW5nPiA9IFtcclxuICAgICAgICAgICAgY3JlZGVudGlhbFR5cGUsXHJcbiAgICAgICAgICAgIGNsaWVudE9yRmFtaWx5SWQsXHJcbiAgICAgICAgICAgIHJlYWxtIHx8IFwiXCIsXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNyZWRlbnRpYWxJZC5qb2luKFNlcGFyYXRvcnMuQ0FDSEVfS0VZX1NFUEFSQVRPUikudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYXRlIHRhcmdldCBrZXkgY29tcG9uZW50IGFzIHBlciBzY2hlbWE6IDx0YXJnZXQ+XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlVGFyZ2V0Rm9yQ2FjaGVLZXkoc2NvcGVzPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gKHNjb3BlcyB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ2xpZW50QXV0aEVycm9yIH0gZnJvbSBcIi4vQ2xpZW50QXV0aEVycm9yXCI7XHJcblxyXG4vKipcclxuICogQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yTWVzc2FnZSBjbGFzcyBjb250YWluaW5nIHN0cmluZyBjb25zdGFudHMgdXNlZCBieSBlcnJvciBjb2RlcyBhbmQgbWVzc2FnZXMuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yTWVzc2FnZSA9IHtcclxuICAgIHJlZGlyZWN0VXJpTm90U2V0OiB7XHJcbiAgICAgICAgY29kZTogXCJyZWRpcmVjdF91cmlfZW1wdHlcIixcclxuICAgICAgICBkZXNjOiBcIkEgcmVkaXJlY3QgVVJJIGlzIHJlcXVpcmVkIGZvciBhbGwgY2FsbHMsIGFuZCBub25lIGhhcyBiZWVuIHNldC5cIlxyXG4gICAgfSxcclxuICAgIHBvc3RMb2dvdXRVcmlOb3RTZXQ6IHtcclxuICAgICAgICBjb2RlOiBcInBvc3RfbG9nb3V0X3VyaV9lbXB0eVwiLFxyXG4gICAgICAgIGRlc2M6IFwiQSBwb3N0IGxvZ291dCByZWRpcmVjdCBoYXMgbm90IGJlZW4gc2V0LlwiXHJcbiAgICB9LFxyXG4gICAgY2xhaW1zUmVxdWVzdFBhcnNpbmdFcnJvcjoge1xyXG4gICAgICAgIGNvZGU6IFwiY2xhaW1zX3JlcXVlc3RfcGFyc2luZ19lcnJvclwiLFxyXG4gICAgICAgIGRlc2M6IFwiQ291bGQgbm90IHBhcnNlIHRoZSBnaXZlbiBjbGFpbXMgcmVxdWVzdCBvYmplY3QuXCJcclxuICAgIH0sXHJcbiAgICBhdXRob3JpdHlVcmlJbnNlY3VyZToge1xyXG4gICAgICAgIGNvZGU6IFwiYXV0aG9yaXR5X3VyaV9pbnNlY3VyZVwiLFxyXG4gICAgICAgIGRlc2M6IFwiQXV0aG9yaXR5IFVSSXMgbXVzdCB1c2UgaHR0cHMuICBQbGVhc2Ugc2VlIGhlcmUgZm9yIHZhbGlkIGF1dGhvcml0eSBjb25maWd1cmF0aW9uIG9wdGlvbnM6IGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL2F6dXJlL2FjdGl2ZS1kaXJlY3RvcnkvZGV2ZWxvcC9tc2FsLWpzLWluaXRpYWxpemluZy1jbGllbnQtYXBwbGljYXRpb25zI2NvbmZpZ3VyYXRpb24tb3B0aW9uc1wiXHJcbiAgICB9LFxyXG4gICAgdXJsUGFyc2VFcnJvcjoge1xyXG4gICAgICAgIGNvZGU6IFwidXJsX3BhcnNlX2Vycm9yXCIsXHJcbiAgICAgICAgZGVzYzogXCJVUkwgY291bGQgbm90IGJlIHBhcnNlZCBpbnRvIGFwcHJvcHJpYXRlIHNlZ21lbnRzLlwiXHJcbiAgICB9LFxyXG4gICAgdXJsRW1wdHlFcnJvcjoge1xyXG4gICAgICAgIGNvZGU6IFwiZW1wdHlfdXJsX2Vycm9yXCIsXHJcbiAgICAgICAgZGVzYzogXCJVUkwgd2FzIGVtcHR5IG9yIG51bGwuXCJcclxuICAgIH0sXHJcbiAgICBlbXB0eVNjb3Blc0Vycm9yOiB7XHJcbiAgICAgICAgY29kZTogXCJlbXB0eV9pbnB1dF9zY29wZXNfZXJyb3JcIixcclxuICAgICAgICBkZXNjOiBcIlNjb3BlcyBjYW5ub3QgYmUgcGFzc2VkIGFzIG51bGwsIHVuZGVmaW5lZCBvciBlbXB0eSBhcnJheSBiZWNhdXNlIHRoZXkgYXJlIHJlcXVpcmVkIHRvIG9idGFpbiBhbiBhY2Nlc3MgdG9rZW4uXCJcclxuICAgIH0sXHJcbiAgICBub25BcnJheVNjb3Blc0Vycm9yOiB7XHJcbiAgICAgICAgY29kZTogXCJub25hcnJheV9pbnB1dF9zY29wZXNfZXJyb3JcIixcclxuICAgICAgICBkZXNjOiBcIlNjb3BlcyBjYW5ub3QgYmUgcGFzc2VkIGFzIG5vbi1hcnJheS5cIlxyXG4gICAgfSxcclxuICAgIGNsaWVudElkU2luZ2xlU2NvcGVFcnJvcjoge1xyXG4gICAgICAgIGNvZGU6IFwiY2xpZW50aWRfaW5wdXRfc2NvcGVzX2Vycm9yXCIsXHJcbiAgICAgICAgZGVzYzogXCJDbGllbnQgSUQgY2FuIG9ubHkgYmUgcHJvdmlkZWQgYXMgYSBzaW5nbGUgc2NvcGUuXCJcclxuICAgIH0sXHJcbiAgICBpbnZhbGlkUHJvbXB0OiB7XHJcbiAgICAgICAgY29kZTogXCJpbnZhbGlkX3Byb21wdF92YWx1ZVwiLFxyXG4gICAgICAgIGRlc2M6IFwiU3VwcG9ydGVkIHByb21wdCB2YWx1ZXMgYXJlICdsb2dpbicsICdzZWxlY3RfYWNjb3VudCcsICdjb25zZW50JyBhbmQgJ25vbmUnLiAgUGxlYXNlIHNlZSBoZXJlIGZvciB2YWxpZCBjb25maWd1cmF0aW9uIG9wdGlvbnM6IGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL2F6dXJlL2FjdGl2ZS1kaXJlY3RvcnkvZGV2ZWxvcC9tc2FsLWpzLWluaXRpYWxpemluZy1jbGllbnQtYXBwbGljYXRpb25zI2NvbmZpZ3VyYXRpb24tb3B0aW9uc1wiLFxyXG4gICAgfSxcclxuICAgIGludmFsaWRDbGFpbXNSZXF1ZXN0OiB7XHJcbiAgICAgICAgY29kZTogXCJpbnZhbGlkX2NsYWltc1wiLFxyXG4gICAgICAgIGRlc2M6IFwiR2l2ZW4gY2xhaW1zIHBhcmFtZXRlciBtdXN0IGJlIGEgc3RyaW5naWZpZWQgSlNPTiBvYmplY3QuXCJcclxuICAgIH0sXHJcbiAgICB0b2tlblJlcXVlc3RFbXB0eUVycm9yOiB7XHJcbiAgICAgICAgY29kZTogXCJ0b2tlbl9yZXF1ZXN0X2VtcHR5XCIsXHJcbiAgICAgICAgZGVzYzogXCJUb2tlbiByZXF1ZXN0IHdhcyBlbXB0eSBhbmQgbm90IGZvdW5kIGluIGNhY2hlLlwiXHJcbiAgICB9LFxyXG4gICAgbG9nb3V0UmVxdWVzdEVtcHR5RXJyb3I6IHtcclxuICAgICAgICBjb2RlOiBcImxvZ291dF9yZXF1ZXN0X2VtcHR5XCIsXHJcbiAgICAgICAgZGVzYzogXCJUaGUgbG9nb3V0IHJlcXVlc3Qgd2FzIG51bGwgb3IgdW5kZWZpbmVkLlwiXHJcbiAgICB9LFxyXG4gICAgaW52YWxpZENvZGVDaGFsbGVuZ2VNZXRob2Q6IHtcclxuICAgICAgICBjb2RlOiBcImludmFsaWRfY29kZV9jaGFsbGVuZ2VfbWV0aG9kXCIsXHJcbiAgICAgICAgZGVzYzogXCJjb2RlX2NoYWxsZW5nZV9tZXRob2QgcGFzc2VkIGlzIGludmFsaWQuIFZhbGlkIHZhbHVlcyBhcmUgXFxcInBsYWluXFxcIiBhbmQgXFxcIlMyNTZcXFwiLlwiXHJcbiAgICB9LFxyXG4gICAgaW52YWxpZENvZGVDaGFsbGVuZ2VQYXJhbXM6IHtcclxuICAgICAgICBjb2RlOiBcInBrY2VfcGFyYW1zX21pc3NpbmdcIixcclxuICAgICAgICBkZXNjOiBcIkJvdGggcGFyYW1zOiBjb2RlX2NoYWxsZW5nZSBhbmQgY29kZV9jaGFsbGVuZ2VfbWV0aG9kIGFyZSB0byBiZSBwYXNzZWQgaWYgdG8gYmUgc2VudCBpbiB0aGUgcmVxdWVzdFwiXHJcbiAgICB9LFxyXG4gICAgaW52YWxpZENsb3VkRGlzY292ZXJ5TWV0YWRhdGE6IHtcclxuICAgICAgICBjb2RlOiBcImludmFsaWRfY2xvdWRfZGlzY292ZXJ5X21ldGFkYXRhXCIsXHJcbiAgICAgICAgZGVzYzogXCJJbnZhbGlkIGNsb3VkRGlzY292ZXJ5TWV0YWRhdGEgcHJvdmlkZWQuIE11c3QgYmUgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRlbmFudF9kaXNjb3ZlcnlfZW5kcG9pbnQgYW5kIG1ldGFkYXRhIGZpZWxkc1wiXHJcbiAgICB9LFxyXG4gICAgaW52YWxpZEF1dGhvcml0eU1ldGFkYXRhOiB7XHJcbiAgICAgICAgY29kZTogXCJpbnZhbGlkX2F1dGhvcml0eV9tZXRhZGF0YVwiLFxyXG4gICAgICAgIGRlc2M6IFwiSW52YWxpZCBhdXRob3JpdHlNZXRhZGF0YSBwcm92aWRlZC4gTXVzdCBieSBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgYXV0aG9yaXphdGlvbl9lbmRwb2ludCwgdG9rZW5fZW5kcG9pbnQsIGVuZF9zZXNzaW9uX2VuZHBvaW50LCBpc3N1ZXIgZmllbGRzLlwiXHJcbiAgICB9LFxyXG4gICAgdW50cnVzdGVkQXV0aG9yaXR5OiB7XHJcbiAgICAgICAgY29kZTogXCJ1bnRydXN0ZWRfYXV0aG9yaXR5XCIsXHJcbiAgICAgICAgZGVzYzogXCJUaGUgcHJvdmlkZWQgYXV0aG9yaXR5IGlzIG5vdCBhIHRydXN0ZWQgYXV0aG9yaXR5LiBQbGVhc2UgaW5jbHVkZSB0aGlzIGF1dGhvcml0eSBpbiB0aGUga25vd25BdXRob3JpdGllcyBjb25maWcgcGFyYW1ldGVyLlwiXHJcbiAgICB9LFxyXG4gICAgcmVzb3VyY2VSZXF1ZXN0UGFyYW1ldGVyc1JlcXVpcmVkOiB7XHJcbiAgICAgICAgY29kZTogXCJyZXNvdXJjZVJlcXVlc3RfcGFyYW1ldGVyc19yZXF1aXJlZFwiLFxyXG4gICAgICAgIGRlc2M6IFwicmVzb3VyY2VSZXF1ZXN0TWV0aG9kIGFuZCByZXNvdXJjZVJlcXVlc3RVcmkgYXJlIHJlcXVpcmVkXCJcclxuICAgIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBFcnJvciB0aHJvd24gd2hlbiB0aGVyZSBpcyBhbiBlcnJvciBpbiBjb25maWd1cmF0aW9uIG9mIHRoZSBNU0FMLmpzIGxpYnJhcnkuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yIGV4dGVuZHMgQ2xpZW50QXV0aEVycm9yIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihlcnJvckNvZGU6IHN0cmluZywgZXJyb3JNZXNzYWdlPzogc3RyaW5nKSB7XHJcbiAgICAgICAgc3VwZXIoZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IFwiQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yXCI7XHJcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIENsaWVudENvbmZpZ3VyYXRpb25FcnJvci5wcm90b3R5cGUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBlcnJvciB0aHJvd24gd2hlbiB0aGUgcmVkaXJlY3QgdXJpIGlzIGVtcHR5IChub3Qgc2V0IGJ5IGNhbGxlcilcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZVJlZGlyZWN0VXJpRW1wdHlFcnJvcigpOiBDbGllbnRDb25maWd1cmF0aW9uRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yKENsaWVudENvbmZpZ3VyYXRpb25FcnJvck1lc3NhZ2UucmVkaXJlY3RVcmlOb3RTZXQuY29kZSxcclxuICAgICAgICAgICAgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yTWVzc2FnZS5yZWRpcmVjdFVyaU5vdFNldC5kZXNjKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYW4gZXJyb3IgdGhyb3duIHdoZW4gdGhlIHBvc3QtbG9nb3V0IHJlZGlyZWN0IHVyaSBpcyBlbXB0eSAobm90IHNldCBieSBjYWxsZXIpXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVQb3N0TG9nb3V0UmVkaXJlY3RVcmlFbXB0eUVycm9yKCk6IENsaWVudENvbmZpZ3VyYXRpb25FcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRDb25maWd1cmF0aW9uRXJyb3IoQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yTWVzc2FnZS5wb3N0TG9nb3V0VXJpTm90U2V0LmNvZGUsXHJcbiAgICAgICAgICAgIENsaWVudENvbmZpZ3VyYXRpb25FcnJvck1lc3NhZ2UucG9zdExvZ291dFVyaU5vdFNldC5kZXNjKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYW4gZXJyb3IgdGhyb3duIHdoZW4gdGhlIGNsYWltcyByZXF1ZXN0IGNvdWxkIG5vdCBiZSBzdWNjZXNzZnVsbHkgcGFyc2VkXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVDbGFpbXNSZXF1ZXN0UGFyc2luZ0Vycm9yKGNsYWltc1JlcXVlc3RQYXJzZUVycm9yOiBzdHJpbmcpOiBDbGllbnRDb25maWd1cmF0aW9uRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yKENsaWVudENvbmZpZ3VyYXRpb25FcnJvck1lc3NhZ2UuY2xhaW1zUmVxdWVzdFBhcnNpbmdFcnJvci5jb2RlLFxyXG4gICAgICAgICAgICBgJHtDbGllbnRDb25maWd1cmF0aW9uRXJyb3JNZXNzYWdlLmNsYWltc1JlcXVlc3RQYXJzaW5nRXJyb3IuZGVzY30gR2l2ZW4gdmFsdWU6ICR7Y2xhaW1zUmVxdWVzdFBhcnNlRXJyb3J9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGFuIGVycm9yIHRocm93biBpZiBhdXRob3JpdHkgdXJpIGlzIGdpdmVuIGFuIGluc2VjdXJlIHByb3RvY29sLlxyXG4gICAgICogQHBhcmFtIHVybFN0cmluZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zZWN1cmVBdXRob3JpdHlVcmlFcnJvcih1cmxTdHJpbmc6IHN0cmluZyk6IENsaWVudENvbmZpZ3VyYXRpb25FcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRDb25maWd1cmF0aW9uRXJyb3IoQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yTWVzc2FnZS5hdXRob3JpdHlVcmlJbnNlY3VyZS5jb2RlLFxyXG4gICAgICAgICAgICBgJHtDbGllbnRDb25maWd1cmF0aW9uRXJyb3JNZXNzYWdlLmF1dGhvcml0eVVyaUluc2VjdXJlLmRlc2N9IEdpdmVuIFVSSTogJHt1cmxTdHJpbmd9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGFuIGVycm9yIHRocm93biBpZiBVUkwgc3RyaW5nIGRvZXMgbm90IHBhcnNlIGludG8gc2VwYXJhdGUgc2VnbWVudHMuXHJcbiAgICAgKiBAcGFyYW0gdXJsU3RyaW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVVcmxQYXJzZUVycm9yKHVybFBhcnNlRXJyb3I6IHN0cmluZyk6IENsaWVudENvbmZpZ3VyYXRpb25FcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRDb25maWd1cmF0aW9uRXJyb3IoQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yTWVzc2FnZS51cmxQYXJzZUVycm9yLmNvZGUsXHJcbiAgICAgICAgICAgIGAke0NsaWVudENvbmZpZ3VyYXRpb25FcnJvck1lc3NhZ2UudXJsUGFyc2VFcnJvci5kZXNjfSBHaXZlbiBFcnJvcjogJHt1cmxQYXJzZUVycm9yfWApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBlcnJvciB0aHJvd24gaWYgVVJMIHN0cmluZyBpcyBlbXB0eSBvciBudWxsLlxyXG4gICAgICogQHBhcmFtIHVybFN0cmluZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlVXJsRW1wdHlFcnJvcigpOiBDbGllbnRDb25maWd1cmF0aW9uRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yKENsaWVudENvbmZpZ3VyYXRpb25FcnJvck1lc3NhZ2UudXJsRW1wdHlFcnJvci5jb2RlLFxyXG4gICAgICAgICAgICBDbGllbnRDb25maWd1cmF0aW9uRXJyb3JNZXNzYWdlLnVybEVtcHR5RXJyb3IuZGVzYyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFcnJvciB0aHJvd24gd2hlbiBzY29wZXMgYXJlIG5vdCBhbiBhcnJheVxyXG4gICAgICogQHBhcmFtIGlucHV0U2NvcGVzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVTY29wZXNOb25BcnJheUVycm9yKGlucHV0U2NvcGVzOiBBcnJheTxzdHJpbmc+KTogQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudENvbmZpZ3VyYXRpb25FcnJvcihDbGllbnRDb25maWd1cmF0aW9uRXJyb3JNZXNzYWdlLm5vbkFycmF5U2NvcGVzRXJyb3IuY29kZSxcclxuICAgICAgICAgICAgYCR7Q2xpZW50Q29uZmlndXJhdGlvbkVycm9yTWVzc2FnZS5ub25BcnJheVNjb3Blc0Vycm9yLmRlc2N9IEdpdmVuIFNjb3BlczogJHtpbnB1dFNjb3Blc31gKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVycm9yIHRocm93biB3aGVuIHNjb3BlcyBhcmUgZW1wdHkuXHJcbiAgICAgKiBAcGFyYW0gc2NvcGVzVmFsdWVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZUVtcHR5U2NvcGVzQXJyYXlFcnJvcihpbnB1dFNjb3BlczogQXJyYXk8c3RyaW5nPik6IENsaWVudENvbmZpZ3VyYXRpb25FcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRDb25maWd1cmF0aW9uRXJyb3IoQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yTWVzc2FnZS5lbXB0eVNjb3Blc0Vycm9yLmNvZGUsXHJcbiAgICAgICAgICAgIGAke0NsaWVudENvbmZpZ3VyYXRpb25FcnJvck1lc3NhZ2UuZW1wdHlTY29wZXNFcnJvci5kZXNjfSBHaXZlbiBTY29wZXM6ICR7aW5wdXRTY29wZXN9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFcnJvciB0aHJvd24gd2hlbiBjbGllbnQgaWQgc2NvcGUgaXMgbm90IHByb3ZpZGVkIGFzIHNpbmdsZSBzY29wZS5cclxuICAgICAqIEBwYXJhbSBpbnB1dFNjb3Blc1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlQ2xpZW50SWRTaW5nbGVTY29wZUVycm9yKGlucHV0U2NvcGVzOiBBcnJheTxzdHJpbmc+KTogQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudENvbmZpZ3VyYXRpb25FcnJvcihDbGllbnRDb25maWd1cmF0aW9uRXJyb3JNZXNzYWdlLmNsaWVudElkU2luZ2xlU2NvcGVFcnJvci5jb2RlLFxyXG4gICAgICAgICAgICBgJHtDbGllbnRDb25maWd1cmF0aW9uRXJyb3JNZXNzYWdlLmNsaWVudElkU2luZ2xlU2NvcGVFcnJvci5kZXNjfSBHaXZlbiBTY29wZXM6ICR7aW5wdXRTY29wZXN9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFcnJvciB0aHJvd24gd2hlbiBwcm9tcHQgaXMgbm90IGFuIGFsbG93ZWQgdHlwZS5cclxuICAgICAqIEBwYXJhbSBwcm9tcHRWYWx1ZVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlSW52YWxpZFByb21wdEVycm9yKHByb21wdFZhbHVlOiBzdHJpbmcpOiBDbGllbnRDb25maWd1cmF0aW9uRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yKENsaWVudENvbmZpZ3VyYXRpb25FcnJvck1lc3NhZ2UuaW52YWxpZFByb21wdC5jb2RlLFxyXG4gICAgICAgICAgICBgJHtDbGllbnRDb25maWd1cmF0aW9uRXJyb3JNZXNzYWdlLmludmFsaWRQcm9tcHQuZGVzY30gR2l2ZW4gdmFsdWU6ICR7cHJvbXB0VmFsdWV9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGVycm9yIHRocm93biB3aGVuIGNsYWltcyBwYXJhbWV0ZXIgaXMgbm90IGEgc3RyaW5naWZpZWQgSlNPTiBvYmplY3RcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZUludmFsaWRDbGFpbXNSZXF1ZXN0RXJyb3IoKTogQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudENvbmZpZ3VyYXRpb25FcnJvcihDbGllbnRDb25maWd1cmF0aW9uRXJyb3JNZXNzYWdlLmludmFsaWRDbGFpbXNSZXF1ZXN0LmNvZGUsXHJcbiAgICAgICAgICAgIENsaWVudENvbmZpZ3VyYXRpb25FcnJvck1lc3NhZ2UuaW52YWxpZENsYWltc1JlcXVlc3QuZGVzYyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaHJvd3MgZXJyb3Igd2hlbiB0b2tlbiByZXF1ZXN0IGlzIGVtcHR5IGFuZCBub3RoaW5nIGNhY2hlZCBpbiBzdG9yYWdlLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlRW1wdHlMb2dvdXRSZXF1ZXN0RXJyb3IoKTogQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudENvbmZpZ3VyYXRpb25FcnJvcihcclxuICAgICAgICAgICAgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yTWVzc2FnZS5sb2dvdXRSZXF1ZXN0RW1wdHlFcnJvci5jb2RlLFxyXG4gICAgICAgICAgICBDbGllbnRDb25maWd1cmF0aW9uRXJyb3JNZXNzYWdlLmxvZ291dFJlcXVlc3RFbXB0eUVycm9yLmRlc2NcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhyb3dzIGVycm9yIHdoZW4gdG9rZW4gcmVxdWVzdCBpcyBlbXB0eSBhbmQgbm90aGluZyBjYWNoZWQgaW4gc3RvcmFnZS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZUVtcHR5VG9rZW5SZXF1ZXN0RXJyb3IoKTogQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudENvbmZpZ3VyYXRpb25FcnJvcihcclxuICAgICAgICAgICAgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yTWVzc2FnZS50b2tlblJlcXVlc3RFbXB0eUVycm9yLmNvZGUsXHJcbiAgICAgICAgICAgIENsaWVudENvbmZpZ3VyYXRpb25FcnJvck1lc3NhZ2UudG9rZW5SZXF1ZXN0RW1wdHlFcnJvci5kZXNjXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRocm93cyBlcnJvciB3aGVuIGFuIGludmFsaWQgY29kZV9jaGFsbGVuZ2VfbWV0aG9kIGlzIHBhc3NlZCBieSB0aGUgdXNlclxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlSW52YWxpZENvZGVDaGFsbGVuZ2VNZXRob2RFcnJvcigpOiBDbGllbnRDb25maWd1cmF0aW9uRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yKFxyXG4gICAgICAgICAgICBDbGllbnRDb25maWd1cmF0aW9uRXJyb3JNZXNzYWdlLmludmFsaWRDb2RlQ2hhbGxlbmdlTWV0aG9kLmNvZGUsXHJcbiAgICAgICAgICAgIENsaWVudENvbmZpZ3VyYXRpb25FcnJvck1lc3NhZ2UuaW52YWxpZENvZGVDaGFsbGVuZ2VNZXRob2QuZGVzY1xyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaHJvd3MgZXJyb3Igd2hlbiBib3RoIHBhcmFtczogY29kZV9jaGFsbGVuZ2UgYW5kIGNvZGVfY2hhbGxlbmdlX21ldGhvZCBhcmUgbm90IHBhc3NlZCB0b2dldGhlclxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlSW52YWxpZENvZGVDaGFsbGVuZ2VQYXJhbXNFcnJvcigpOiBDbGllbnRDb25maWd1cmF0aW9uRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yKFxyXG4gICAgICAgICAgICBDbGllbnRDb25maWd1cmF0aW9uRXJyb3JNZXNzYWdlLmludmFsaWRDb2RlQ2hhbGxlbmdlUGFyYW1zLmNvZGUsXHJcbiAgICAgICAgICAgIENsaWVudENvbmZpZ3VyYXRpb25FcnJvck1lc3NhZ2UuaW52YWxpZENvZGVDaGFsbGVuZ2VQYXJhbXMuZGVzY1xyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaHJvd3MgYW4gZXJyb3Igd2hlbiB0aGUgdXNlciBwYXNzZXMgaW52YWxpZCBjbG91ZERpc2NvdmVyeU1ldGFkYXRhXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVJbnZhbGlkQ2xvdWREaXNjb3ZlcnlNZXRhZGF0YUVycm9yKCk6IENsaWVudENvbmZpZ3VyYXRpb25FcnJvciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRDb25maWd1cmF0aW9uRXJyb3IoQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yTWVzc2FnZS5pbnZhbGlkQ2xvdWREaXNjb3ZlcnlNZXRhZGF0YS5jb2RlLFxyXG4gICAgICAgICAgICBDbGllbnRDb25maWd1cmF0aW9uRXJyb3JNZXNzYWdlLmludmFsaWRDbG91ZERpc2NvdmVyeU1ldGFkYXRhLmRlc2MpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhyb3dzIGFuIGVycm9yIHdoZW4gdGhlIHVzZXIgcGFzc2VzIGludmFsaWQgY2xvdWREaXNjb3ZlcnlNZXRhZGF0YVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlSW52YWxpZEF1dGhvcml0eU1ldGFkYXRhRXJyb3IoKTogQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IENsaWVudENvbmZpZ3VyYXRpb25FcnJvcihDbGllbnRDb25maWd1cmF0aW9uRXJyb3JNZXNzYWdlLmludmFsaWRBdXRob3JpdHlNZXRhZGF0YS5jb2RlLFxyXG4gICAgICAgICAgICBDbGllbnRDb25maWd1cmF0aW9uRXJyb3JNZXNzYWdlLmludmFsaWRBdXRob3JpdHlNZXRhZGF0YS5kZXNjKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRocm93cyBlcnJvciB3aGVuIHByb3ZpZGVkIGF1dGhvcml0eSBpcyBub3QgYSBtZW1iZXIgb2YgdGhlIHRydXN0ZWQgaG9zdCBsaXN0XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVVbnRydXN0ZWRBdXRob3JpdHlFcnJvcigpOiBDbGllbnRDb25maWd1cmF0aW9uRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yKENsaWVudENvbmZpZ3VyYXRpb25FcnJvck1lc3NhZ2UudW50cnVzdGVkQXV0aG9yaXR5LmNvZGUsXHJcbiAgICAgICAgICAgIENsaWVudENvbmZpZ3VyYXRpb25FcnJvck1lc3NhZ2UudW50cnVzdGVkQXV0aG9yaXR5LmRlc2MpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhyb3dzIGVycm9yIHdoZW4gcmVzb3VyY2VSZXF1ZXN0TWV0aG9kIG9yIHJlc291cmNlUmVxdWVzdFVyaSBpcyBtaXNzaW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVSZXNvdXJjZVJlcXVlc3RQYXJhbWV0ZXJzUmVxdWlyZWRFcnJvcigpOiBDbGllbnRDb25maWd1cmF0aW9uRXJyb3Ige1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yKENsaWVudENvbmZpZ3VyYXRpb25FcnJvck1lc3NhZ2UucmVzb3VyY2VSZXF1ZXN0UGFyYW1ldGVyc1JlcXVpcmVkLmNvZGUsXHJcbiAgICAgICAgICAgIENsaWVudENvbmZpZ3VyYXRpb25FcnJvck1lc3NhZ2UucmVzb3VyY2VSZXF1ZXN0UGFyYW1ldGVyc1JlcXVpcmVkLmRlc2MpO1xyXG4gICAgfVxyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0NsaWVudENvbmZpZ3VyYXRpb25FcnJvclwiO1xyXG5pbXBvcnQgeyBTdHJpbmdVdGlscyB9IGZyb20gXCIuLi91dGlscy9TdHJpbmdVdGlsc1wiO1xyXG5pbXBvcnQgeyBDbGllbnRBdXRoRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvQ2xpZW50QXV0aEVycm9yXCI7XHJcbmltcG9ydCB7IE9JRENfU0NPUEVTIH0gZnJvbSBcIi4uL3V0aWxzL0NvbnN0YW50c1wiO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBTY29wZVNldCBjbGFzcyBjcmVhdGVzIGEgc2V0IG9mIHNjb3Blcy4gU2NvcGVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlLCB1bmlxdWUgdmFsdWVzLCBzbyB0aGUgU2V0IG9iamVjdCBpbiBKUyBtYWtlc1xyXG4gKiB0aGUgbW9zdCBzZW5zZSB0byBpbXBsZW1lbnQgZm9yIHRoaXMgY2xhc3MuIEFsbCBzY29wZXMgYXJlIHRyaW1tZWQgYW5kIGNvbnZlcnRlZCB0byBsb3dlciBjYXNlIHN0cmluZ3MgaW4gaW50ZXJzZWN0aW9uIGFuZCB1bmlvbiBmdW5jdGlvbnNcclxuICogdG8gZW5zdXJlIHVuaXF1ZW5lc3Mgb2Ygc3RyaW5ncy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBTY29wZVNldCB7XHJcbiAgICAvLyBTY29wZXMgYXMgYSBTZXQgb2Ygc3RyaW5nc1xyXG4gICAgcHJpdmF0ZSBzY29wZXM6IFNldDxzdHJpbmc+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlucHV0U2NvcGVzOiBBcnJheTxzdHJpbmc+KSB7XHJcbiAgICAgICAgLy8gRmlsdGVyIGVtcHR5IHN0cmluZyBhbmQgbnVsbC91bmRlZmluZWQgYXJyYXkgaXRlbXNcclxuICAgICAgICBjb25zdCBzY29wZUFyciA9IGlucHV0U2NvcGVzID8gU3RyaW5nVXRpbHMudHJpbUFycmF5RW50cmllcyhbLi4uaW5wdXRTY29wZXNdKSA6IFtdO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkSW5wdXQgPSBzY29wZUFyciA/IFN0cmluZ1V0aWxzLnJlbW92ZUVtcHR5U3RyaW5nc0Zyb21BcnJheShzY29wZUFycikgOiBbXTtcclxuXHJcbiAgICAgICAgLy8gVmFsaWRhdGUgYW5kIGZpbHRlciBzY29wZXMgKHZhbGlkYXRlIGZ1bmN0aW9uIHRocm93cyBpZiB2YWxpZGF0aW9uIGZhaWxzKVxyXG4gICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dFNjb3BlcyhmaWx0ZXJlZElucHV0KTtcclxuXHJcbiAgICAgICAgdGhpcy5zY29wZXMgPSBuZXcgU2V0PHN0cmluZz4oKTsgLy8gSXRlcmF0b3IgaW4gY29uc3RydWN0b3Igbm90IHN1cHBvcnRlZCBieSBJRTExXHJcbiAgICAgICAgZmlsdGVyZWRJbnB1dC5mb3JFYWNoKHNjb3BlID0+IHRoaXMuc2NvcGVzLmFkZChzY29wZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIFNjb3BlU2V0IGZyb20gc3BhY2UtZGVsaW1pdGVkIHN0cmluZ1xyXG4gICAgICogQHBhcmFtIGlucHV0U2NvcGVTdHJpbmdcclxuICAgICAqIEBwYXJhbSBhcHBDbGllbnRJZFxyXG4gICAgICogQHBhcmFtIHNjb3Blc1JlcXVpcmVkXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBmcm9tU3RyaW5nKGlucHV0U2NvcGVTdHJpbmc6IHN0cmluZyk6IFNjb3BlU2V0IHtcclxuICAgICAgICBpbnB1dFNjb3BlU3RyaW5nID0gaW5wdXRTY29wZVN0cmluZyB8fCBcIlwiO1xyXG4gICAgICAgIGNvbnN0IGlucHV0U2NvcGVzOiBBcnJheTxzdHJpbmc+ID0gaW5wdXRTY29wZVN0cmluZy5zcGxpdChcIiBcIik7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBTY29wZVNldChpbnB1dFNjb3Blcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVc2VkIHRvIHZhbGlkYXRlIHRoZSBzY29wZXMgaW5wdXQgcGFyYW1ldGVyIHJlcXVlc3RlZCAgYnkgdGhlIGRldmVsb3Blci5cclxuICAgICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gaW5wdXRTY29wZXMgLSBEZXZlbG9wZXIgcmVxdWVzdGVkIHBlcm1pc3Npb25zLiBOb3QgYWxsIHNjb3BlcyBhcmUgZ3VhcmFudGVlZCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYWNjZXNzIHRva2VuIHJldHVybmVkLlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBzY29wZXNSZXF1aXJlZCAtIEJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBzY29wZXMgYXJyYXkgaXMgcmVxdWlyZWQgb3Igbm90XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdmFsaWRhdGVJbnB1dFNjb3BlcyhpbnB1dFNjb3BlczogQXJyYXk8c3RyaW5nPik6IHZvaWQge1xyXG4gICAgICAgIC8vIENoZWNrIGlmIHNjb3BlcyBhcmUgcmVxdWlyZWQgYnV0IG5vdCBnaXZlbiBvciBpcyBhbiBlbXB0eSBhcnJheVxyXG4gICAgICAgIGlmICghaW5wdXRTY29wZXMgfHwgaW5wdXRTY29wZXMubGVuZ3RoIDwgMSkge1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRDb25maWd1cmF0aW9uRXJyb3IuY3JlYXRlRW1wdHlTY29wZXNBcnJheUVycm9yKGlucHV0U2NvcGVzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVjayBpZiBhIGdpdmVuIHNjb3BlIGlzIHByZXNlbnQgaW4gdGhpcyBzZXQgb2Ygc2NvcGVzLlxyXG4gICAgICogQHBhcmFtIHNjb3BlXHJcbiAgICAgKi9cclxuICAgIGNvbnRhaW5zU2NvcGUoc2NvcGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGxvd2VyQ2FzZVNjb3BlcyA9IHRoaXMucHJpbnRTY29wZXNMb3dlckNhc2UoKS5zcGxpdChcIiBcIik7XHJcbiAgICAgICAgY29uc3QgbG93ZXJDYXNlU2NvcGVzU2V0ID0gbmV3IFNjb3BlU2V0KGxvd2VyQ2FzZVNjb3Blcyk7XHJcbiAgICAgICAgLy8gY29tcGFyZSBsb3dlcmNhc2Ugc2NvcGVzXHJcbiAgICAgICAgcmV0dXJuICFTdHJpbmdVdGlscy5pc0VtcHR5KHNjb3BlKSA/IGxvd2VyQ2FzZVNjb3Blc1NldC5zY29wZXMuaGFzKHNjb3BlLnRvTG93ZXJDYXNlKCkpIDogZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVjayBpZiBhIHNldCBvZiBzY29wZXMgaXMgcHJlc2VudCBpbiB0aGlzIHNldCBvZiBzY29wZXMuXHJcbiAgICAgKiBAcGFyYW0gc2NvcGVTZXRcclxuICAgICAqL1xyXG4gICAgY29udGFpbnNTY29wZVNldChzY29wZVNldDogU2NvcGVTZXQpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXNjb3BlU2V0IHx8IHNjb3BlU2V0LnNjb3Blcy5zaXplIDw9IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnNjb3Blcy5zaXplID49IHNjb3BlU2V0LnNjb3Blcy5zaXplICYmIHNjb3BlU2V0LmFzQXJyYXkoKS5ldmVyeShzY29wZSA9PiB0aGlzLmNvbnRhaW5zU2NvcGUoc2NvcGUpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVjayBpZiBzZXQgb2Ygc2NvcGVzIGNvbnRhaW5zIG9ubHkgdGhlIGRlZmF1bHRzXHJcbiAgICAgKi9cclxuICAgIGNvbnRhaW5zT25seU9JRENTY29wZXMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IGRlZmF1bHRTY29wZUNvdW50ID0gMDtcclxuICAgICAgICBPSURDX1NDT1BFUy5mb3JFYWNoKChkZWZhdWx0U2NvcGU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb250YWluc1Njb3BlKGRlZmF1bHRTY29wZSkpIHtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRTY29wZUNvdW50ICs9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NvcGVzLnNpemUgPT09IGRlZmF1bHRTY29wZUNvdW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXBwZW5kcyBzaW5nbGUgc2NvcGUgaWYgcGFzc2VkXHJcbiAgICAgKiBAcGFyYW0gbmV3U2NvcGVcclxuICAgICAqL1xyXG4gICAgYXBwZW5kU2NvcGUobmV3U2NvcGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghU3RyaW5nVXRpbHMuaXNFbXB0eShuZXdTY29wZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5zY29wZXMuYWRkKG5ld1Njb3BlLnRyaW0oKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXBwZW5kcyBtdWx0aXBsZSBzY29wZXMgaWYgcGFzc2VkXHJcbiAgICAgKiBAcGFyYW0gbmV3U2NvcGVzXHJcbiAgICAgKi9cclxuICAgIGFwcGVuZFNjb3BlcyhuZXdTY29wZXM6IEFycmF5PHN0cmluZz4pOiB2b2lkIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBuZXdTY29wZXMuZm9yRWFjaChuZXdTY29wZSA9PiB0aGlzLmFwcGVuZFNjb3BlKG5ld1Njb3BlKSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRBdXRoRXJyb3IuY3JlYXRlQXBwZW5kU2NvcGVTZXRFcnJvcihlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIGVsZW1lbnQgZnJvbSBzZXQgb2Ygc2NvcGVzLlxyXG4gICAgICogQHBhcmFtIHNjb3BlXHJcbiAgICAgKi9cclxuICAgIHJlbW92ZVNjb3BlKHNjb3BlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNFbXB0eShzY29wZSkpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZVJlbW92ZUVtcHR5U2NvcGVGcm9tU2V0RXJyb3Ioc2NvcGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNjb3Blcy5kZWxldGUoc2NvcGUudHJpbSgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgZGVmYXVsdCBzY29wZXMgZnJvbSBzZXQgb2Ygc2NvcGVzXHJcbiAgICAgKiBQcmltYXJpbHkgdXNlZCB0byBwcmV2ZW50IGNhY2hlIG1pc3NlcyBpZiB0aGUgZGVmYXVsdCBzY29wZXMgYXJlIG5vdCByZXR1cm5lZCBmcm9tIHRoZSBzZXJ2ZXJcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlT0lEQ1Njb3BlcygpOiB2b2lkIHtcclxuICAgICAgICBPSURDX1NDT1BFUy5mb3JFYWNoKChkZWZhdWx0U2NvcGU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNjb3Blcy5kZWxldGUoZGVmYXVsdFNjb3BlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbWJpbmVzIGFuIGFycmF5IG9mIHNjb3BlcyB3aXRoIHRoZSBjdXJyZW50IHNldCBvZiBzY29wZXMuXHJcbiAgICAgKiBAcGFyYW0gb3RoZXJTY29wZXNcclxuICAgICAqL1xyXG4gICAgdW5pb25TY29wZVNldHMob3RoZXJTY29wZXM6IFNjb3BlU2V0KTogU2V0PHN0cmluZz4ge1xyXG4gICAgICAgIGlmICghb3RoZXJTY29wZXMpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZUVtcHR5SW5wdXRTY29wZVNldEVycm9yKG90aGVyU2NvcGVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdW5pb25TY29wZXMgPSBuZXcgU2V0PHN0cmluZz4oKTsgLy8gSXRlcmF0b3IgaW4gY29uc3RydWN0b3Igbm90IHN1cHBvcnRlZCBpbiBJRTExXHJcbiAgICAgICAgb3RoZXJTY29wZXMuc2NvcGVzLmZvckVhY2goc2NvcGUgPT4gdW5pb25TY29wZXMuYWRkKHNjb3BlLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICB0aGlzLnNjb3Blcy5mb3JFYWNoKHNjb3BlID0+IHVuaW9uU2NvcGVzLmFkZChzY29wZS50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgcmV0dXJuIHVuaW9uU2NvcGVzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2sgaWYgc2NvcGVzIGludGVyc2VjdCBiZXR3ZWVuIHRoaXMgc2V0IGFuZCBhbm90aGVyLlxyXG4gICAgICogQHBhcmFtIG90aGVyU2NvcGVzXHJcbiAgICAgKi9cclxuICAgIGludGVyc2VjdGluZ1Njb3BlU2V0cyhvdGhlclNjb3BlczogU2NvcGVTZXQpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIW90aGVyU2NvcGVzKSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVFbXB0eUlucHV0U2NvcGVTZXRFcnJvcihvdGhlclNjb3Blcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIERvIG5vdCBhbGxvdyBPSURDIHNjb3BlcyB0byBiZSB0aGUgb25seSBpbnRlcnNlY3Rpbmcgc2NvcGVzXHJcbiAgICAgICAgaWYgKCFvdGhlclNjb3Blcy5jb250YWluc09ubHlPSURDU2NvcGVzKCkpIHtcclxuICAgICAgICAgICAgb3RoZXJTY29wZXMucmVtb3ZlT0lEQ1Njb3BlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB1bmlvblNjb3BlcyA9IHRoaXMudW5pb25TY29wZVNldHMob3RoZXJTY29wZXMpO1xyXG4gICAgICAgIGNvbnN0IHNpemVPdGhlclNjb3BlcyA9IG90aGVyU2NvcGVzLmdldFNjb3BlQ291bnQoKTtcclxuICAgICAgICBjb25zdCBzaXplVGhpc1Njb3BlcyA9IHRoaXMuZ2V0U2NvcGVDb3VudCgpO1xyXG4gICAgICAgIGNvbnN0IHNpemVVbmlvblNjb3BlcyA9IHVuaW9uU2NvcGVzLnNpemU7XHJcbiAgICAgICAgcmV0dXJuIHNpemVVbmlvblNjb3BlcyA8IChzaXplVGhpc1Njb3BlcyArIHNpemVPdGhlclNjb3Blcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHNpemUgb2Ygc2V0IG9mIHNjb3Blcy5cclxuICAgICAqL1xyXG4gICAgZ2V0U2NvcGVDb3VudCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNjb3Blcy5zaXplO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgc2NvcGVzIGFzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXNcclxuICAgICAqL1xyXG4gICAgYXNBcnJheSgpOiBBcnJheTxzdHJpbmc+IHtcclxuICAgICAgICBjb25zdCBhcnJheTogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2NvcGVzLmZvckVhY2godmFsID0+IGFycmF5LnB1c2godmFsKSk7XHJcbiAgICAgICAgcmV0dXJuIGFycmF5O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJpbnRzIHNjb3BlcyBpbnRvIGEgc3BhY2UtZGVsaW1pdGVkIHN0cmluZ1xyXG4gICAgICovXHJcbiAgICBwcmludFNjb3BlcygpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLnNjb3Blcykge1xyXG4gICAgICAgICAgICBjb25zdCBzY29wZUFyciA9IHRoaXMuYXNBcnJheSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gc2NvcGVBcnIuam9pbihcIiBcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJpbnRzIHNjb3BlcyBpbnRvIGEgc3BhY2UtZGVsaW1pdGVkIGxvd2VyLWNhc2Ugc3RyaW5nICh1c2VkIGZvciBjYWNoaW5nKVxyXG4gICAgICovXHJcbiAgICBwcmludFNjb3Blc0xvd2VyQ2FzZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByaW50U2NvcGVzKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxufVxyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENsaWVudEF1dGhFcnJvciB9IGZyb20gXCIuLi9lcnJvci9DbGllbnRBdXRoRXJyb3JcIjtcclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tIFwiLi4vdXRpbHMvU3RyaW5nVXRpbHNcIjtcclxuaW1wb3J0IHsgSUNyeXB0byB9IGZyb20gXCIuLi9jcnlwdG8vSUNyeXB0b1wiO1xyXG5cclxuLyoqXHJcbiAqIENsaWVudCBpbmZvIG9iamVjdCB3aGljaCBjb25zaXN0cyBvZiB0d28gSURzLiBOZWVkIHRvIGFkZCBtb3JlIGluZm8gaGVyZS5cclxuICovXHJcbmV4cG9ydCB0eXBlIENsaWVudEluZm8gPSB7XHJcbiAgICB1aWQ6IHN0cmluZyxcclxuICAgIHV0aWQ6IHN0cmluZ1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEZ1bmN0aW9uIHRvIGJ1aWxkIGEgY2xpZW50IGluZm8gb2JqZWN0XHJcbiAqIEBwYXJhbSByYXdDbGllbnRJbmZvXHJcbiAqIEBwYXJhbSBjcnlwdG9cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBidWlsZENsaWVudEluZm8ocmF3Q2xpZW50SW5mbzogc3RyaW5nLCBjcnlwdG86IElDcnlwdG8pOiBDbGllbnRJbmZvIHtcclxuICAgIGlmIChTdHJpbmdVdGlscy5pc0VtcHR5KHJhd0NsaWVudEluZm8pKSB7XHJcbiAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZUNsaWVudEluZm9FbXB0eUVycm9yKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBkZWNvZGVkQ2xpZW50SW5mbzogc3RyaW5nID0gY3J5cHRvLmJhc2U2NERlY29kZShyYXdDbGllbnRJbmZvKTtcclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShkZWNvZGVkQ2xpZW50SW5mbykgYXMgQ2xpZW50SW5mbztcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICB0aHJvdyBDbGllbnRBdXRoRXJyb3IuY3JlYXRlQ2xpZW50SW5mb0RlY29kaW5nRXJyb3IoZSk7XHJcbiAgICB9XHJcbn1cclxuIiwiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG4vKipcclxuICogQXV0aG9yaXR5IHR5cGVzIHN1cHBvcnRlZCBieSBNU0FMLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gQXV0aG9yaXR5VHlwZSB7XHJcbiAgICBEZWZhdWx0LFxyXG4gICAgQWRmc1xyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHtcclxuICAgIFNlcGFyYXRvcnMsXHJcbiAgICBDYWNoZUFjY291bnRUeXBlLFxyXG4gICAgQ2FjaGVUeXBlLFxyXG4gICAgQ29uc3RhbnRzLFxyXG59IGZyb20gXCIuLi8uLi91dGlscy9Db25zdGFudHNcIjtcclxuaW1wb3J0IHsgQXV0aG9yaXR5IH0gZnJvbSBcIi4uLy4uL2F1dGhvcml0eS9BdXRob3JpdHlcIjtcclxuaW1wb3J0IHsgQXV0aFRva2VuIH0gZnJvbSBcIi4uLy4uL2FjY291bnQvQXV0aFRva2VuXCI7XHJcbmltcG9ydCB7IElDcnlwdG8gfSBmcm9tIFwiLi4vLi4vY3J5cHRvL0lDcnlwdG9cIjtcclxuaW1wb3J0IHsgYnVpbGRDbGllbnRJbmZvIH0gZnJvbSBcIi4uLy4uL2FjY291bnQvQ2xpZW50SW5mb1wiO1xyXG5pbXBvcnQgeyBTdHJpbmdVdGlscyB9IGZyb20gXCIuLi8uLi91dGlscy9TdHJpbmdVdGlsc1wiO1xyXG5pbXBvcnQgeyBBY2NvdW50SW5mbyB9IGZyb20gXCIuLi8uLi9hY2NvdW50L0FjY291bnRJbmZvXCI7XHJcbmltcG9ydCB7IENsaWVudEF1dGhFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvci9DbGllbnRBdXRoRXJyb3JcIjtcclxuaW1wb3J0IHsgQXV0aG9yaXR5VHlwZSB9IGZyb20gXCIuLi8uLi9hdXRob3JpdHkvQXV0aG9yaXR5VHlwZVwiO1xyXG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tIFwiLi4vLi4vbG9nZ2VyL0xvZ2dlclwiO1xyXG5pbXBvcnQgeyBUb2tlbkNsYWltcyB9IGZyb20gXCIuLi8uLi9hY2NvdW50L1Rva2VuQ2xhaW1zXCI7XHJcblxyXG4vKipcclxuICogVHlwZSB0aGF0IGRlZmluZXMgcmVxdWlyZWQgYW5kIG9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIGFuIEFjY291bnQgZmllbGQgKGJhc2VkIG9uIHVuaXZlcnNhbCBjYWNoZSBzY2hlbWEgaW1wbGVtZW50ZWQgYnkgYWxsIE1TQUxzKS5cclxuICpcclxuICogS2V5IDogVmFsdWUgU2NoZW1hXHJcbiAqXHJcbiAqIEtleTogPGhvbWVfYWNjb3VudF9pZD4tPGVudmlyb25tZW50Pi08cmVhbG0qPlxyXG4gKlxyXG4gKiBWYWx1ZSBTY2hlbWE6XHJcbiAqIHtcclxuICogICAgICBob21lQWNjb3VudElkOiBob21lIGFjY291bnQgaWRlbnRpZmllciBmb3IgdGhlIGF1dGggc2NoZW1lLFxyXG4gKiAgICAgIGVudmlyb25tZW50OiBlbnRpdHkgdGhhdCBpc3N1ZWQgdGhlIHRva2VuLCByZXByZXNlbnRlZCBhcyBhIGZ1bGwgaG9zdFxyXG4gKiAgICAgIHJlYWxtOiBGdWxsIHRlbmFudCBvciBvcmdhbml6YXRpb25hbCBpZGVudGlmaWVyIHRoYXQgdGhlIGFjY291bnQgYmVsb25ncyB0b1xyXG4gKiAgICAgIGxvY2FsQWNjb3VudElkOiBPcmlnaW5hbCB0ZW5hbnQtc3BlY2lmaWMgYWNjb3VudElELCB1c3VhbGx5IHVzZWQgZm9yIGxlZ2FjeSBjYXNlc1xyXG4gKiAgICAgIHVzZXJuYW1lOiBwcmltYXJ5IHVzZXJuYW1lIHRoYXQgcmVwcmVzZW50cyB0aGUgdXNlciwgdXN1YWxseSBjb3JyZXNwb25kcyB0byBwcmVmZXJyZWRfdXNlcm5hbWUgaW4gdGhlIHYyIGVuZHB0XHJcbiAqICAgICAgYXV0aG9yaXR5VHlwZTogQWNjb3VudHMgYXV0aG9yaXR5IHR5cGUgYXMgYSBzdHJpbmdcclxuICogICAgICBuYW1lOiBGdWxsIG5hbWUgZm9yIHRoZSBhY2NvdW50LCBpbmNsdWRpbmcgZ2l2ZW4gbmFtZSBhbmQgZmFtaWx5IG5hbWUsXHJcbiAqICAgICAgY2xpZW50SW5mbzogRnVsbCBiYXNlNjQgZW5jb2RlZCBjbGllbnQgaW5mbyByZWNlaXZlZCBmcm9tIEVTVFNcclxuICogICAgICBsYXN0TW9kaWZpY2F0aW9uVGltZTogbGFzdCB0aW1lIHRoaXMgZW50aXR5IHdhcyBtb2RpZmllZCBpbiB0aGUgY2FjaGVcclxuICogICAgICBsYXN0TW9kaWZpY2F0aW9uQXBwOlxyXG4gKiAgICAgIG9ib0Fzc2VydGlvbjogYWNjZXNzIHRva2VuIHBhc3NlZCBpbiBhcyBwYXJ0IG9mIE9CTyByZXF1ZXN0XHJcbiAqICAgICAgaWRUb2tlbkNsYWltczogT2JqZWN0IGNvbnRhaW5pbmcgY2xhaW1zIHBhcnNlZCBmcm9tIElEIHRva2VuXHJcbiAqIH1cclxuICovXHJcbmV4cG9ydCBjbGFzcyBBY2NvdW50RW50aXR5IHtcclxuICAgIGhvbWVBY2NvdW50SWQ6IHN0cmluZztcclxuICAgIGVudmlyb25tZW50OiBzdHJpbmc7XHJcbiAgICByZWFsbTogc3RyaW5nO1xyXG4gICAgbG9jYWxBY2NvdW50SWQ6IHN0cmluZztcclxuICAgIHVzZXJuYW1lOiBzdHJpbmc7XHJcbiAgICBhdXRob3JpdHlUeXBlOiBzdHJpbmc7XHJcbiAgICBuYW1lPzogc3RyaW5nO1xyXG4gICAgY2xpZW50SW5mbz86IHN0cmluZztcclxuICAgIGxhc3RNb2RpZmljYXRpb25UaW1lPzogc3RyaW5nO1xyXG4gICAgbGFzdE1vZGlmaWNhdGlvbkFwcD86IHN0cmluZztcclxuICAgIG9ib0Fzc2VydGlvbj86IHN0cmluZztcclxuICAgIGNsb3VkR3JhcGhIb3N0TmFtZT86IHN0cmluZztcclxuICAgIG1zR3JhcGhIb3N0Pzogc3RyaW5nOyBcclxuICAgIGlkVG9rZW5DbGFpbXM/OiBUb2tlbkNsYWltcztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYXRlIEFjY291bnQgSWQga2V5IGNvbXBvbmVudCBhcyBwZXIgdGhlIHNjaGVtYTogPGhvbWVfYWNjb3VudF9pZD4tPGVudmlyb25tZW50PlxyXG4gICAgICovXHJcbiAgICBnZW5lcmF0ZUFjY291bnRJZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGFjY291bnRJZDogQXJyYXk8c3RyaW5nPiA9IFt0aGlzLmhvbWVBY2NvdW50SWQsIHRoaXMuZW52aXJvbm1lbnRdO1xyXG4gICAgICAgIHJldHVybiBhY2NvdW50SWQuam9pbihTZXBhcmF0b3JzLkNBQ0hFX0tFWV9TRVBBUkFUT1IpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZW5lcmF0ZSBBY2NvdW50IENhY2hlIEtleSBhcyBwZXIgdGhlIHNjaGVtYTogPGhvbWVfYWNjb3VudF9pZD4tPGVudmlyb25tZW50Pi08cmVhbG0qPlxyXG4gICAgICovXHJcbiAgICBnZW5lcmF0ZUFjY291bnRLZXkoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gQWNjb3VudEVudGl0eS5nZW5lcmF0ZUFjY291bnRDYWNoZUtleSh7XHJcbiAgICAgICAgICAgIGhvbWVBY2NvdW50SWQ6IHRoaXMuaG9tZUFjY291bnRJZCxcclxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuZW52aXJvbm1lbnQsXHJcbiAgICAgICAgICAgIHRlbmFudElkOiB0aGlzLnJlYWxtLFxyXG4gICAgICAgICAgICB1c2VybmFtZTogdGhpcy51c2VybmFtZSxcclxuICAgICAgICAgICAgbG9jYWxBY2NvdW50SWQ6IHRoaXMubG9jYWxBY2NvdW50SWRcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHJldHVybnMgdGhlIHR5cGUgb2YgdGhlIGNhY2hlIChpbiB0aGlzIGNhc2UgYWNjb3VudClcclxuICAgICAqL1xyXG4gICAgZ2VuZXJhdGVUeXBlKCk6IG51bWJlciB7XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLmF1dGhvcml0eVR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBDYWNoZUFjY291bnRUeXBlLkFERlNfQUNDT1VOVF9UWVBFOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIENhY2hlVHlwZS5BREZTO1xyXG4gICAgICAgICAgICBjYXNlIENhY2hlQWNjb3VudFR5cGUuTVNBVjFfQUNDT1VOVF9UWVBFOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIENhY2hlVHlwZS5NU0E7XHJcbiAgICAgICAgICAgIGNhc2UgQ2FjaGVBY2NvdW50VHlwZS5NU1NUU19BQ0NPVU5UX1RZUEU6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gQ2FjaGVUeXBlLk1TU1RTO1xyXG4gICAgICAgICAgICBjYXNlIENhY2hlQWNjb3VudFR5cGUuR0VORVJJQ19BQ0NPVU5UX1RZUEU6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gQ2FjaGVUeXBlLkdFTkVSSUM7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkQWNjb3VudFR5cGVFcnJvcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgQWNjb3VudEluZm8gaW50ZXJmYWNlIGZvciB0aGlzIGFjY291bnQuXHJcbiAgICAgKi9cclxuICAgIGdldEFjY291bnRJbmZvKCk6IEFjY291bnRJbmZvIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBob21lQWNjb3VudElkOiB0aGlzLmhvbWVBY2NvdW50SWQsXHJcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB0aGlzLmVudmlyb25tZW50LFxyXG4gICAgICAgICAgICB0ZW5hbnRJZDogdGhpcy5yZWFsbSxcclxuICAgICAgICAgICAgdXNlcm5hbWU6IHRoaXMudXNlcm5hbWUsXHJcbiAgICAgICAgICAgIGxvY2FsQWNjb3VudElkOiB0aGlzLmxvY2FsQWNjb3VudElkLFxyXG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXHJcbiAgICAgICAgICAgIGlkVG9rZW5DbGFpbXM6IHRoaXMuaWRUb2tlbkNsYWltc1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZW5lcmF0ZXMgYWNjb3VudCBrZXkgZnJvbSBpbnRlcmZhY2VcclxuICAgICAqIEBwYXJhbSBhY2NvdW50SW50ZXJmYWNlXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZW5lcmF0ZUFjY291bnRDYWNoZUtleShhY2NvdW50SW50ZXJmYWNlOiBBY2NvdW50SW5mbyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgYWNjb3VudEtleSA9IFtcclxuICAgICAgICAgICAgYWNjb3VudEludGVyZmFjZS5ob21lQWNjb3VudElkLFxyXG4gICAgICAgICAgICBhY2NvdW50SW50ZXJmYWNlLmVudmlyb25tZW50IHx8IFwiXCIsXHJcbiAgICAgICAgICAgIGFjY291bnRJbnRlcmZhY2UudGVuYW50SWQgfHwgXCJcIixcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICByZXR1cm4gYWNjb3VudEtleS5qb2luKFNlcGFyYXRvcnMuQ0FDSEVfS0VZX1NFUEFSQVRPUikudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEJ1aWxkIEFjY291bnQgY2FjaGUgZnJvbSBJZFRva2VuLCBjbGllbnRJbmZvIGFuZCBhdXRob3JpdHkvcG9saWN5LiBBc3NvY2lhdGVkIHdpdGggQUFELlxyXG4gICAgICogQHBhcmFtIGNsaWVudEluZm9cclxuICAgICAqIEBwYXJhbSBhdXRob3JpdHlcclxuICAgICAqIEBwYXJhbSBpZFRva2VuXHJcbiAgICAgKiBAcGFyYW0gcG9saWN5XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVBY2NvdW50KFxyXG4gICAgICAgIGNsaWVudEluZm86IHN0cmluZyxcclxuICAgICAgICBob21lQWNjb3VudElkOiBzdHJpbmcsXHJcbiAgICAgICAgYXV0aG9yaXR5OiBBdXRob3JpdHksXHJcbiAgICAgICAgaWRUb2tlbjogQXV0aFRva2VuLFxyXG4gICAgICAgIG9ib0Fzc2VydGlvbj86IHN0cmluZyxcclxuICAgICAgICBjbG91ZEdyYXBoSG9zdE5hbWU/OiBzdHJpbmcsXHJcbiAgICAgICAgbXNHcmFwaEhvc3Q/OiBzdHJpbmdcclxuICAgICk6IEFjY291bnRFbnRpdHkge1xyXG4gICAgICAgIGNvbnN0IGFjY291bnQ6IEFjY291bnRFbnRpdHkgPSBuZXcgQWNjb3VudEVudGl0eSgpO1xyXG5cclxuICAgICAgICBhY2NvdW50LmF1dGhvcml0eVR5cGUgPSBDYWNoZUFjY291bnRUeXBlLk1TU1RTX0FDQ09VTlRfVFlQRTtcclxuICAgICAgICBhY2NvdW50LmNsaWVudEluZm8gPSBjbGllbnRJbmZvO1xyXG4gICAgICAgIGFjY291bnQuaG9tZUFjY291bnRJZCA9IGhvbWVBY2NvdW50SWQ7XHJcblxyXG4gICAgICAgIGNvbnN0IGVudiA9IGF1dGhvcml0eS5nZXRQcmVmZXJyZWRDYWNoZSgpO1xyXG4gICAgICAgIGlmIChTdHJpbmdVdGlscy5pc0VtcHR5KGVudikpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZUludmFsaWRDYWNoZUVudmlyb25tZW50RXJyb3IoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFjY291bnQuZW52aXJvbm1lbnQgPSBlbnY7XHJcbiAgICAgICAgLy8gbm9uIEFBRCBzY2VuYXJpb3MgY2FuIGhhdmUgZW1wdHkgcmVhbG1cclxuICAgICAgICBhY2NvdW50LnJlYWxtID0gaWRUb2tlbj8uY2xhaW1zPy50aWQgfHwgXCJcIjtcclxuICAgICAgICBhY2NvdW50Lm9ib0Fzc2VydGlvbiA9IG9ib0Fzc2VydGlvbjtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoaWRUb2tlbikge1xyXG4gICAgICAgICAgICBhY2NvdW50LmlkVG9rZW5DbGFpbXMgPSBpZFRva2VuLmNsYWltcztcclxuXHJcbiAgICAgICAgICAgIC8vIEhvdyBkbyB5b3UgYWNjb3VudCBmb3IgTVNBIENJRCBoZXJlP1xyXG4gICAgICAgICAgICBhY2NvdW50LmxvY2FsQWNjb3VudElkID0gaWRUb2tlbj8uY2xhaW1zPy5vaWQgfHwgaWRUb2tlbj8uY2xhaW1zPy5zdWIgfHwgXCJcIjtcclxuXHJcbiAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAqIEluIEIyQyBzY2VuYXJpb3MgdGhlIGVtYWlscyBjbGFpbSBpcyB1c2VkIGluc3RlYWQgb2YgcHJlZmVycmVkX3VzZXJuYW1lIGFuZCBpdCBpcyBhbiBhcnJheS4gSW4gbW9zdCBjYXNlcyBpdCB3aWxsIGNvbnRhaW4gYSBzaW5nbGUgZW1haWwuXHJcbiAgICAgICAgICAgICAqIFRoaXMgZmllbGQgc2hvdWxkIG5vdCBiZSByZWxpZWQgdXBvbiBpZiBhIGN1c3RvbSBwb2xpY3kgaXMgY29uZmlndXJlZCB0byByZXR1cm4gbW9yZSB0aGFuIDEgZW1haWwuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBhY2NvdW50LnVzZXJuYW1lID0gaWRUb2tlbj8uY2xhaW1zPy5wcmVmZXJyZWRfdXNlcm5hbWUgfHwgKGlkVG9rZW4/LmNsYWltcz8uZW1haWxzPyBpZFRva2VuLmNsYWltcy5lbWFpbHNbMF06IFwiXCIpO1xyXG4gICAgICAgICAgICBhY2NvdW50Lm5hbWUgPSBpZFRva2VuPy5jbGFpbXM/Lm5hbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhY2NvdW50LmNsb3VkR3JhcGhIb3N0TmFtZSA9IGNsb3VkR3JhcGhIb3N0TmFtZTtcclxuICAgICAgICBhY2NvdW50Lm1zR3JhcGhIb3N0ID0gbXNHcmFwaEhvc3Q7XHJcblxyXG4gICAgICAgIHJldHVybiBhY2NvdW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQnVpbGRzIG5vbi1BQUQvQURGUyBhY2NvdW50LlxyXG4gICAgICogQHBhcmFtIGF1dGhvcml0eVxyXG4gICAgICogQHBhcmFtIGlkVG9rZW5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZUdlbmVyaWNBY2NvdW50KFxyXG4gICAgICAgIGF1dGhvcml0eTogQXV0aG9yaXR5LFxyXG4gICAgICAgIGhvbWVBY2NvdW50SWQ6IHN0cmluZyxcclxuICAgICAgICBpZFRva2VuOiBBdXRoVG9rZW4sXHJcbiAgICAgICAgb2JvQXNzZXJ0aW9uPzogc3RyaW5nLFxyXG4gICAgICAgIGNsb3VkR3JhcGhIb3N0TmFtZT86IHN0cmluZyxcclxuICAgICAgICBtc0dyYXBoSG9zdD86IHN0cmluZ1xyXG4gICAgKTogQWNjb3VudEVudGl0eSB7XHJcbiAgICAgICAgY29uc3QgYWNjb3VudDogQWNjb3VudEVudGl0eSA9IG5ldyBBY2NvdW50RW50aXR5KCk7XHJcblxyXG4gICAgICAgIGFjY291bnQuYXV0aG9yaXR5VHlwZSA9IChhdXRob3JpdHkuYXV0aG9yaXR5VHlwZSA9PT0gQXV0aG9yaXR5VHlwZS5BZGZzKSA/IENhY2hlQWNjb3VudFR5cGUuQURGU19BQ0NPVU5UX1RZUEUgOiBDYWNoZUFjY291bnRUeXBlLkdFTkVSSUNfQUNDT1VOVF9UWVBFO1xyXG4gICAgICAgIGFjY291bnQuaG9tZUFjY291bnRJZCA9IGhvbWVBY2NvdW50SWQ7XHJcbiAgICAgICAgLy8gbm9uIEFBRCBzY2VuYXJpb3MgY2FuIGhhdmUgZW1wdHkgcmVhbG1cclxuICAgICAgICBhY2NvdW50LnJlYWxtID0gXCJcIjtcclxuICAgICAgICBhY2NvdW50Lm9ib0Fzc2VydGlvbiA9IG9ib0Fzc2VydGlvbjtcclxuXHJcbiAgICAgICAgY29uc3QgZW52ID0gYXV0aG9yaXR5LmdldFByZWZlcnJlZENhY2hlKCk7XHJcblxyXG4gICAgICAgIGlmIChTdHJpbmdVdGlscy5pc0VtcHR5KGVudikpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZUludmFsaWRDYWNoZUVudmlyb25tZW50RXJyb3IoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpZFRva2VuKSB7XHJcbiAgICAgICAgICAgIC8vIEhvdyBkbyB5b3UgYWNjb3VudCBmb3IgTVNBIENJRCBoZXJlP1xyXG4gICAgICAgICAgICBhY2NvdW50LmxvY2FsQWNjb3VudElkID0gaWRUb2tlbj8uY2xhaW1zPy5vaWQgfHwgaWRUb2tlbj8uY2xhaW1zPy5zdWIgfHwgXCJcIjtcclxuICAgICAgICAgICAgLy8gdXBuIGNsYWltIGZvciBtb3N0IEFERlMgc2NlbmFyaW9zXHJcbiAgICAgICAgICAgIGFjY291bnQudXNlcm5hbWUgPSBpZFRva2VuPy5jbGFpbXM/LnVwbiB8fCBcIlwiO1xyXG4gICAgICAgICAgICBhY2NvdW50Lm5hbWUgPSBpZFRva2VuPy5jbGFpbXM/Lm5hbWUgfHwgXCJcIjtcclxuICAgICAgICAgICAgYWNjb3VudC5pZFRva2VuQ2xhaW1zID0gaWRUb2tlbj8uY2xhaW1zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYWNjb3VudC5lbnZpcm9ubWVudCA9IGVudjtcclxuXHJcbiAgICAgICAgYWNjb3VudC5jbG91ZEdyYXBoSG9zdE5hbWUgPSBjbG91ZEdyYXBoSG9zdE5hbWU7XHJcbiAgICAgICAgYWNjb3VudC5tc0dyYXBoSG9zdCA9IG1zR3JhcGhIb3N0O1xyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgICAqIGFkZCB1bmlxdWVOYW1lIHRvIGNsYWltc1xyXG4gICAgICAgICAqIGFjY291bnQubmFtZSA9IGlkVG9rZW4uY2xhaW1zLnVuaXF1ZU5hbWU7XHJcbiAgICAgICAgICovXHJcblxyXG4gICAgICAgIHJldHVybiBhY2NvdW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGUgSG9tZUFjY291bnRJZCBmcm9tIHNlcnZlciByZXNwb25zZVxyXG4gICAgICogQHBhcmFtIHNlcnZlckNsaWVudEluZm9cclxuICAgICAqIEBwYXJhbSBhdXRoVHlwZVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2VuZXJhdGVIb21lQWNjb3VudElkKHNlcnZlckNsaWVudEluZm86IHN0cmluZywgYXV0aFR5cGU6IEF1dGhvcml0eVR5cGUsIGxvZ2dlcjogTG9nZ2VyLCBjcnlwdG9PYmo6IElDcnlwdG8sIGlkVG9rZW4/OiBBdXRoVG9rZW4pOiBzdHJpbmcge1xyXG5cclxuICAgICAgICBjb25zdCBhY2NvdW50SWQgPSBpZFRva2VuPy5jbGFpbXM/LnN1YiA/IGlkVG9rZW4uY2xhaW1zLnN1YiA6IENvbnN0YW50cy5FTVBUWV9TVFJJTkc7XHJcblxyXG4gICAgICAgIC8vIHNpbmNlIEFERlMgZG9lcyBub3QgaGF2ZSB0aWQgYW5kIGRvZXMgbm90IHNldCBjbGllbnRfaW5mb1xyXG4gICAgICAgIGlmIChhdXRoVHlwZSA9PT0gQXV0aG9yaXR5VHlwZS5BZGZzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhY2NvdW50SWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBmb3IgY2FzZXMgd2hlcmUgdGhlcmUgaXMgY2xpZW50SW5mb1xyXG4gICAgICAgIGlmIChzZXJ2ZXJDbGllbnRJbmZvKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsaWVudEluZm8gPSBidWlsZENsaWVudEluZm8oc2VydmVyQ2xpZW50SW5mbywgY3J5cHRvT2JqKTtcclxuICAgICAgICAgICAgaWYgKCFTdHJpbmdVdGlscy5pc0VtcHR5KGNsaWVudEluZm8udWlkKSAmJiAhU3RyaW5nVXRpbHMuaXNFbXB0eShjbGllbnRJbmZvLnV0aWQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Y2xpZW50SW5mby51aWR9JHtTZXBhcmF0b3JzLkNMSUVOVF9JTkZPX1NFUEFSQVRPUn0ke2NsaWVudEluZm8udXRpZH1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBkZWZhdWx0IHRvIFwic3ViXCIgY2xhaW1cclxuICAgICAgICBsb2dnZXIudmVyYm9zZShcIk5vIGNsaWVudCBpbmZvIGluIHJlc3BvbnNlXCIpO1xyXG4gICAgICAgIHJldHVybiBhY2NvdW50SWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGF0ZXMgYW4gZW50aXR5OiBjaGVja3MgZm9yIGFsbCBleHBlY3RlZCBwYXJhbXNcclxuICAgICAqIEBwYXJhbSBlbnRpdHlcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzQWNjb3VudEVudGl0eShlbnRpdHk6IG9iamVjdCk6IGJvb2xlYW4ge1xyXG5cclxuICAgICAgICBpZiAoIWVudGl0eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICBlbnRpdHkuaGFzT3duUHJvcGVydHkoXCJob21lQWNjb3VudElkXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImVudmlyb25tZW50XCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcInJlYWxtXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImxvY2FsQWNjb3VudElkXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcInVzZXJuYW1lXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImF1dGhvcml0eVR5cGVcIilcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIDIgYWNjb3VudHMgYXJlIGVxdWFsXHJcbiAgICAgKiBVc2VkIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHN0YXRlIHVwZGF0ZXNcclxuICAgICAqIEBwYXJhbSBhcnJheUEgXHJcbiAgICAgKiBAcGFyYW0gYXJyYXlCIFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgYWNjb3VudEluZm9Jc0VxdWFsKGFjY291bnRBOiBBY2NvdW50SW5mbyB8IG51bGwsIGFjY291bnRCOiBBY2NvdW50SW5mbyB8IG51bGwpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIWFjY291bnRBIHx8ICFhY2NvdW50Qikge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAoYWNjb3VudEEuaG9tZUFjY291bnRJZCA9PT0gYWNjb3VudEIuaG9tZUFjY291bnRJZCkgJiYgXHJcbiAgICAgICAgICAgIChhY2NvdW50QS5sb2NhbEFjY291bnRJZCA9PT0gYWNjb3VudEIubG9jYWxBY2NvdW50SWQpICYmXHJcbiAgICAgICAgICAgIChhY2NvdW50QS51c2VybmFtZSA9PT0gYWNjb3VudEIudXNlcm5hbWUpICYmXHJcbiAgICAgICAgICAgIChhY2NvdW50QS50ZW5hbnRJZCA9PT0gYWNjb3VudEIudGVuYW50SWQpICYmXHJcbiAgICAgICAgICAgIChhY2NvdW50QS5lbnZpcm9ubWVudCA9PT0gYWNjb3VudEIuZW52aXJvbm1lbnQpO1xyXG4gICAgfVxyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgVG9rZW5DbGFpbXMgfSBmcm9tIFwiLi9Ub2tlbkNsYWltc1wiO1xyXG5pbXBvcnQgeyBEZWNvZGVkQXV0aFRva2VuIH0gZnJvbSBcIi4vRGVjb2RlZEF1dGhUb2tlblwiO1xyXG5pbXBvcnQgeyBDbGllbnRBdXRoRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvQ2xpZW50QXV0aEVycm9yXCI7XHJcbmltcG9ydCB7IFN0cmluZ1V0aWxzIH0gZnJvbSBcIi4uL3V0aWxzL1N0cmluZ1V0aWxzXCI7XHJcbmltcG9ydCB7IElDcnlwdG8gfSBmcm9tIFwiLi4vY3J5cHRvL0lDcnlwdG9cIjtcclxuXHJcbi8qKlxyXG4gKiBKV1QgVG9rZW4gcmVwcmVzZW50YXRpb24gY2xhc3MuIFBhcnNlcyB0b2tlbiBzdHJpbmcgYW5kIGdlbmVyYXRlcyBjbGFpbXMgb2JqZWN0LlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEF1dGhUb2tlbiB7XHJcblxyXG4gICAgLy8gUmF3IFRva2VuIHN0cmluZ1xyXG4gICAgcmF3VG9rZW46IHN0cmluZztcclxuICAgIC8vIENsYWltcyBpbnNpZGUgdG9rZW5cclxuICAgIGNsYWltczogVG9rZW5DbGFpbXM7XHJcbiAgICBjb25zdHJ1Y3RvcihyYXdUb2tlbjogc3RyaW5nLCBjcnlwdG86IElDcnlwdG8pIHtcclxuICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNFbXB0eShyYXdUb2tlbikpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZVRva2VuTnVsbE9yRW1wdHlFcnJvcihyYXdUb2tlbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJhd1Rva2VuID0gcmF3VG9rZW47XHJcbiAgICAgICAgdGhpcy5jbGFpbXMgPSBBdXRoVG9rZW4uZXh0cmFjdFRva2VuQ2xhaW1zKHJhd1Rva2VuLCBjcnlwdG8pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXh0cmFjdCB0b2tlbiBieSBkZWNvZGluZyB0aGUgcmF3VG9rZW5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZW5jb2RlZFRva2VuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBleHRyYWN0VG9rZW5DbGFpbXMoZW5jb2RlZFRva2VuOiBzdHJpbmcsIGNyeXB0bzogSUNyeXB0byk6IFRva2VuQ2xhaW1zIHtcclxuXHJcbiAgICAgICAgY29uc3QgZGVjb2RlZFRva2VuOiBEZWNvZGVkQXV0aFRva2VuID0gU3RyaW5nVXRpbHMuZGVjb2RlQXV0aFRva2VuKGVuY29kZWRUb2tlbik7XHJcblxyXG4gICAgICAgIC8vIHRva2VuIHdpbGwgYmUgZGVjb2RlZCB0byBnZXQgdGhlIHVzZXJuYW1lXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgYmFzZTY0VG9rZW5QYXlsb2FkID0gZGVjb2RlZFRva2VuLkpXU1BheWxvYWQ7XHJcblxyXG4gICAgICAgICAgICAvLyBiYXNlNjREZWNvZGUoKSBzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgdGhlcmUgaXMgYW4gaXNzdWVcclxuICAgICAgICAgICAgY29uc3QgYmFzZTY0RGVjb2RlZCA9IGNyeXB0by5iYXNlNjREZWNvZGUoYmFzZTY0VG9rZW5QYXlsb2FkKTtcclxuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYmFzZTY0RGVjb2RlZCkgYXMgVG9rZW5DbGFpbXM7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVUb2tlblBhcnNpbmdFcnJvcihlcnIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEFjY291bnRDYWNoZSwgQWNjb3VudEZpbHRlciwgQ3JlZGVudGlhbEZpbHRlciwgQ3JlZGVudGlhbENhY2hlLCBWYWxpZENyZWRlbnRpYWxUeXBlLCBBcHBNZXRhZGF0YUZpbHRlciwgQXBwTWV0YWRhdGFDYWNoZSB9IGZyb20gXCIuL3V0aWxzL0NhY2hlVHlwZXNcIjtcclxuaW1wb3J0IHsgQ2FjaGVSZWNvcmQgfSBmcm9tIFwiLi9lbnRpdGllcy9DYWNoZVJlY29yZFwiO1xyXG5pbXBvcnQgeyBDYWNoZVNjaGVtYVR5cGUsIENyZWRlbnRpYWxUeXBlLCBDb25zdGFudHMsIEFQUF9NRVRBREFUQSwgVEhFX0ZBTUlMWV9JRCwgQVVUSE9SSVRZX01FVEFEQVRBX0NPTlNUQU5UUyB9IGZyb20gXCIuLi91dGlscy9Db25zdGFudHNcIjtcclxuaW1wb3J0IHsgQ3JlZGVudGlhbEVudGl0eSB9IGZyb20gXCIuL2VudGl0aWVzL0NyZWRlbnRpYWxFbnRpdHlcIjtcclxuaW1wb3J0IHsgU2NvcGVTZXQgfSBmcm9tIFwiLi4vcmVxdWVzdC9TY29wZVNldFwiO1xyXG5pbXBvcnQgeyBBY2NvdW50RW50aXR5IH0gZnJvbSBcIi4vZW50aXRpZXMvQWNjb3VudEVudGl0eVwiO1xyXG5pbXBvcnQgeyBBY2Nlc3NUb2tlbkVudGl0eSB9IGZyb20gXCIuL2VudGl0aWVzL0FjY2Vzc1Rva2VuRW50aXR5XCI7XHJcbmltcG9ydCB7IElkVG9rZW5FbnRpdHkgfSBmcm9tIFwiLi9lbnRpdGllcy9JZFRva2VuRW50aXR5XCI7XHJcbmltcG9ydCB7IFJlZnJlc2hUb2tlbkVudGl0eSB9IGZyb20gXCIuL2VudGl0aWVzL1JlZnJlc2hUb2tlbkVudGl0eVwiO1xyXG5pbXBvcnQgeyBBdXRoRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvQXV0aEVycm9yXCI7XHJcbmltcG9ydCB7IElDYWNoZU1hbmFnZXIgfSBmcm9tIFwiLi9pbnRlcmZhY2UvSUNhY2hlTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBDbGllbnRBdXRoRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvQ2xpZW50QXV0aEVycm9yXCI7XHJcbmltcG9ydCB7IEFjY291bnRJbmZvIH0gZnJvbSBcIi4uL2FjY291bnQvQWNjb3VudEluZm9cIjtcclxuaW1wb3J0IHsgQXBwTWV0YWRhdGFFbnRpdHkgfSBmcm9tIFwiLi9lbnRpdGllcy9BcHBNZXRhZGF0YUVudGl0eVwiO1xyXG5pbXBvcnQgeyBTZXJ2ZXJUZWxlbWV0cnlFbnRpdHkgfSBmcm9tIFwiLi9lbnRpdGllcy9TZXJ2ZXJUZWxlbWV0cnlFbnRpdHlcIjtcclxuaW1wb3J0IHsgVGhyb3R0bGluZ0VudGl0eSB9IGZyb20gXCIuL2VudGl0aWVzL1Rocm90dGxpbmdFbnRpdHlcIjtcclxuaW1wb3J0IHsgQXV0aFRva2VuIH0gZnJvbSBcIi4uL2FjY291bnQvQXV0aFRva2VuXCI7XHJcbmltcG9ydCB7IElDcnlwdG8gfSBmcm9tIFwiLi4vY3J5cHRvL0lDcnlwdG9cIjtcclxuaW1wb3J0IHsgQXV0aG9yaXR5TWV0YWRhdGFFbnRpdHkgfSBmcm9tIFwiLi9lbnRpdGllcy9BdXRob3JpdHlNZXRhZGF0YUVudGl0eVwiO1xyXG5cclxuLyoqXHJcbiAqIEludGVyZmFjZSBjbGFzcyB3aGljaCBpbXBsZW1lbnQgY2FjaGUgc3RvcmFnZSBmdW5jdGlvbnMgdXNlZCBieSBNU0FMIHRvIHBlcmZvcm0gdmFsaWRpdHkgY2hlY2tzLCBhbmQgc3RvcmUgdG9rZW5zLlxyXG4gKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENhY2hlTWFuYWdlciBpbXBsZW1lbnRzIElDYWNoZU1hbmFnZXIge1xyXG4gICAgcHJvdGVjdGVkIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgICBwcm90ZWN0ZWQgY3J5cHRvSW1wbDogSUNyeXB0bztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihjbGllbnRJZDogc3RyaW5nLCBjcnlwdG9JbXBsOiBJQ3J5cHRvKSB7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZCA9IGNsaWVudElkO1xyXG4gICAgICAgIHRoaXMuY3J5cHRvSW1wbCA9IGNyeXB0b0ltcGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmZXRjaCB0aGUgYWNjb3VudCBlbnRpdHkgZnJvbSB0aGUgcGxhdGZvcm0gY2FjaGVcclxuICAgICAqICBAcGFyYW0gYWNjb3VudEtleVxyXG4gICAgICovXHJcbiAgICBhYnN0cmFjdCBnZXRBY2NvdW50KGFjY291bnRLZXk6IHN0cmluZyk6IEFjY291bnRFbnRpdHkgfCBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2V0IGFjY291bnQgZW50aXR5IGluIHRoZSBwbGF0Zm9ybSBjYWNoZVxyXG4gICAgICogQHBhcmFtIGFjY291bnRcclxuICAgICAqL1xyXG4gICAgYWJzdHJhY3Qgc2V0QWNjb3VudChhY2NvdW50OiBBY2NvdW50RW50aXR5KTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGZldGNoIHRoZSBpZFRva2VuIGVudGl0eSBmcm9tIHRoZSBwbGF0Zm9ybSBjYWNoZVxyXG4gICAgICogQHBhcmFtIGlkVG9rZW5LZXlcclxuICAgICAqL1xyXG4gICAgYWJzdHJhY3QgZ2V0SWRUb2tlbkNyZWRlbnRpYWwoaWRUb2tlbktleTogc3RyaW5nKTogSWRUb2tlbkVudGl0eSB8IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXQgaWRUb2tlbiBlbnRpdHkgdG8gdGhlIHBsYXRmb3JtIGNhY2hlXHJcbiAgICAgKiBAcGFyYW0gaWRUb2tlblxyXG4gICAgICovXHJcbiAgICBhYnN0cmFjdCBzZXRJZFRva2VuQ3JlZGVudGlhbChpZFRva2VuOiBJZFRva2VuRW50aXR5KTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGZldGNoIHRoZSBpZFRva2VuIGVudGl0eSBmcm9tIHRoZSBwbGF0Zm9ybSBjYWNoZVxyXG4gICAgICogQHBhcmFtIGFjY2Vzc1Rva2VuS2V5XHJcbiAgICAgKi9cclxuICAgIGFic3RyYWN0IGdldEFjY2Vzc1Rva2VuQ3JlZGVudGlhbChhY2Nlc3NUb2tlbktleTogc3RyaW5nKTogQWNjZXNzVG9rZW5FbnRpdHkgfCBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2V0IGlkVG9rZW4gZW50aXR5IHRvIHRoZSBwbGF0Zm9ybSBjYWNoZVxyXG4gICAgICogQHBhcmFtIGFjY2Vzc1Rva2VuXHJcbiAgICAgKi9cclxuICAgIGFic3RyYWN0IHNldEFjY2Vzc1Rva2VuQ3JlZGVudGlhbChhY2Nlc3NUb2tlbjogQWNjZXNzVG9rZW5FbnRpdHkpOiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmV0Y2ggdGhlIGlkVG9rZW4gZW50aXR5IGZyb20gdGhlIHBsYXRmb3JtIGNhY2hlXHJcbiAgICAgKiBAcGFyYW0gcmVmcmVzaFRva2VuS2V5XHJcbiAgICAgKi9cclxuICAgIGFic3RyYWN0IGdldFJlZnJlc2hUb2tlbkNyZWRlbnRpYWwocmVmcmVzaFRva2VuS2V5OiBzdHJpbmcpOiBSZWZyZXNoVG9rZW5FbnRpdHkgfCBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2V0IGlkVG9rZW4gZW50aXR5IHRvIHRoZSBwbGF0Zm9ybSBjYWNoZVxyXG4gICAgICogQHBhcmFtIHJlZnJlc2hUb2tlblxyXG4gICAgICovXHJcbiAgICBhYnN0cmFjdCBzZXRSZWZyZXNoVG9rZW5DcmVkZW50aWFsKHJlZnJlc2hUb2tlbjogUmVmcmVzaFRva2VuRW50aXR5KTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGZldGNoIGFwcE1ldGFkYXRhIGVudGl0eSBmcm9tIHRoZSBwbGF0Zm9ybSBjYWNoZVxyXG4gICAgICogQHBhcmFtIGFwcE1ldGFkYXRhS2V5XHJcbiAgICAgKi9cclxuICAgIGFic3RyYWN0IGdldEFwcE1ldGFkYXRhKGFwcE1ldGFkYXRhS2V5OiBzdHJpbmcpOiBBcHBNZXRhZGF0YUVudGl0eSB8IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXQgYXBwTWV0YWRhdGEgZW50aXR5IHRvIHRoZSBwbGF0Zm9ybSBjYWNoZVxyXG4gICAgICogQHBhcmFtIGFwcE1ldGFkYXRhXHJcbiAgICAgKi9cclxuICAgIGFic3RyYWN0IHNldEFwcE1ldGFkYXRhKGFwcE1ldGFkYXRhOiBBcHBNZXRhZGF0YUVudGl0eSk6IHZvaWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmZXRjaCBzZXJ2ZXIgdGVsZW1ldHJ5IGVudGl0eSBmcm9tIHRoZSBwbGF0Zm9ybSBjYWNoZVxyXG4gICAgICogQHBhcmFtIHNlcnZlclRlbGVtZXRyeUtleVxyXG4gICAgICovXHJcbiAgICBhYnN0cmFjdCBnZXRTZXJ2ZXJUZWxlbWV0cnkoc2VydmVyVGVsZW1ldHJ5S2V5OiBzdHJpbmcpOiBTZXJ2ZXJUZWxlbWV0cnlFbnRpdHkgfCBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2V0IHNlcnZlciB0ZWxlbWV0cnkgZW50aXR5IHRvIHRoZSBwbGF0Zm9ybSBjYWNoZVxyXG4gICAgICogQHBhcmFtIHNlcnZlclRlbGVtZXRyeUtleVxyXG4gICAgICogQHBhcmFtIHNlcnZlclRlbGVtZXRyeVxyXG4gICAgICovXHJcbiAgICBhYnN0cmFjdCBzZXRTZXJ2ZXJUZWxlbWV0cnkoc2VydmVyVGVsZW1ldHJ5S2V5OiBzdHJpbmcsIHNlcnZlclRlbGVtZXRyeTogU2VydmVyVGVsZW1ldHJ5RW50aXR5KTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGZldGNoIGNsb3VkIGRpc2NvdmVyeSBtZXRhZGF0YSBlbnRpdHkgZnJvbSB0aGUgcGxhdGZvcm0gY2FjaGVcclxuICAgICAqIEBwYXJhbSBrZXlcclxuICAgICAqL1xyXG4gICAgYWJzdHJhY3QgZ2V0QXV0aG9yaXR5TWV0YWRhdGEoa2V5OiBzdHJpbmcpOiBBdXRob3JpdHlNZXRhZGF0YUVudGl0eSB8IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBcclxuICAgICAqL1xyXG4gICAgYWJzdHJhY3QgZ2V0QXV0aG9yaXR5TWV0YWRhdGFLZXlzKCk6IEFycmF5PHN0cmluZz47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXQgY2xvdWQgZGlzY292ZXJ5IG1ldGFkYXRhIGVudGl0eSB0byB0aGUgcGxhdGZvcm0gY2FjaGVcclxuICAgICAqIEBwYXJhbSBrZXlcclxuICAgICAqIEBwYXJhbSB2YWx1ZVxyXG4gICAgICovXHJcbiAgICBhYnN0cmFjdCBzZXRBdXRob3JpdHlNZXRhZGF0YShrZXk6IHN0cmluZywgdmFsdWU6IEF1dGhvcml0eU1ldGFkYXRhRW50aXR5KTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGZldGNoIHRocm90dGxpbmcgZW50aXR5IGZyb20gdGhlIHBsYXRmb3JtIGNhY2hlXHJcbiAgICAgKiBAcGFyYW0gdGhyb3R0bGluZ0NhY2hlS2V5XHJcbiAgICAgKi9cclxuICAgIGFic3RyYWN0IGdldFRocm90dGxpbmdDYWNoZSh0aHJvdHRsaW5nQ2FjaGVLZXk6IHN0cmluZyk6IFRocm90dGxpbmdFbnRpdHkgfCBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2V0IHRocm90dGxpbmcgZW50aXR5IHRvIHRoZSBwbGF0Zm9ybSBjYWNoZVxyXG4gICAgICogQHBhcmFtIHRocm90dGxpbmdDYWNoZUtleVxyXG4gICAgICogQHBhcmFtIHRocm90dGxpbmdDYWNoZVxyXG4gICAgICovXHJcbiAgICBhYnN0cmFjdCBzZXRUaHJvdHRsaW5nQ2FjaGUodGhyb3R0bGluZ0NhY2hlS2V5OiBzdHJpbmcsIHRocm90dGxpbmdDYWNoZTogVGhyb3R0bGluZ0VudGl0eSk6IHZvaWQ7O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gdG8gcmVtb3ZlIGFuIGl0ZW0gZnJvbSBjYWNoZSBnaXZlbiBpdHMga2V5LlxyXG4gICAgICogQHBhcmFtIGtleVxyXG4gICAgICovXHJcbiAgICBhYnN0cmFjdCByZW1vdmVJdGVtKGtleTogc3RyaW5nLCB0eXBlPzogc3RyaW5nKTogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYm9vbGVhbiB3aGV0aGVyIGNhY2hlIGNvbnRhaW5zIGEgc3BlY2lmaWMga2V5LlxyXG4gICAgICogQHBhcmFtIGtleVxyXG4gICAgICovXHJcbiAgICBhYnN0cmFjdCBjb250YWluc0tleShrZXk6IHN0cmluZywgdHlwZT86IHN0cmluZyk6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGdW5jdGlvbiB3aGljaCByZXRyaWV2ZXMgYWxsIGN1cnJlbnQga2V5cyBmcm9tIHRoZSBjYWNoZS5cclxuICAgICAqL1xyXG4gICAgYWJzdHJhY3QgZ2V0S2V5cygpOiBzdHJpbmdbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bmN0aW9uIHdoaWNoIGNsZWFycyBjYWNoZS5cclxuICAgICAqL1xyXG4gICAgYWJzdHJhY3QgY2xlYXIoKTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgYWxsIGFjY291bnRzIGluIGNhY2hlXHJcbiAgICAgKi9cclxuICAgIGdldEFsbEFjY291bnRzKCk6IEFjY291bnRJbmZvW10ge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRBY2NvdW50czogQWNjb3VudENhY2hlID0gdGhpcy5nZXRBY2NvdW50c0ZpbHRlcmVkQnkoKTtcclxuICAgICAgICBjb25zdCBhY2NvdW50VmFsdWVzOiBBY2NvdW50RW50aXR5W10gPSBPYmplY3Qua2V5cyhjdXJyZW50QWNjb3VudHMpLm1hcChhY2NvdW50S2V5ID0+IGN1cnJlbnRBY2NvdW50c1thY2NvdW50S2V5XSk7XHJcbiAgICAgICAgY29uc3QgbnVtQWNjb3VudHMgPSBhY2NvdW50VmFsdWVzLmxlbmd0aDtcclxuICAgICAgICBpZiAobnVtQWNjb3VudHMgPCAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBhbGxBY2NvdW50cyA9IGFjY291bnRWYWx1ZXMubWFwPEFjY291bnRJbmZvPigodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFjY291bnRFbnRpdHkgPSBDYWNoZU1hbmFnZXIudG9PYmplY3Q8QWNjb3VudEVudGl0eT4obmV3IEFjY291bnRFbnRpdHkoKSwgdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWNjb3VudEluZm8gPSBhY2NvdW50RW50aXR5LmdldEFjY291bnRJbmZvKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpZFRva2VuID0gdGhpcy5yZWFkSWRUb2tlbkZyb21DYWNoZSh0aGlzLmNsaWVudElkLCBhY2NvdW50SW5mbyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaWRUb2tlbiAmJiAhYWNjb3VudEluZm8uaWRUb2tlbkNsYWltcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGFjY291bnRJbmZvLmlkVG9rZW5DbGFpbXMgPSBuZXcgQXV0aFRva2VuKGlkVG9rZW4uc2VjcmV0LCB0aGlzLmNyeXB0b0ltcGwpLmNsYWltcztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjb3VudEluZm87XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBhbGxBY2NvdW50cztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzYXZlcyBhIGNhY2hlIHJlY29yZFxyXG4gICAgICogQHBhcmFtIGNhY2hlUmVjb3JkXHJcbiAgICAgKi9cclxuICAgIHNhdmVDYWNoZVJlY29yZChjYWNoZVJlY29yZDogQ2FjaGVSZWNvcmQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWNhY2hlUmVjb3JkKSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVOdWxsT3JVbmRlZmluZWRDYWNoZVJlY29yZCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEhY2FjaGVSZWNvcmQuYWNjb3VudCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldEFjY291bnQoY2FjaGVSZWNvcmQuYWNjb3VudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoISFjYWNoZVJlY29yZC5pZFRva2VuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0SWRUb2tlbkNyZWRlbnRpYWwoY2FjaGVSZWNvcmQuaWRUb2tlbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoISFjYWNoZVJlY29yZC5hY2Nlc3NUb2tlbikge1xyXG4gICAgICAgICAgICB0aGlzLnNhdmVBY2Nlc3NUb2tlbihjYWNoZVJlY29yZC5hY2Nlc3NUb2tlbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoISFjYWNoZVJlY29yZC5yZWZyZXNoVG9rZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRSZWZyZXNoVG9rZW5DcmVkZW50aWFsKGNhY2hlUmVjb3JkLnJlZnJlc2hUb2tlbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoISFjYWNoZVJlY29yZC5hcHBNZXRhZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldEFwcE1ldGFkYXRhKGNhY2hlUmVjb3JkLmFwcE1ldGFkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzYXZlcyBhY2Nlc3MgdG9rZW4gY3JlZGVudGlhbFxyXG4gICAgICogQHBhcmFtIGNyZWRlbnRpYWxcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzYXZlQWNjZXNzVG9rZW4oY3JlZGVudGlhbDogQWNjZXNzVG9rZW5FbnRpdHkpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50VG9rZW5DYWNoZSA9IHRoaXMuZ2V0Q3JlZGVudGlhbHNGaWx0ZXJlZEJ5KHtcclxuICAgICAgICAgICAgY2xpZW50SWQ6IGNyZWRlbnRpYWwuY2xpZW50SWQsXHJcbiAgICAgICAgICAgIGNyZWRlbnRpYWxUeXBlOiBDcmVkZW50aWFsVHlwZS5BQ0NFU1NfVE9LRU4sXHJcbiAgICAgICAgICAgIGVudmlyb25tZW50OiBjcmVkZW50aWFsLmVudmlyb25tZW50LFxyXG4gICAgICAgICAgICBob21lQWNjb3VudElkOiBjcmVkZW50aWFsLmhvbWVBY2NvdW50SWQsXHJcbiAgICAgICAgICAgIHJlYWxtOiBjcmVkZW50aWFsLnJlYWxtLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRTY29wZXMgPSBTY29wZVNldC5mcm9tU3RyaW5nKGNyZWRlbnRpYWwudGFyZ2V0KTtcclxuICAgICAgICBjb25zdCBjdXJyZW50QWNjZXNzVG9rZW5zOiBBY2Nlc3NUb2tlbkVudGl0eVtdID0gT2JqZWN0LmtleXMoY3VycmVudFRva2VuQ2FjaGUuYWNjZXNzVG9rZW5zKS5tYXAoa2V5ID0+IGN1cnJlbnRUb2tlbkNhY2hlLmFjY2Vzc1Rva2Vuc1trZXldKTtcclxuICAgICAgICBpZiAoY3VycmVudEFjY2Vzc1Rva2Vucykge1xyXG4gICAgICAgICAgICBjdXJyZW50QWNjZXNzVG9rZW5zLmZvckVhY2goKHRva2VuRW50aXR5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b2tlblNjb3BlU2V0ID0gU2NvcGVTZXQuZnJvbVN0cmluZyh0b2tlbkVudGl0eS50YXJnZXQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRva2VuU2NvcGVTZXQuaW50ZXJzZWN0aW5nU2NvcGVTZXRzKGN1cnJlbnRTY29wZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVDcmVkZW50aWFsKHRva2VuRW50aXR5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0QWNjZXNzVG9rZW5DcmVkZW50aWFsKGNyZWRlbnRpYWwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0cmlldmUgYWNjb3VudHMgbWF0Y2hpbmcgYWxsIHByb3ZpZGVkIGZpbHRlcnM7IGlmIG5vIGZpbHRlciBpcyBzZXQsIGdldCBhbGwgYWNjb3VudHNcclxuICAgICAqIG5vdCBjaGVja2luZyBmb3IgY2FzaW5nIGFzIGtleXMgYXJlIGFsbCBnZW5lcmF0ZWQgaW4gbG93ZXIgY2FzZSwgcmVtZW1iZXIgdG8gY29udmVydCB0byBsb3dlciBjYXNlIGlmIG9iamVjdCBwcm9wZXJ0aWVzIGFyZSBjb21wYXJlZFxyXG4gICAgICogQHBhcmFtIGhvbWVBY2NvdW50SWRcclxuICAgICAqIEBwYXJhbSBlbnZpcm9ubWVudFxyXG4gICAgICogQHBhcmFtIHJlYWxtXHJcbiAgICAgKi9cclxuICAgIGdldEFjY291bnRzRmlsdGVyZWRCeShhY2NvdW50RmlsdGVyPzogQWNjb3VudEZpbHRlcik6IEFjY291bnRDYWNoZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWNjb3VudHNGaWx0ZXJlZEJ5SW50ZXJuYWwoXHJcbiAgICAgICAgICAgIGFjY291bnRGaWx0ZXIgPyBhY2NvdW50RmlsdGVyLmhvbWVBY2NvdW50SWQgOiBcIlwiLFxyXG4gICAgICAgICAgICBhY2NvdW50RmlsdGVyID8gYWNjb3VudEZpbHRlci5lbnZpcm9ubWVudCA6IFwiXCIsXHJcbiAgICAgICAgICAgIGFjY291bnRGaWx0ZXIgPyBhY2NvdW50RmlsdGVyLnJlYWxtIDogXCJcIlxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiByZXRyaWV2ZSBhY2NvdW50cyBtYXRjaGluZyBhbGwgcHJvdmlkZWQgZmlsdGVyczsgaWYgbm8gZmlsdGVyIGlzIHNldCwgZ2V0IGFsbCBhY2NvdW50c1xyXG4gICAgICogbm90IGNoZWNraW5nIGZvciBjYXNpbmcgYXMga2V5cyBhcmUgYWxsIGdlbmVyYXRlZCBpbiBsb3dlciBjYXNlLCByZW1lbWJlciB0byBjb252ZXJ0IHRvIGxvd2VyIGNhc2UgaWYgb2JqZWN0IHByb3BlcnRpZXMgYXJlIGNvbXBhcmVkXHJcbiAgICAgKiBAcGFyYW0gaG9tZUFjY291bnRJZFxyXG4gICAgICogQHBhcmFtIGVudmlyb25tZW50XHJcbiAgICAgKiBAcGFyYW0gcmVhbG1cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRBY2NvdW50c0ZpbHRlcmVkQnlJbnRlcm5hbChcclxuICAgICAgICBob21lQWNjb3VudElkPzogc3RyaW5nLFxyXG4gICAgICAgIGVudmlyb25tZW50Pzogc3RyaW5nLFxyXG4gICAgICAgIHJlYWxtPzogc3RyaW5nXHJcbiAgICApOiBBY2NvdW50Q2FjaGUge1xyXG4gICAgICAgIGNvbnN0IGFsbENhY2hlS2V5cyA9IHRoaXMuZ2V0S2V5cygpO1xyXG4gICAgICAgIGNvbnN0IG1hdGNoaW5nQWNjb3VudHM6IEFjY291bnRDYWNoZSA9IHt9O1xyXG5cclxuICAgICAgICBhbGxDYWNoZUtleXMuZm9yRWFjaCgoY2FjaGVLZXkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZW50aXR5OiBBY2NvdW50RW50aXR5IHwgbnVsbCA9IHRoaXMuZ2V0QWNjb3VudChjYWNoZUtleSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIWVudGl0eSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoISFob21lQWNjb3VudElkICYmICF0aGlzLm1hdGNoSG9tZUFjY291bnRJZChlbnRpdHksIGhvbWVBY2NvdW50SWQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghIWVudmlyb25tZW50ICYmICF0aGlzLm1hdGNoRW52aXJvbm1lbnQoZW50aXR5LCBlbnZpcm9ubWVudCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCEhcmVhbG0gJiYgIXRoaXMubWF0Y2hSZWFsbShlbnRpdHksIHJlYWxtKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBtYXRjaGluZ0FjY291bnRzW2NhY2hlS2V5XSA9IGVudGl0eTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG1hdGNoaW5nQWNjb3VudHM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiByZXRyaWV2ZSBjcmVkZW50YWlscyBtYXRjaGluZyBhbGwgcHJvdmlkZWQgZmlsdGVyczsgaWYgbm8gZmlsdGVyIGlzIHNldCwgZ2V0IGFsbCBjcmVkZW50aWFsc1xyXG4gICAgICogQHBhcmFtIGhvbWVBY2NvdW50SWRcclxuICAgICAqIEBwYXJhbSBlbnZpcm9ubWVudFxyXG4gICAgICogQHBhcmFtIGNyZWRlbnRpYWxUeXBlXHJcbiAgICAgKiBAcGFyYW0gY2xpZW50SWRcclxuICAgICAqIEBwYXJhbSByZWFsbVxyXG4gICAgICogQHBhcmFtIHRhcmdldFxyXG4gICAgICovXHJcbiAgICBnZXRDcmVkZW50aWFsc0ZpbHRlcmVkQnkoZmlsdGVyOiBDcmVkZW50aWFsRmlsdGVyKTogQ3JlZGVudGlhbENhY2hlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDcmVkZW50aWFsc0ZpbHRlcmVkQnlJbnRlcm5hbChcclxuICAgICAgICAgICAgZmlsdGVyLmhvbWVBY2NvdW50SWQsXHJcbiAgICAgICAgICAgIGZpbHRlci5lbnZpcm9ubWVudCxcclxuICAgICAgICAgICAgZmlsdGVyLmNyZWRlbnRpYWxUeXBlLFxyXG4gICAgICAgICAgICBmaWx0ZXIuY2xpZW50SWQsXHJcbiAgICAgICAgICAgIGZpbHRlci5mYW1pbHlJZCxcclxuICAgICAgICAgICAgZmlsdGVyLnJlYWxtLFxyXG4gICAgICAgICAgICBmaWx0ZXIudGFyZ2V0LFxyXG4gICAgICAgICAgICBmaWx0ZXIub2JvQXNzZXJ0aW9uXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFN1cHBvcnQgZnVuY3Rpb24gdG8gaGVscCBtYXRjaCBjcmVkZW50aWFsc1xyXG4gICAgICogQHBhcmFtIGhvbWVBY2NvdW50SWRcclxuICAgICAqIEBwYXJhbSBlbnZpcm9ubWVudFxyXG4gICAgICogQHBhcmFtIGNyZWRlbnRpYWxUeXBlXHJcbiAgICAgKiBAcGFyYW0gY2xpZW50SWRcclxuICAgICAqIEBwYXJhbSByZWFsbVxyXG4gICAgICogQHBhcmFtIHRhcmdldFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldENyZWRlbnRpYWxzRmlsdGVyZWRCeUludGVybmFsKFxyXG4gICAgICAgIGhvbWVBY2NvdW50SWQ/OiBzdHJpbmcsXHJcbiAgICAgICAgZW52aXJvbm1lbnQ/OiBzdHJpbmcsXHJcbiAgICAgICAgY3JlZGVudGlhbFR5cGU/OiBzdHJpbmcsXHJcbiAgICAgICAgY2xpZW50SWQ/OiBzdHJpbmcsXHJcbiAgICAgICAgZmFtaWx5SWQ/OiBzdHJpbmcsXHJcbiAgICAgICAgcmVhbG0/OiBzdHJpbmcsXHJcbiAgICAgICAgdGFyZ2V0Pzogc3RyaW5nLFxyXG4gICAgICAgIG9ib0Fzc2VydGlvbj86IHN0cmluZ1xyXG4gICAgKTogQ3JlZGVudGlhbENhY2hlIHtcclxuICAgICAgICBjb25zdCBhbGxDYWNoZUtleXMgPSB0aGlzLmdldEtleXMoKTtcclxuICAgICAgICBjb25zdCBtYXRjaGluZ0NyZWRlbnRpYWxzOiBDcmVkZW50aWFsQ2FjaGUgPSB7XHJcbiAgICAgICAgICAgIGlkVG9rZW5zOiB7fSxcclxuICAgICAgICAgICAgYWNjZXNzVG9rZW5zOiB7fSxcclxuICAgICAgICAgICAgcmVmcmVzaFRva2Vuczoge30sXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgYWxsQ2FjaGVLZXlzLmZvckVhY2goKGNhY2hlS2V5KSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGRvbid0IHBhcnNlIGFueSBub24tY3JlZGVudGlhbCB0eXBlIGNhY2hlIGVudGl0aWVzXHJcbiAgICAgICAgICAgIGNvbnN0IGNyZWRUeXBlID0gQ3JlZGVudGlhbEVudGl0eS5nZXRDcmVkZW50aWFsVHlwZShjYWNoZUtleSk7XHJcbiAgICAgICAgICAgIGlmIChjcmVkVHlwZSA9PT0gQ29uc3RhbnRzLk5PVF9ERUZJTkVEKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEF0dGVtcHQgcmV0cmlldmFsXHJcbiAgICAgICAgICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZ2V0U3BlY2lmaWNDcmVkZW50aWFsKGNhY2hlS2V5LCBjcmVkVHlwZSk7XHJcbiAgICAgICAgICAgIGlmICghZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghIW9ib0Fzc2VydGlvbiAmJiAhdGhpcy5tYXRjaE9ib0Fzc2VydGlvbihlbnRpdHksIG9ib0Fzc2VydGlvbikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCEhaG9tZUFjY291bnRJZCAmJiAhdGhpcy5tYXRjaEhvbWVBY2NvdW50SWQoZW50aXR5LCBob21lQWNjb3VudElkKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoISFlbnZpcm9ubWVudCAmJiAhdGhpcy5tYXRjaEVudmlyb25tZW50KGVudGl0eSwgZW52aXJvbm1lbnQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghIXJlYWxtICYmICF0aGlzLm1hdGNoUmVhbG0oZW50aXR5LCByZWFsbSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCEhY3JlZGVudGlhbFR5cGUgJiYgIXRoaXMubWF0Y2hDcmVkZW50aWFsVHlwZShlbnRpdHksIGNyZWRlbnRpYWxUeXBlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoISFjbGllbnRJZCAmJiAhdGhpcy5tYXRjaENsaWVudElkKGVudGl0eSwgY2xpZW50SWQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghIWZhbWlseUlkICYmICF0aGlzLm1hdGNoRmFtaWx5SWQoZW50aXR5LCBmYW1pbHlJZCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICogaWRUb2tlbnMgZG8gbm90IGhhdmUgXCJ0YXJnZXRcIiwgdGFyZ2V0IHNwZWNpZmljIHJlZnJlc2hUb2tlbnMgZG8gZXhpc3QgZm9yIHNvbWUgdHlwZXMgb2YgYXV0aGVudGljYXRpb25cclxuICAgICAgICAgICAgICogUmVzb3VyY2Ugc3BlY2lmaWMgcmVmcmVzaCB0b2tlbnMgY2FzZSB3aWxsIGJlIGFkZGVkIHdoZW4gdGhlIHN1cHBvcnQgaXMgZGVlbWVkIG5lY2Vzc2FyeVxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaWYgKCEhdGFyZ2V0ICYmICF0aGlzLm1hdGNoVGFyZ2V0KGVudGl0eSwgdGFyZ2V0KSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzd2l0Y2ggKGNyZWRUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIENyZWRlbnRpYWxUeXBlLklEX1RPS0VOOlxyXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nQ3JlZGVudGlhbHMuaWRUb2tlbnNbY2FjaGVLZXldID0gZW50aXR5IGFzIElkVG9rZW5FbnRpdHk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIENyZWRlbnRpYWxUeXBlLkFDQ0VTU19UT0tFTjpcclxuICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ0NyZWRlbnRpYWxzLmFjY2Vzc1Rva2Vuc1tjYWNoZUtleV0gPSBlbnRpdHkgYXMgQWNjZXNzVG9rZW5FbnRpdHk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIENyZWRlbnRpYWxUeXBlLlJFRlJFU0hfVE9LRU46XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdDcmVkZW50aWFscy5yZWZyZXNoVG9rZW5zW2NhY2hlS2V5XSA9IGVudGl0eSBhcyBSZWZyZXNoVG9rZW5FbnRpdHk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG1hdGNoaW5nQ3JlZGVudGlhbHM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiByZXRyaWV2ZSBhcHBNZXRhZGF0YSBtYXRjaGluZyBhbGwgcHJvdmlkZWQgZmlsdGVyczsgaWYgbm8gZmlsdGVyIGlzIHNldCwgZ2V0IGFsbCBhcHBNZXRhZGF0YVxyXG4gICAgICogQHBhcmFtIGZpbHRlclxyXG4gICAgICovXHJcbiAgICBnZXRBcHBNZXRhZGF0YUZpbHRlcmVkQnkoZmlsdGVyOiBBcHBNZXRhZGF0YUZpbHRlcik6IEFwcE1ldGFkYXRhQ2FjaGUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEFwcE1ldGFkYXRhRmlsdGVyZWRCeUludGVybmFsKFxyXG4gICAgICAgICAgICBmaWx0ZXIuZW52aXJvbm1lbnQsXHJcbiAgICAgICAgICAgIGZpbHRlci5jbGllbnRJZCxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3VwcG9ydCBmdW5jdGlvbiB0byBoZWxwIG1hdGNoIGFwcE1ldGFkYXRhXHJcbiAgICAgKiBAcGFyYW0gZW52aXJvbm1lbnRcclxuICAgICAqIEBwYXJhbSBjbGllbnRJZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldEFwcE1ldGFkYXRhRmlsdGVyZWRCeUludGVybmFsKFxyXG4gICAgICAgIGVudmlyb25tZW50Pzogc3RyaW5nLFxyXG4gICAgICAgIGNsaWVudElkPzogc3RyaW5nXHJcbiAgICApOiBBcHBNZXRhZGF0YUNhY2hlIHtcclxuXHJcbiAgICAgICAgY29uc3QgYWxsQ2FjaGVLZXlzID0gdGhpcy5nZXRLZXlzKCk7XHJcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdBcHBNZXRhZGF0YTogQXBwTWV0YWRhdGFDYWNoZSA9IHt9O1xyXG5cclxuICAgICAgICBhbGxDYWNoZUtleXMuZm9yRWFjaCgoY2FjaGVLZXkpID0+IHtcclxuICAgICAgICAgICAgLy8gZG9uJ3QgcGFyc2UgYW55IG5vbi1hcHBNZXRhZGF0YSB0eXBlIGNhY2hlIGVudGl0aWVzXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0FwcE1ldGFkYXRhKGNhY2hlS2V5KSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBBdHRlbXB0IHJldHJpZXZhbFxyXG4gICAgICAgICAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmdldEFwcE1ldGFkYXRhKGNhY2hlS2V5KTtcclxuXHJcbiAgICAgICAgICAgIGlmICghZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghIWVudmlyb25tZW50ICYmICF0aGlzLm1hdGNoRW52aXJvbm1lbnQoZW50aXR5LCBlbnZpcm9ubWVudCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCEhY2xpZW50SWQgJiYgIXRoaXMubWF0Y2hDbGllbnRJZChlbnRpdHksIGNsaWVudElkKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBtYXRjaGluZ0FwcE1ldGFkYXRhW2NhY2hlS2V5XSA9IGVudGl0eTtcclxuXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBtYXRjaGluZ0FwcE1ldGFkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0cmlldmUgYXV0aG9yaXR5TWV0YWRhdGEgdGhhdCBjb250YWlucyBhIG1hdGNoaW5nIGFsaWFzXHJcbiAgICAgKiBAcGFyYW0gZmlsdGVyXHJcbiAgICAgKi9cclxuICAgIGdldEF1dGhvcml0eU1ldGFkYXRhQnlBbGlhcyhob3N0OiBzdHJpbmcpOiBBdXRob3JpdHlNZXRhZGF0YUVudGl0eSB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGFsbENhY2hlS2V5cyA9IHRoaXMuZ2V0QXV0aG9yaXR5TWV0YWRhdGFLZXlzKCk7XHJcbiAgICAgICAgbGV0IG1hdGNoZWRFbnRpdHkgPSBudWxsO1xyXG5cclxuICAgICAgICBhbGxDYWNoZUtleXMuZm9yRWFjaCgoY2FjaGVLZXkpID0+IHtcclxuICAgICAgICAgICAgLy8gZG9uJ3QgcGFyc2UgYW55IG5vbi1hdXRob3JpdHlNZXRhZGF0YSB0eXBlIGNhY2hlIGVudGl0aWVzXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0F1dGhvcml0eU1ldGFkYXRhKGNhY2hlS2V5KSB8fCBjYWNoZUtleS5pbmRleE9mKHRoaXMuY2xpZW50SWQpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBBdHRlbXB0IHJldHJpZXZhbFxyXG4gICAgICAgICAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmdldEF1dGhvcml0eU1ldGFkYXRhKGNhY2hlS2V5KTtcclxuXHJcbiAgICAgICAgICAgIGlmICghZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChlbnRpdHkuYWxpYXNlcy5pbmRleE9mKGhvc3QpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBtYXRjaGVkRW50aXR5ID0gZW50aXR5O1xyXG5cclxuICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gbWF0Y2hlZEVudGl0eTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgYWxsIGFjY291bnRzIGFuZCByZWxhdGVkIHRva2VucyBmcm9tIGNhY2hlLlxyXG4gICAgICovXHJcbiAgICByZW1vdmVBbGxBY2NvdW50cygpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBhbGxDYWNoZUtleXMgPSB0aGlzLmdldEtleXMoKTtcclxuICAgICAgICBhbGxDYWNoZUtleXMuZm9yRWFjaCgoY2FjaGVLZXkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZW50aXR5ID0gdGhpcy5nZXRBY2NvdW50KGNhY2hlS2V5KTtcclxuICAgICAgICAgICAgaWYgKCFlbnRpdHkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUFjY291bnQoY2FjaGVLZXkpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHJldHVybnMgYSBib29sZWFuIGlmIHRoZSBnaXZlbiBhY2NvdW50IGlzIHJlbW92ZWRcclxuICAgICAqIEBwYXJhbSBhY2NvdW50XHJcbiAgICAgKi9cclxuICAgIHJlbW92ZUFjY291bnQoYWNjb3VudEtleTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgYWNjb3VudCA9IHRoaXMuZ2V0QWNjb3VudChhY2NvdW50S2V5KTtcclxuICAgICAgICBpZiAoIWFjY291bnQpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZU5vQWNjb3VudEZvdW5kRXJyb3IoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnJlbW92ZUFjY291bnRDb250ZXh0KGFjY291bnQpICYmIHRoaXMucmVtb3ZlSXRlbShhY2NvdW50S2V5LCBDYWNoZVNjaGVtYVR5cGUuQUNDT1VOVCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJucyBhIGJvb2xlYW4gaWYgdGhlIGdpdmVuIGFjY291bnQgaXMgcmVtb3ZlZFxyXG4gICAgICogQHBhcmFtIGFjY291bnRcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlQWNjb3VudENvbnRleHQoYWNjb3VudDogQWNjb3VudEVudGl0eSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGFsbENhY2hlS2V5cyA9IHRoaXMuZ2V0S2V5cygpO1xyXG4gICAgICAgIGNvbnN0IGFjY291bnRJZCA9IGFjY291bnQuZ2VuZXJhdGVBY2NvdW50SWQoKTtcclxuXHJcbiAgICAgICAgYWxsQ2FjaGVLZXlzLmZvckVhY2goKGNhY2hlS2V5KSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGRvbid0IHBhcnNlIGFueSBub24tY3JlZGVudGlhbCB0eXBlIGNhY2hlIGVudGl0aWVzXHJcbiAgICAgICAgICAgIGNvbnN0IGNyZWRUeXBlID0gQ3JlZGVudGlhbEVudGl0eS5nZXRDcmVkZW50aWFsVHlwZShjYWNoZUtleSk7XHJcbiAgICAgICAgICAgIGlmIChjcmVkVHlwZSA9PT0gQ29uc3RhbnRzLk5PVF9ERUZJTkVEKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlRW50aXR5ID0gdGhpcy5nZXRTcGVjaWZpY0NyZWRlbnRpYWwoY2FjaGVLZXksIGNyZWRUeXBlKTtcclxuICAgICAgICAgICAgaWYgKCEhY2FjaGVFbnRpdHkgJiYgYWNjb3VudElkID09PSBjYWNoZUVudGl0eS5nZW5lcmF0ZUFjY291bnRJZCgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUNyZWRlbnRpYWwoY2FjaGVFbnRpdHkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJucyBhIGJvb2xlYW4gaWYgdGhlIGdpdmVuIGNyZWRlbnRpYWwgaXMgcmVtb3ZlZFxyXG4gICAgICogQHBhcmFtIGNyZWRlbnRpYWxcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlQ3JlZGVudGlhbChjcmVkZW50aWFsOiBDcmVkZW50aWFsRW50aXR5KTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gY3JlZGVudGlhbC5nZW5lcmF0ZUNyZWRlbnRpYWxLZXkoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZW1vdmVJdGVtKGtleSwgQ2FjaGVTY2hlbWFUeXBlLkNSRURFTlRJQUwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlcyBhbGwgYXBwIG1ldGFkYXRhIG9iamVjdHMgZnJvbSBjYWNoZS5cclxuICAgICAqL1xyXG4gICAgcmVtb3ZlQXBwTWV0YWRhdGEoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgYWxsQ2FjaGVLZXlzID0gdGhpcy5nZXRLZXlzKCk7XHJcbiAgICAgICAgYWxsQ2FjaGVLZXlzLmZvckVhY2goKGNhY2hlS2V5KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQXBwTWV0YWRhdGEoY2FjaGVLZXkpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUl0ZW0oY2FjaGVLZXksIENhY2hlU2NoZW1hVHlwZS5BUFBfTUVUQURBVEEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmUgdGhlIGNhY2hlZCBjcmVkZW50aWFscyBpbnRvIGEgY2FjaGVyZWNvcmRcclxuICAgICAqIEBwYXJhbSBhY2NvdW50XHJcbiAgICAgKiBAcGFyYW0gY2xpZW50SWRcclxuICAgICAqIEBwYXJhbSBzY29wZXNcclxuICAgICAqIEBwYXJhbSBlbnZpcm9ubWVudFxyXG4gICAgICovXHJcbiAgICByZWFkQ2FjaGVSZWNvcmQoYWNjb3VudDogQWNjb3VudEluZm8sIGNsaWVudElkOiBzdHJpbmcsIHNjb3BlczogU2NvcGVTZXQsIGVudmlyb25tZW50OiBzdHJpbmcpOiBDYWNoZVJlY29yZCB7XHJcbiAgICAgICAgY29uc3QgY2FjaGVkQWNjb3VudCA9IHRoaXMucmVhZEFjY291bnRGcm9tQ2FjaGUoYWNjb3VudCk7XHJcbiAgICAgICAgY29uc3QgY2FjaGVkSWRUb2tlbiA9IHRoaXMucmVhZElkVG9rZW5Gcm9tQ2FjaGUoY2xpZW50SWQsIGFjY291bnQpO1xyXG4gICAgICAgIGNvbnN0IGNhY2hlZEFjY2Vzc1Rva2VuID0gdGhpcy5yZWFkQWNjZXNzVG9rZW5Gcm9tQ2FjaGUoY2xpZW50SWQsIGFjY291bnQsIHNjb3Blcyk7XHJcbiAgICAgICAgY29uc3QgY2FjaGVkUmVmcmVzaFRva2VuID0gdGhpcy5yZWFkUmVmcmVzaFRva2VuRnJvbUNhY2hlKGNsaWVudElkLCBhY2NvdW50LCBmYWxzZSk7XHJcbiAgICAgICAgY29uc3QgY2FjaGVkQXBwTWV0YWRhdGEgPSB0aGlzLnJlYWRBcHBNZXRhZGF0YUZyb21DYWNoZShlbnZpcm9ubWVudCwgY2xpZW50SWQpO1xyXG5cclxuICAgICAgICBpZiAoY2FjaGVkQWNjb3VudCAmJiBjYWNoZWRJZFRva2VuKSB7XHJcbiAgICAgICAgICAgIGNhY2hlZEFjY291bnQuaWRUb2tlbkNsYWltcyA9IG5ldyBBdXRoVG9rZW4oY2FjaGVkSWRUb2tlbi5zZWNyZXQsIHRoaXMuY3J5cHRvSW1wbCkuY2xhaW1zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYWNjb3VudDogY2FjaGVkQWNjb3VudCxcclxuICAgICAgICAgICAgaWRUb2tlbjogY2FjaGVkSWRUb2tlbixcclxuICAgICAgICAgICAgYWNjZXNzVG9rZW46IGNhY2hlZEFjY2Vzc1Rva2VuLFxyXG4gICAgICAgICAgICByZWZyZXNoVG9rZW46IGNhY2hlZFJlZnJlc2hUb2tlbixcclxuICAgICAgICAgICAgYXBwTWV0YWRhdGE6IGNhY2hlZEFwcE1ldGFkYXRhLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZSBBY2NvdW50RW50aXR5IGZyb20gY2FjaGVcclxuICAgICAqIEBwYXJhbSBhY2NvdW50XHJcbiAgICAgKi9cclxuICAgIHJlYWRBY2NvdW50RnJvbUNhY2hlKGFjY291bnQ6IEFjY291bnRJbmZvKTogQWNjb3VudEVudGl0eSB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGFjY291bnRLZXk6IHN0cmluZyA9IEFjY291bnRFbnRpdHkuZ2VuZXJhdGVBY2NvdW50Q2FjaGVLZXkoYWNjb3VudCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWNjb3VudChhY2NvdW50S2V5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlIElkVG9rZW5FbnRpdHkgZnJvbSBjYWNoZVxyXG4gICAgICogQHBhcmFtIGNsaWVudElkXHJcbiAgICAgKiBAcGFyYW0gYWNjb3VudFxyXG4gICAgICogQHBhcmFtIGlucHV0UmVhbG1cclxuICAgICAqL1xyXG4gICAgcmVhZElkVG9rZW5Gcm9tQ2FjaGUoY2xpZW50SWQ6IHN0cmluZywgYWNjb3VudDogQWNjb3VudEluZm8pOiBJZFRva2VuRW50aXR5IHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3QgaWRUb2tlbkZpbHRlcjogQ3JlZGVudGlhbEZpbHRlciA9IHtcclxuICAgICAgICAgICAgaG9tZUFjY291bnRJZDogYWNjb3VudC5ob21lQWNjb3VudElkLFxyXG4gICAgICAgICAgICBlbnZpcm9ubWVudDogYWNjb3VudC5lbnZpcm9ubWVudCxcclxuICAgICAgICAgICAgY3JlZGVudGlhbFR5cGU6IENyZWRlbnRpYWxUeXBlLklEX1RPS0VOLFxyXG4gICAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWQsXHJcbiAgICAgICAgICAgIHJlYWxtOiBhY2NvdW50LnRlbmFudElkLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IGNyZWRlbnRpYWxDYWNoZTogQ3JlZGVudGlhbENhY2hlID0gdGhpcy5nZXRDcmVkZW50aWFsc0ZpbHRlcmVkQnkoaWRUb2tlbkZpbHRlcik7XHJcbiAgICAgICAgY29uc3QgaWRUb2tlbnMgPSBPYmplY3Qua2V5cyhjcmVkZW50aWFsQ2FjaGUuaWRUb2tlbnMpLm1hcCgoa2V5KSA9PiBjcmVkZW50aWFsQ2FjaGUuaWRUb2tlbnNba2V5XSk7XHJcbiAgICAgICAgY29uc3QgbnVtSWRUb2tlbnMgPSBpZFRva2Vucy5sZW5ndGg7XHJcblxyXG4gICAgICAgIGlmIChudW1JZFRva2VucyA8IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChudW1JZFRva2VucyA+IDEpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZU11bHRpcGxlTWF0Y2hpbmdUb2tlbnNJbkNhY2hlRXJyb3IoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBpZFRva2Vuc1swXSBhcyBJZFRva2VuRW50aXR5O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmUgQWNjZXNzVG9rZW5FbnRpdHkgZnJvbSBjYWNoZVxyXG4gICAgICogQHBhcmFtIGNsaWVudElkXHJcbiAgICAgKiBAcGFyYW0gYWNjb3VudFxyXG4gICAgICogQHBhcmFtIHNjb3Blc1xyXG4gICAgICogQHBhcmFtIGlucHV0UmVhbG1cclxuICAgICAqL1xyXG4gICAgcmVhZEFjY2Vzc1Rva2VuRnJvbUNhY2hlKGNsaWVudElkOiBzdHJpbmcsIGFjY291bnQ6IEFjY291bnRJbmZvLCBzY29wZXM6IFNjb3BlU2V0KTogQWNjZXNzVG9rZW5FbnRpdHkgfCBudWxsIHtcclxuICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbkZpbHRlcjogQ3JlZGVudGlhbEZpbHRlciA9IHtcclxuICAgICAgICAgICAgaG9tZUFjY291bnRJZDogYWNjb3VudC5ob21lQWNjb3VudElkLFxyXG4gICAgICAgICAgICBlbnZpcm9ubWVudDogYWNjb3VudC5lbnZpcm9ubWVudCxcclxuICAgICAgICAgICAgY3JlZGVudGlhbFR5cGU6IENyZWRlbnRpYWxUeXBlLkFDQ0VTU19UT0tFTixcclxuICAgICAgICAgICAgY2xpZW50SWQsXHJcbiAgICAgICAgICAgIHJlYWxtOiBhY2NvdW50LnRlbmFudElkLFxyXG4gICAgICAgICAgICB0YXJnZXQ6IHNjb3Blcy5wcmludFNjb3Blc0xvd2VyQ2FzZSgpLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IGNyZWRlbnRpYWxDYWNoZTogQ3JlZGVudGlhbENhY2hlID0gdGhpcy5nZXRDcmVkZW50aWFsc0ZpbHRlcmVkQnkoYWNjZXNzVG9rZW5GaWx0ZXIpO1xyXG4gICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VucyA9IE9iamVjdC5rZXlzKGNyZWRlbnRpYWxDYWNoZS5hY2Nlc3NUb2tlbnMpLm1hcCgoa2V5KSA9PiBjcmVkZW50aWFsQ2FjaGUuYWNjZXNzVG9rZW5zW2tleV0pO1xyXG5cclxuICAgICAgICBjb25zdCBudW1BY2Nlc3NUb2tlbnMgPSBhY2Nlc3NUb2tlbnMubGVuZ3RoO1xyXG4gICAgICAgIGlmIChudW1BY2Nlc3NUb2tlbnMgPCAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobnVtQWNjZXNzVG9rZW5zID4gMSkge1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRBdXRoRXJyb3IuY3JlYXRlTXVsdGlwbGVNYXRjaGluZ1Rva2Vuc0luQ2FjaGVFcnJvcigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGFjY2Vzc1Rva2Vuc1swXSBhcyBBY2Nlc3NUb2tlbkVudGl0eTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciB0byByZXRyaWV2ZSB0aGUgYXBwcm9wcmlhdGUgcmVmcmVzaCB0b2tlbiBmcm9tIGNhY2hlXHJcbiAgICAgKiBAcGFyYW0gY2xpZW50SWRcclxuICAgICAqIEBwYXJhbSBhY2NvdW50XHJcbiAgICAgKiBAcGFyYW0gZmFtaWx5UlRcclxuICAgICAqL1xyXG4gICAgcmVhZFJlZnJlc2hUb2tlbkZyb21DYWNoZShjbGllbnRJZDogc3RyaW5nLCBhY2NvdW50OiBBY2NvdW50SW5mbywgZmFtaWx5UlQ6IGJvb2xlYW4pOiBSZWZyZXNoVG9rZW5FbnRpdHkgfCBudWxsIHtcclxuICAgICAgICBjb25zdCBpZCA9IGZhbWlseVJUID8gVEhFX0ZBTUlMWV9JRCA6IHVuZGVmaW5lZDtcclxuICAgICAgICBjb25zdCByZWZyZXNoVG9rZW5GaWx0ZXI6IENyZWRlbnRpYWxGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgIGhvbWVBY2NvdW50SWQ6IGFjY291bnQuaG9tZUFjY291bnRJZCxcclxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IGFjY291bnQuZW52aXJvbm1lbnQsXHJcbiAgICAgICAgICAgIGNyZWRlbnRpYWxUeXBlOiBDcmVkZW50aWFsVHlwZS5SRUZSRVNIX1RPS0VOLFxyXG4gICAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWQsXHJcbiAgICAgICAgICAgIGZhbWlseUlkOiBpZFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IGNyZWRlbnRpYWxDYWNoZTogQ3JlZGVudGlhbENhY2hlID0gdGhpcy5nZXRDcmVkZW50aWFsc0ZpbHRlcmVkQnkocmVmcmVzaFRva2VuRmlsdGVyKTtcclxuICAgICAgICBjb25zdCByZWZyZXNoVG9rZW5zID0gT2JqZWN0LmtleXMoY3JlZGVudGlhbENhY2hlLnJlZnJlc2hUb2tlbnMpLm1hcCgoa2V5KSA9PiBjcmVkZW50aWFsQ2FjaGUucmVmcmVzaFRva2Vuc1trZXldKTtcclxuXHJcbiAgICAgICAgY29uc3QgbnVtUmVmcmVzaFRva2VucyA9IHJlZnJlc2hUb2tlbnMubGVuZ3RoO1xyXG4gICAgICAgIGlmIChudW1SZWZyZXNoVG9rZW5zIDwgMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYWRkcmVzcyB0aGUgZWxzZSBjYXNlIGFmdGVyIHJlbW92ZSBmdW5jdGlvbnMgYWRkcmVzcyBlbnZpcm9ubWVudCBhbGlhc2VzXHJcblxyXG4gICAgICAgIHJldHVybiByZWZyZXNoVG9rZW5zWzBdIGFzIFJlZnJlc2hUb2tlbkVudGl0eTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlIEFwcE1ldGFkYXRhRW50aXR5IGZyb20gY2FjaGVcclxuICAgICAqL1xyXG4gICAgcmVhZEFwcE1ldGFkYXRhRnJvbUNhY2hlKGVudmlyb25tZW50OiBzdHJpbmcsIGNsaWVudElkOiBzdHJpbmcpOiBBcHBNZXRhZGF0YUVudGl0eSB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGFwcE1ldGFkYXRhRmlsdGVyOiBBcHBNZXRhZGF0YUZpbHRlciA9IHtcclxuICAgICAgICAgICAgZW52aXJvbm1lbnQsXHJcbiAgICAgICAgICAgIGNsaWVudElkLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IGFwcE1ldGFkYXRhOiBBcHBNZXRhZGF0YUNhY2hlID0gdGhpcy5nZXRBcHBNZXRhZGF0YUZpbHRlcmVkQnkoYXBwTWV0YWRhdGFGaWx0ZXIpO1xyXG4gICAgICAgIGNvbnN0IGFwcE1ldGFkYXRhRW50cmllczogQXBwTWV0YWRhdGFFbnRpdHlbXSA9IE9iamVjdC5rZXlzKGFwcE1ldGFkYXRhKS5tYXAoKGtleSkgPT4gYXBwTWV0YWRhdGFba2V5XSk7XHJcblxyXG4gICAgICAgIGNvbnN0IG51bUFwcE1ldGFkYXRhID0gYXBwTWV0YWRhdGFFbnRyaWVzLmxlbmd0aDtcclxuICAgICAgICBpZiAobnVtQXBwTWV0YWRhdGEgPCAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobnVtQXBwTWV0YWRhdGEgPiAxKSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVNdWx0aXBsZU1hdGNoaW5nQXBwTWV0YWRhdGFJbkNhY2hlRXJyb3IoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBhcHBNZXRhZGF0YUVudHJpZXNbMF0gYXMgQXBwTWV0YWRhdGFFbnRpdHk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm4gdGhlIGZhbWlseV9pZCB2YWx1ZSBhc3NvY2lhdGVkICB3aXRoIEZPQ0lcclxuICAgICAqIEBwYXJhbSBlbnZpcm9ubWVudFxyXG4gICAgICogQHBhcmFtIGNsaWVudElkXHJcbiAgICAgKi9cclxuICAgIGlzQXBwTWV0YWRhdGFGT0NJKGVudmlyb25tZW50OiBzdHJpbmcsIGNsaWVudElkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBhcHBNZXRhZGF0YSA9IHRoaXMucmVhZEFwcE1ldGFkYXRhRnJvbUNhY2hlKGVudmlyb25tZW50LCBjbGllbnRJZCk7XHJcbiAgICAgICAgcmV0dXJuICEhKGFwcE1ldGFkYXRhICYmIGFwcE1ldGFkYXRhLmZhbWlseUlkID09PSBUSEVfRkFNSUxZX0lEKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGhlbHBlciB0byBtYXRjaCBhY2NvdW50IGlkc1xyXG4gICAgICogQHBhcmFtIHZhbHVlXHJcbiAgICAgKiBAcGFyYW0gaG9tZUFjY291bnRJZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG1hdGNoSG9tZUFjY291bnRJZChlbnRpdHk6IEFjY291bnRFbnRpdHkgfCBDcmVkZW50aWFsRW50aXR5LCBob21lQWNjb3VudElkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISEoZW50aXR5LmhvbWVBY2NvdW50SWQgJiYgaG9tZUFjY291bnRJZCA9PT0gZW50aXR5LmhvbWVBY2NvdW50SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogaGVscGVyIHRvIG1hdGNoIGFzc2VydGlvblxyXG4gICAgICogQHBhcmFtIHZhbHVlXHJcbiAgICAgKiBAcGFyYW0gb2JvQXNzZXJ0aW9uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbWF0Y2hPYm9Bc3NlcnRpb24oZW50aXR5OiBBY2NvdW50RW50aXR5IHwgQ3JlZGVudGlhbEVudGl0eSwgb2JvQXNzZXJ0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISEoZW50aXR5Lm9ib0Fzc2VydGlvbiAmJiBvYm9Bc3NlcnRpb24gPT09IGVudGl0eS5vYm9Bc3NlcnRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogaGVscGVyIHRvIG1hdGNoIGVudmlyb25tZW50XHJcbiAgICAgKiBAcGFyYW0gdmFsdWVcclxuICAgICAqIEBwYXJhbSBlbnZpcm9ubWVudFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG1hdGNoRW52aXJvbm1lbnQoZW50aXR5OiBBY2NvdW50RW50aXR5IHwgQ3JlZGVudGlhbEVudGl0eSB8IEFwcE1ldGFkYXRhRW50aXR5LCBlbnZpcm9ubWVudDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgY2xvdWRNZXRhZGF0YSA9IHRoaXMuZ2V0QXV0aG9yaXR5TWV0YWRhdGFCeUFsaWFzKGVudmlyb25tZW50KTtcclxuICAgICAgICBpZiAoY2xvdWRNZXRhZGF0YSAmJiBjbG91ZE1ldGFkYXRhLmFsaWFzZXMuaW5kZXhPZihlbnRpdHkuZW52aXJvbm1lbnQpID4gLTEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBoZWxwZXIgdG8gbWF0Y2ggY3JlZGVudGlhbCB0eXBlXHJcbiAgICAgKiBAcGFyYW0gZW50aXR5XHJcbiAgICAgKiBAcGFyYW0gY3JlZGVudGlhbFR5cGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBtYXRjaENyZWRlbnRpYWxUeXBlKGVudGl0eTogQ3JlZGVudGlhbEVudGl0eSwgY3JlZGVudGlhbFR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAoZW50aXR5LmNyZWRlbnRpYWxUeXBlICYmIGNyZWRlbnRpYWxUeXBlLnRvTG93ZXJDYXNlKCkgPT09IGVudGl0eS5jcmVkZW50aWFsVHlwZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGhlbHBlciB0byBtYXRjaCBjbGllbnQgaWRzXHJcbiAgICAgKiBAcGFyYW0gZW50aXR5XHJcbiAgICAgKiBAcGFyYW0gY2xpZW50SWRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBtYXRjaENsaWVudElkKGVudGl0eTogQ3JlZGVudGlhbEVudGl0eSB8IEFwcE1ldGFkYXRhRW50aXR5LCBjbGllbnRJZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICEhKGVudGl0eS5jbGllbnRJZCAmJiBjbGllbnRJZCA9PT0gZW50aXR5LmNsaWVudElkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGhlbHBlciB0byBtYXRjaCBmYW1pbHkgaWRzXHJcbiAgICAgKiBAcGFyYW0gZW50aXR5XHJcbiAgICAgKiBAcGFyYW0gZmFtaWx5SWRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBtYXRjaEZhbWlseUlkKGVudGl0eTogQ3JlZGVudGlhbEVudGl0eSB8IEFwcE1ldGFkYXRhRW50aXR5LCBmYW1pbHlJZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICEhKGVudGl0eS5mYW1pbHlJZCAmJiBmYW1pbHlJZCA9PT0gZW50aXR5LmZhbWlseUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGhlbHBlciB0byBtYXRjaCByZWFsbVxyXG4gICAgICogQHBhcmFtIGVudGl0eVxyXG4gICAgICogQHBhcmFtIHJlYWxtXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbWF0Y2hSZWFsbShlbnRpdHk6IEFjY291bnRFbnRpdHkgfCBDcmVkZW50aWFsRW50aXR5LCByZWFsbTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICEhKGVudGl0eS5yZWFsbSAmJiByZWFsbSA9PT0gZW50aXR5LnJlYWxtKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdGFyZ2V0IHNjb3BlcyBhcmUgYSBzdWJzZXQgb2YgdGhlIGN1cnJlbnQgZW50aXR5J3Mgc2NvcGVzLCBmYWxzZSBvdGhlcndpc2UuXHJcbiAgICAgKiBAcGFyYW0gZW50aXR5XHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbWF0Y2hUYXJnZXQoZW50aXR5OiBDcmVkZW50aWFsRW50aXR5LCB0YXJnZXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChlbnRpdHkuY3JlZGVudGlhbFR5cGUgIT09IENyZWRlbnRpYWxUeXBlLkFDQ0VTU19UT0tFTiB8fCAhZW50aXR5LnRhcmdldCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBlbnRpdHlTY29wZVNldDogU2NvcGVTZXQgPSBTY29wZVNldC5mcm9tU3RyaW5nKGVudGl0eS50YXJnZXQpO1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RUYXJnZXRTY29wZVNldDogU2NvcGVTZXQgPSBTY29wZVNldC5mcm9tU3RyaW5nKHRhcmdldCk7XHJcblxyXG4gICAgICAgIGlmICghcmVxdWVzdFRhcmdldFNjb3BlU2V0LmNvbnRhaW5zT25seU9JRENTY29wZXMoKSkge1xyXG4gICAgICAgICAgICByZXF1ZXN0VGFyZ2V0U2NvcGVTZXQucmVtb3ZlT0lEQ1Njb3BlcygpOyAvLyBpZ25vcmUgT0lEQyBzY29wZXNcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXF1ZXN0VGFyZ2V0U2NvcGVTZXQucmVtb3ZlU2NvcGUoQ29uc3RhbnRzLk9GRkxJTkVfQUNDRVNTX1NDT1BFKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGVudGl0eVNjb3BlU2V0LmNvbnRhaW5zU2NvcGVTZXQocmVxdWVzdFRhcmdldFNjb3BlU2V0KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHJldHVybnMgaWYgYSBnaXZlbiBjYWNoZSBlbnRpdHkgaXMgb2YgdGhlIHR5cGUgYXBwbWV0YWRhdGFcclxuICAgICAqIEBwYXJhbSBrZXlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc0FwcE1ldGFkYXRhKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGtleS5pbmRleE9mKEFQUF9NRVRBREFUQSkgIT09IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJucyBpZiBhIGdpdmVuIGNhY2hlIGVudGl0eSBpcyBvZiB0aGUgdHlwZSBhdXRob3JpdHltZXRhZGF0YVxyXG4gICAgICogQHBhcmFtIGtleVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgaXNBdXRob3JpdHlNZXRhZGF0YShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBrZXkuaW5kZXhPZihBVVRIT1JJVFlfTUVUQURBVEFfQ09OU1RBTlRTLkNBQ0hFX0tFWSkgIT09IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJucyBjYWNoZSBrZXkgdXNlZCBmb3IgY2xvdWQgaW5zdGFuY2UgbWV0YWRhdGFcclxuICAgICAqL1xyXG4gICAgZ2VuZXJhdGVBdXRob3JpdHlNZXRhZGF0YUNhY2hlS2V5KGF1dGhvcml0eTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gYCR7QVVUSE9SSVRZX01FVEFEQVRBX0NPTlNUQU5UUy5DQUNIRV9LRVl9LSR7dGhpcy5jbGllbnRJZH0tJHthdXRob3JpdHl9YDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHNwZWNpZmljIGNyZWRlbnRpYWwgKElkVG9rZW4vQWNjZXNzVG9rZW4vUmVmcmVzaFRva2VuKSBmcm9tIHRoZSBjYWNoZVxyXG4gICAgICogQHBhcmFtIGtleVxyXG4gICAgICogQHBhcmFtIGNyZWRUeXBlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0U3BlY2lmaWNDcmVkZW50aWFsKGtleTogc3RyaW5nLCBjcmVkVHlwZTogc3RyaW5nKTogVmFsaWRDcmVkZW50aWFsVHlwZSB8IG51bGwge1xyXG4gICAgICAgIHN3aXRjaCAoY3JlZFR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBDcmVkZW50aWFsVHlwZS5JRF9UT0tFTjoge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SWRUb2tlbkNyZWRlbnRpYWwoa2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIENyZWRlbnRpYWxUeXBlLkFDQ0VTU19UT0tFTjoge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWNjZXNzVG9rZW5DcmVkZW50aWFsKGtleSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSBDcmVkZW50aWFsVHlwZS5SRUZSRVNIX1RPS0VOOiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRSZWZyZXNoVG9rZW5DcmVkZW50aWFsKGtleSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciB0byBjb252ZXJ0IHNlcmlhbGl6ZWQgZGF0YSB0byBvYmplY3RcclxuICAgICAqIEBwYXJhbSBvYmpcclxuICAgICAqIEBwYXJhbSBqc29uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyB0b09iamVjdDxUPihvYmo6IFQsIGpzb246IG9iamVjdCk6IFQge1xyXG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIGluIGpzb24pIHtcclxuICAgICAgICAgICAgb2JqW3Byb3BlcnR5TmFtZV0gPSBqc29uW3Byb3BlcnR5TmFtZV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0U3RvcmFnZUNsYXNzIGV4dGVuZHMgQ2FjaGVNYW5hZ2VyIHtcclxuICAgIHNldEFjY291bnQoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgbm90SW1wbEVyciA9IFwiU3RvcmFnZSBpbnRlcmZhY2UgLSBzZXRBY2NvdW50KCkgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIGZvciB0aGUgY2FjaGVTdG9yYWdlIGludGVyZmFjZS5cIjtcclxuICAgICAgICB0aHJvdyBBdXRoRXJyb3IuY3JlYXRlVW5leHBlY3RlZEVycm9yKG5vdEltcGxFcnIpO1xyXG4gICAgfVxyXG4gICAgZ2V0QWNjb3VudCgpOiBBY2NvdW50RW50aXR5IHtcclxuICAgICAgICBjb25zdCBub3RJbXBsRXJyID0gXCJTdG9yYWdlIGludGVyZmFjZSAtIGdldEFjY291bnQoKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHRoZSBjYWNoZVN0b3JhZ2UgaW50ZXJmYWNlLlwiO1xyXG4gICAgICAgIHRocm93IEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkRXJyb3Iobm90SW1wbEVycik7XHJcbiAgICB9XHJcbiAgICBzZXRJZFRva2VuQ3JlZGVudGlhbCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBub3RJbXBsRXJyID0gXCJTdG9yYWdlIGludGVyZmFjZSAtIHNldElkVG9rZW5DcmVkZW50aWFsKCkgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIGZvciB0aGUgY2FjaGVTdG9yYWdlIGludGVyZmFjZS5cIjtcclxuICAgICAgICB0aHJvdyBBdXRoRXJyb3IuY3JlYXRlVW5leHBlY3RlZEVycm9yKG5vdEltcGxFcnIpO1xyXG4gICAgfVxyXG4gICAgZ2V0SWRUb2tlbkNyZWRlbnRpYWwoKTogSWRUb2tlbkVudGl0eSB7XHJcbiAgICAgICAgY29uc3Qgbm90SW1wbEVyciA9IFwiU3RvcmFnZSBpbnRlcmZhY2UgLSBnZXRJZFRva2VuQ3JlZGVudGlhbCgpIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCBmb3IgdGhlIGNhY2hlU3RvcmFnZSBpbnRlcmZhY2UuXCI7XHJcbiAgICAgICAgdGhyb3cgQXV0aEVycm9yLmNyZWF0ZVVuZXhwZWN0ZWRFcnJvcihub3RJbXBsRXJyKTtcclxuICAgIH1cclxuICAgIHNldEFjY2Vzc1Rva2VuQ3JlZGVudGlhbCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBub3RJbXBsRXJyID0gXCJTdG9yYWdlIGludGVyZmFjZSAtIHNldEFjY2Vzc1Rva2VuQ3JlZGVudGlhbCgpIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCBmb3IgdGhlIGNhY2hlU3RvcmFnZSBpbnRlcmZhY2UuXCI7XHJcbiAgICAgICAgdGhyb3cgQXV0aEVycm9yLmNyZWF0ZVVuZXhwZWN0ZWRFcnJvcihub3RJbXBsRXJyKTtcclxuICAgIH1cclxuICAgIGdldEFjY2Vzc1Rva2VuQ3JlZGVudGlhbCgpOiBBY2Nlc3NUb2tlbkVudGl0eSB7XHJcbiAgICAgICAgY29uc3Qgbm90SW1wbEVyciA9IFwiU3RvcmFnZSBpbnRlcmZhY2UgLSBnZXRBY2Nlc3NUb2tlbkNyZWRlbnRpYWwoKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHRoZSBjYWNoZVN0b3JhZ2UgaW50ZXJmYWNlLlwiO1xyXG4gICAgICAgIHRocm93IEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkRXJyb3Iobm90SW1wbEVycik7XHJcbiAgICB9XHJcbiAgICBzZXRSZWZyZXNoVG9rZW5DcmVkZW50aWFsKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IG5vdEltcGxFcnIgPSBcIlN0b3JhZ2UgaW50ZXJmYWNlIC0gc2V0UmVmcmVzaFRva2VuQ3JlZGVudGlhbCgpIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCBmb3IgdGhlIGNhY2hlU3RvcmFnZSBpbnRlcmZhY2UuXCI7XHJcbiAgICAgICAgdGhyb3cgQXV0aEVycm9yLmNyZWF0ZVVuZXhwZWN0ZWRFcnJvcihub3RJbXBsRXJyKTtcclxuICAgIH1cclxuICAgIGdldFJlZnJlc2hUb2tlbkNyZWRlbnRpYWwoKTogUmVmcmVzaFRva2VuRW50aXR5IHtcclxuICAgICAgICBjb25zdCBub3RJbXBsRXJyID0gXCJTdG9yYWdlIGludGVyZmFjZSAtIGdldFJlZnJlc2hUb2tlbkNyZWRlbnRpYWwoKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHRoZSBjYWNoZVN0b3JhZ2UgaW50ZXJmYWNlLlwiO1xyXG4gICAgICAgIHRocm93IEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkRXJyb3Iobm90SW1wbEVycik7XHJcbiAgICB9XHJcbiAgICBzZXRBcHBNZXRhZGF0YSgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBub3RJbXBsRXJyID0gXCJTdG9yYWdlIGludGVyZmFjZSAtIHNldEFwcE1ldGFkYXRhKCkgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIGZvciB0aGUgY2FjaGVTdG9yYWdlIGludGVyZmFjZS5cIjtcclxuICAgICAgICB0aHJvdyBBdXRoRXJyb3IuY3JlYXRlVW5leHBlY3RlZEVycm9yKG5vdEltcGxFcnIpO1xyXG4gICAgfVxyXG4gICAgZ2V0QXBwTWV0YWRhdGEoKTogQXBwTWV0YWRhdGFFbnRpdHkge1xyXG4gICAgICAgIGNvbnN0IG5vdEltcGxFcnIgPSBcIlN0b3JhZ2UgaW50ZXJmYWNlIC0gZ2V0QXBwTWV0YWRhdGEoKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHRoZSBjYWNoZVN0b3JhZ2UgaW50ZXJmYWNlLlwiO1xyXG4gICAgICAgIHRocm93IEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkRXJyb3Iobm90SW1wbEVycik7XHJcbiAgICB9XHJcbiAgICBzZXRTZXJ2ZXJUZWxlbWV0cnkoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgbm90SW1wbEVyciA9IFwiU3RvcmFnZSBpbnRlcmZhY2UgLSBzZXRTZXJ2ZXJUZWxlbWV0cnkoKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHRoZSBjYWNoZVN0b3JhZ2UgaW50ZXJmYWNlLlwiO1xyXG4gICAgICAgIHRocm93IEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkRXJyb3Iobm90SW1wbEVycik7XHJcbiAgICB9XHJcbiAgICBnZXRTZXJ2ZXJUZWxlbWV0cnkoKTogU2VydmVyVGVsZW1ldHJ5RW50aXR5IHtcclxuICAgICAgICBjb25zdCBub3RJbXBsRXJyID0gXCJTdG9yYWdlIGludGVyZmFjZSAtIGdldFNlcnZlclRlbGVtZXRyeSgpIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCBmb3IgdGhlIGNhY2hlU3RvcmFnZSBpbnRlcmZhY2UuXCI7XHJcbiAgICAgICAgdGhyb3cgQXV0aEVycm9yLmNyZWF0ZVVuZXhwZWN0ZWRFcnJvcihub3RJbXBsRXJyKTtcclxuICAgIH1cclxuICAgIHNldEF1dGhvcml0eU1ldGFkYXRhKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IG5vdEltcGxFcnIgPSBcIlN0b3JhZ2UgaW50ZXJmYWNlIC0gc2V0QXV0aG9yaXR5TWV0YWRhdGEoKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHRoZSBjYWNoZVN0b3JhZ2UgaW50ZXJmYWNlLlwiO1xyXG4gICAgICAgIHRocm93IEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkRXJyb3Iobm90SW1wbEVycik7XHJcbiAgICB9XHJcbiAgICBnZXRBdXRob3JpdHlNZXRhZGF0YSgpOiBBdXRob3JpdHlNZXRhZGF0YUVudGl0eSB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IG5vdEltcGxFcnIgPSBcIlN0b3JhZ2UgaW50ZXJmYWNlIC0gZ2V0QXV0aG9yaXR5TWV0YWRhdGEoKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHRoZSBjYWNoZVN0b3JhZ2UgaW50ZXJmYWNlLlwiO1xyXG4gICAgICAgIHRocm93IEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkRXJyb3Iobm90SW1wbEVycik7XHJcbiAgICB9XHJcbiAgICBnZXRBdXRob3JpdHlNZXRhZGF0YUtleXMoKTogQXJyYXk8c3RyaW5nPiB7XHJcbiAgICAgICAgY29uc3Qgbm90SW1wbEVyciA9IFwiU3RvcmFnZSBpbnRlcmZhY2UgLSBnZXRBdXRob3JpdHlNZXRhZGF0YUtleXMoKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHRoZSBjYWNoZVN0b3JhZ2UgaW50ZXJmYWNlLlwiO1xyXG4gICAgICAgIHRocm93IEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkRXJyb3Iobm90SW1wbEVycik7XHJcbiAgICB9XHJcbiAgICBzZXRUaHJvdHRsaW5nQ2FjaGUoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgbm90SW1wbEVyciA9IFwiU3RvcmFnZSBpbnRlcmZhY2UgLSBzZXRUaHJvdHRsaW5nQ2FjaGUoKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHRoZSBjYWNoZVN0b3JhZ2UgaW50ZXJmYWNlLlwiO1xyXG4gICAgICAgIHRocm93IEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkRXJyb3Iobm90SW1wbEVycik7XHJcbiAgICB9XHJcbiAgICBnZXRUaHJvdHRsaW5nQ2FjaGUoKTogVGhyb3R0bGluZ0VudGl0eSB7XHJcbiAgICAgICAgY29uc3Qgbm90SW1wbEVyciA9IFwiU3RvcmFnZSBpbnRlcmZhY2UgLSBnZXRUaHJvdHRsaW5nQ2FjaGUoKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHRoZSBjYWNoZVN0b3JhZ2UgaW50ZXJmYWNlLlwiO1xyXG4gICAgICAgIHRocm93IEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkRXJyb3Iobm90SW1wbEVycik7XHJcbiAgICB9XHJcbiAgICByZW1vdmVJdGVtKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IG5vdEltcGxFcnIgPSBcIlN0b3JhZ2UgaW50ZXJmYWNlIC0gcmVtb3ZlSXRlbSgpIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCBmb3IgdGhlIGNhY2hlU3RvcmFnZSBpbnRlcmZhY2UuXCI7XHJcbiAgICAgICAgdGhyb3cgQXV0aEVycm9yLmNyZWF0ZVVuZXhwZWN0ZWRFcnJvcihub3RJbXBsRXJyKTtcclxuICAgIH1cclxuICAgIGNvbnRhaW5zS2V5KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IG5vdEltcGxFcnIgPSBcIlN0b3JhZ2UgaW50ZXJmYWNlIC0gY29udGFpbnNLZXkoKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHRoZSBjYWNoZVN0b3JhZ2UgaW50ZXJmYWNlLlwiO1xyXG4gICAgICAgIHRocm93IEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkRXJyb3Iobm90SW1wbEVycik7XHJcbiAgICB9XHJcbiAgICBnZXRLZXlzKCk6IHN0cmluZ1tdIHtcclxuICAgICAgICBjb25zdCBub3RJbXBsRXJyID0gXCJTdG9yYWdlIGludGVyZmFjZSAtIGdldEtleXMoKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHRoZSBjYWNoZVN0b3JhZ2UgaW50ZXJmYWNlLlwiO1xyXG4gICAgICAgIHRocm93IEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkRXJyb3Iobm90SW1wbEVycik7XHJcbiAgICB9XHJcbiAgICBjbGVhcigpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBub3RJbXBsRXJyID0gXCJTdG9yYWdlIGludGVyZmFjZSAtIGNsZWFyKCkgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIGZvciB0aGUgY2FjaGVTdG9yYWdlIGludGVyZmFjZS5cIjtcclxuICAgICAgICB0aHJvdyBBdXRoRXJyb3IuY3JlYXRlVW5leHBlY3RlZEVycm9yKG5vdEltcGxFcnIpO1xyXG4gICAgfVxyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSU5ldHdvcmtNb2R1bGUgfSBmcm9tIFwiLi4vbmV0d29yay9JTmV0d29ya01vZHVsZVwiO1xyXG5pbXBvcnQgeyBERUZBVUxUX0NSWVBUT19JTVBMRU1FTlRBVElPTiwgSUNyeXB0byB9IGZyb20gXCIuLi9jcnlwdG8vSUNyeXB0b1wiO1xyXG5pbXBvcnQgeyBBdXRoRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvQXV0aEVycm9yXCI7XHJcbmltcG9ydCB7IElMb2dnZXJDYWxsYmFjaywgTG9nTGV2ZWwgfSBmcm9tIFwiLi4vbG9nZ2VyL0xvZ2dlclwiO1xyXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vdXRpbHMvQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tIFwiLi4vcGFja2FnZU1ldGFkYXRhXCI7XHJcbmltcG9ydCB7IEF1dGhvcml0eSB9IGZyb20gXCIuLi9hdXRob3JpdHkvQXV0aG9yaXR5XCI7XHJcbmltcG9ydCB7IENhY2hlTWFuYWdlciwgRGVmYXVsdFN0b3JhZ2VDbGFzcyB9IGZyb20gXCIuLi9jYWNoZS9DYWNoZU1hbmFnZXJcIjtcclxuaW1wb3J0IHsgU2VydmVyVGVsZW1ldHJ5TWFuYWdlciB9IGZyb20gXCIuLi90ZWxlbWV0cnkvc2VydmVyL1NlcnZlclRlbGVtZXRyeU1hbmFnZXJcIjtcclxuaW1wb3J0IHsgSUNhY2hlUGx1Z2luIH0gZnJvbSBcIi4uL2NhY2hlL2ludGVyZmFjZS9JQ2FjaGVQbHVnaW5cIjtcclxuaW1wb3J0IHsgSVNlcmlhbGl6YWJsZVRva2VuQ2FjaGUgfSBmcm9tIFwiLi4vY2FjaGUvaW50ZXJmYWNlL0lTZXJpYWxpemFibGVUb2tlbkNhY2hlXCI7XHJcblxyXG4vLyBUb2tlbiByZW5ld2FsIG9mZnNldCBkZWZhdWx0IGluIHNlY29uZHNcclxuY29uc3QgREVGQVVMVF9UT0tFTl9SRU5FV0FMX09GRlNFVF9TRUMgPSAzMDA7XHJcblxyXG4vKipcclxuICogVXNlIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCB0byBjb25maWd1cmUgTVNBTCBNb2R1bGVzIGFuZCBpbml0aWFsaXplIHRoZSBiYXNlIGludGVyZmFjZXMgZm9yIE1TQUwuXHJcbiAqXHJcbiAqIFRoaXMgb2JqZWN0IGFsbG93cyB5b3UgdG8gY29uZmlndXJlIGltcG9ydGFudCBlbGVtZW50cyBvZiBNU0FMIGZ1bmN0aW9uYWxpdHk6XHJcbiAqIC0gYXV0aE9wdGlvbnMgICAgICAgICAgICAgICAgLSBBdXRoZW50aWNhdGlvbiBmb3IgYXBwbGljYXRpb25cclxuICogLSBjcnlwdG9JbnRlcmZhY2UgICAgICAgICAgICAtIEltcGxlbWVudGF0aW9uIG9mIGNyeXB0byBmdW5jdGlvbnNcclxuICogLSBsaWJyYXJ5SW5mbyAgICAgICAgICAgICAgICAtIExpYnJhcnkgbWV0YWRhdGFcclxuICogLSBsb2dnZXJPcHRpb25zICAgICAgICAgICAgICAtIExvZ2dpbmcgZm9yIGFwcGxpY2F0aW9uXHJcbiAqIC0gbmV0d29ya0ludGVyZmFjZSAgICAgICAgICAgLSBOZXR3b3JrIGltcGxlbWVudGF0aW9uXHJcbiAqIC0gc3RvcmFnZUludGVyZmFjZSAgICAgICAgICAgLSBTdG9yYWdlIGltcGxlbWVudGF0aW9uXHJcbiAqIC0gc3lzdGVtT3B0aW9ucyAgICAgICAgICAgICAgLSBBZGRpdGlvbmFsIGxpYnJhcnkgb3B0aW9uc1xyXG4gKiAtIGNsaWVudENyZWRlbnRpYWxzICAgICAgICAgIC0gQ3JlZGVudGlhbHMgb3B0aW9ucyBmb3IgY29uZmlkZW50aWFsIGNsaWVudHNcclxuICovXHJcbmV4cG9ydCB0eXBlIENsaWVudENvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICBhdXRoT3B0aW9uczogQXV0aE9wdGlvbnMsXHJcbiAgICBzeXN0ZW1PcHRpb25zPzogU3lzdGVtT3B0aW9ucyxcclxuICAgIGxvZ2dlck9wdGlvbnM/OiBMb2dnZXJPcHRpb25zLFxyXG4gICAgc3RvcmFnZUludGVyZmFjZT86IENhY2hlTWFuYWdlcixcclxuICAgIG5ldHdvcmtJbnRlcmZhY2U/OiBJTmV0d29ya01vZHVsZSxcclxuICAgIGNyeXB0b0ludGVyZmFjZT86IElDcnlwdG8sXHJcbiAgICBjbGllbnRDcmVkZW50aWFscz86IENsaWVudENyZWRlbnRpYWxzLFxyXG4gICAgbGlicmFyeUluZm8/OiBMaWJyYXJ5SW5mb1xyXG4gICAgc2VydmVyVGVsZW1ldHJ5TWFuYWdlcj86IFNlcnZlclRlbGVtZXRyeU1hbmFnZXIgfCBudWxsLFxyXG4gICAgcGVyc2lzdGVuY2VQbHVnaW4/OiBJQ2FjaGVQbHVnaW4gfCBudWxsLFxyXG4gICAgc2VyaWFsaXphYmxlQ2FjaGU/OiBJU2VyaWFsaXphYmxlVG9rZW5DYWNoZSB8IG51bGxcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIENvbW1vbkNsaWVudENvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICBhdXRoT3B0aW9uczogUmVxdWlyZWQ8QXV0aE9wdGlvbnM+LFxyXG4gICAgc3lzdGVtT3B0aW9uczogUmVxdWlyZWQ8U3lzdGVtT3B0aW9ucz4sXHJcbiAgICBsb2dnZXJPcHRpb25zIDogUmVxdWlyZWQ8TG9nZ2VyT3B0aW9ucz4sXHJcbiAgICBzdG9yYWdlSW50ZXJmYWNlOiBDYWNoZU1hbmFnZXIsXHJcbiAgICBuZXR3b3JrSW50ZXJmYWNlIDogSU5ldHdvcmtNb2R1bGUsXHJcbiAgICBjcnlwdG9JbnRlcmZhY2UgOiBSZXF1aXJlZDxJQ3J5cHRvPixcclxuICAgIGxpYnJhcnlJbmZvIDogTGlicmFyeUluZm8sXHJcbiAgICBzZXJ2ZXJUZWxlbWV0cnlNYW5hZ2VyOiBTZXJ2ZXJUZWxlbWV0cnlNYW5hZ2VyIHwgbnVsbCxcclxuICAgIGNsaWVudENyZWRlbnRpYWxzOiBDbGllbnRDcmVkZW50aWFscyxcclxuICAgIHBlcnNpc3RlbmNlUGx1Z2luOiBJQ2FjaGVQbHVnaW4gfCBudWxsLFxyXG4gICAgc2VyaWFsaXphYmxlQ2FjaGU6IElTZXJpYWxpemFibGVUb2tlbkNhY2hlIHwgbnVsbFxyXG59O1xyXG5cclxuLyoqXHJcbiAqIFVzZSB0aGlzIHRvIGNvbmZpZ3VyZSB0aGUgYXV0aCBvcHRpb25zIGluIHRoZSBDbGllbnRDb25maWd1cmF0aW9uIG9iamVjdFxyXG4gKlxyXG4gKiAtIGNsaWVudElkICAgICAgICAgICAgICAgICAgICAtIENsaWVudCBJRCBvZiB5b3VyIGFwcCByZWdpc3RlcmVkIHdpdGggb3VyIEFwcGxpY2F0aW9uIHJlZ2lzdHJhdGlvbiBwb3J0YWwgOiBodHRwczovL3BvcnRhbC5henVyZS5jb20vI2JsYWRlL01pY3Jvc29mdF9BQURfSUFNL0FjdGl2ZURpcmVjdG9yeU1lbnVCbGFkZS9SZWdpc3RlcmVkQXBwc1ByZXZpZXcgaW4gTWljcm9zb2Z0IElkZW50aXR5IFBsYXRmb3JtXHJcbiAqIC0gYXV0aG9yaXR5ICAgICAgICAgICAgICAgICAgIC0gWW91IGNhbiBjb25maWd1cmUgYSBzcGVjaWZpYyBhdXRob3JpdHksIGRlZmF1bHRzIHRvIFwiIFwiIG9yIFwiaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnRvbmxpbmUuY29tL2NvbW1vblwiXHJcbiAqIC0ga25vd25BdXRob3JpdGllcyAgICAgICAgICAgIC0gQW4gYXJyYXkgb2YgVVJJcyB0aGF0IGFyZSBrbm93biB0byBiZSB2YWxpZC4gVXNlZCBpbiBCMkMgc2NlbmFyaW9zLlxyXG4gKiAtIGNsb3VkRGlzY292ZXJ5TWV0YWRhdGEgICAgICAtIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNsb3VkIGRpc2NvdmVyeSByZXNwb25zZS4gVXNlZCBpbiBBQUQgc2NlbmFyaW9zLlxyXG4gKiAtIGNsaWVudENhcGFiaWxpdGllcyAgICAgICAgICAtIEFycmF5IG9mIGNhcGFiaWxpdGllcyB3aGljaCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBjbGFpbXMuYWNjZXNzX3Rva2VuLnhtc19jYyByZXF1ZXN0IHByb3BlcnR5IG9uIGV2ZXJ5IG5ldHdvcmsgcmVxdWVzdC5cclxuICogLSBwcm90b2NvbE1vZGUgICAgICAgICAgICAgICAgLSBFbnVtIHRoYXQgcmVwcmVzZW50cyB0aGUgcHJvdG9jb2wgdGhhdCBtc2FsIGZvbGxvd3MuIFVzZWQgZm9yIGNvbmZpZ3VyaW5nIHByb3BlciBlbmRwb2ludHMuXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBBdXRoT3B0aW9ucyA9IHtcclxuICAgIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgICBhdXRob3JpdHk6IEF1dGhvcml0eTtcclxuICAgIGNsaWVudENhcGFiaWxpdGllcz86IEFycmF5PHN0cmluZz47XHJcbn07XHJcblxyXG4vKipcclxuICogVXNlIHRoaXMgdG8gY29uZmlndXJlIHRva2VuIHJlbmV3YWwgaW5mbyBpbiB0aGUgQ29uZmlndXJhdGlvbiBvYmplY3RcclxuICpcclxuICogLSB0b2tlblJlbmV3YWxPZmZzZXRTZWNvbmRzICAgIC0gU2V0cyB0aGUgd2luZG93IG9mIG9mZnNldCBuZWVkZWQgdG8gcmVuZXcgdGhlIHRva2VuIGJlZm9yZSBleHBpcnlcclxuICovXHJcbmV4cG9ydCB0eXBlIFN5c3RlbU9wdGlvbnMgPSB7XHJcbiAgICB0b2tlblJlbmV3YWxPZmZzZXRTZWNvbmRzPzogbnVtYmVyO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqICBVc2UgdGhpcyB0byBjb25maWd1cmUgdGhlIGxvZ2dpbmcgdGhhdCBNU0FMIGRvZXMsIGJ5IGNvbmZpZ3VyaW5nIGxvZ2dlciBvcHRpb25zIGluIHRoZSBDb25maWd1cmF0aW9uIG9iamVjdFxyXG4gKlxyXG4gKiAtIGxvZ2dlckNhbGxiYWNrICAgICAgICAgICAgICAgIC0gQ2FsbGJhY2sgZm9yIGxvZ2dlclxyXG4gKiAtIHBpaUxvZ2dpbmdFbmFibGVkICAgICAgICAgICAgIC0gU2V0cyB3aGV0aGVyIHBpaSBsb2dnaW5nIGlzIGVuYWJsZWRcclxuICogLSBsb2dMZXZlbCAgICAgICAgICAgICAgICAgICAgICAtIFNldHMgdGhlIGxldmVsIGF0IHdoaWNoIGxvZ2dpbmcgaGFwcGVuc1xyXG4gKi9cclxuZXhwb3J0IHR5cGUgTG9nZ2VyT3B0aW9ucyA9IHtcclxuICAgIGxvZ2dlckNhbGxiYWNrPzogSUxvZ2dlckNhbGxiYWNrLFxyXG4gICAgcGlpTG9nZ2luZ0VuYWJsZWQ/OiBib29sZWFuLFxyXG4gICAgbG9nTGV2ZWw/OiBMb2dMZXZlbFxyXG59O1xyXG5cclxuLyoqXHJcbiAqIExpYnJhcnktc3BlY2lmaWMgb3B0aW9uc1xyXG4gKi9cclxuZXhwb3J0IHR5cGUgTGlicmFyeUluZm8gPSB7XHJcbiAgICBza3U6IHN0cmluZyxcclxuICAgIHZlcnNpb246IHN0cmluZyxcclxuICAgIGNwdTogc3RyaW5nLFxyXG4gICAgb3M6IHN0cmluZ1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIENyZWRlbnRpYWxzIGZvciBjb25maWRlbnRpYWwgY2xpZW50c1xyXG4gKi9cclxuZXhwb3J0IHR5cGUgQ2xpZW50Q3JlZGVudGlhbHMgPSB7XHJcbiAgICBjbGllbnRTZWNyZXQ/OiBzdHJpbmcsXHJcbiAgICBjbGllbnRBc3NlcnRpb24/IDoge1xyXG4gICAgICAgIGFzc2VydGlvbjogc3RyaW5nLFxyXG4gICAgICAgIGFzc2VydGlvblR5cGU6IHN0cmluZ1xyXG4gICAgfTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NZU1RFTV9PUFRJT05TOiBSZXF1aXJlZDxTeXN0ZW1PcHRpb25zPiA9IHtcclxuICAgIHRva2VuUmVuZXdhbE9mZnNldFNlY29uZHM6IERFRkFVTFRfVE9LRU5fUkVORVdBTF9PRkZTRVRfU0VDXHJcbn07XHJcblxyXG5jb25zdCBERUZBVUxUX0xPR0dFUl9JTVBMRU1FTlRBVElPTjogUmVxdWlyZWQ8TG9nZ2VyT3B0aW9ucz4gPSB7XHJcbiAgICBsb2dnZXJDYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIC8vIGFsbG93IHVzZXJzIHRvIG5vdCBzZXQgbG9nZ2VyQ2FsbGJhY2tcclxuICAgIH0sXHJcbiAgICBwaWlMb2dnaW5nRW5hYmxlZDogZmFsc2UsXHJcbiAgICBsb2dMZXZlbDogTG9nTGV2ZWwuSW5mb1xyXG59O1xyXG5cclxuY29uc3QgREVGQVVMVF9ORVRXT1JLX0lNUExFTUVOVEFUSU9OOiBJTmV0d29ya01vZHVsZSA9IHtcclxuICAgIGFzeW5jIHNlbmRHZXRSZXF1ZXN0QXN5bmM8VD4oKTogUHJvbWlzZTxUPiB7XHJcbiAgICAgICAgY29uc3Qgbm90SW1wbEVyciA9IFwiTmV0d29yayBpbnRlcmZhY2UgLSBzZW5kR2V0UmVxdWVzdEFzeW5jKCkgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkXCI7XHJcbiAgICAgICAgdGhyb3cgQXV0aEVycm9yLmNyZWF0ZVVuZXhwZWN0ZWRFcnJvcihub3RJbXBsRXJyKTtcclxuICAgIH0sXHJcbiAgICBhc3luYyBzZW5kUG9zdFJlcXVlc3RBc3luYzxUPigpOiBQcm9taXNlPFQ+IHtcclxuICAgICAgICBjb25zdCBub3RJbXBsRXJyID0gXCJOZXR3b3JrIGludGVyZmFjZSAtIHNlbmRQb3N0UmVxdWVzdEFzeW5jKCkgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkXCI7XHJcbiAgICAgICAgdGhyb3cgQXV0aEVycm9yLmNyZWF0ZVVuZXhwZWN0ZWRFcnJvcihub3RJbXBsRXJyKTtcclxuICAgIH1cclxufTtcclxuXHJcbmNvbnN0IERFRkFVTFRfTElCUkFSWV9JTkZPOiBMaWJyYXJ5SW5mbyA9IHtcclxuICAgIHNrdTogQ29uc3RhbnRzLlNLVSxcclxuICAgIHZlcnNpb246IHZlcnNpb24sXHJcbiAgICBjcHU6IFwiXCIsXHJcbiAgICBvczogXCJcIlxyXG59O1xyXG5cclxuY29uc3QgREVGQVVMVF9DTElFTlRfQ1JFREVOVElBTFM6IENsaWVudENyZWRlbnRpYWxzID0ge1xyXG4gICAgY2xpZW50U2VjcmV0OiBcIlwiLFxyXG4gICAgY2xpZW50QXNzZXJ0aW9uOiB1bmRlZmluZWRcclxufTtcclxuXHJcbi8qKlxyXG4gKiBGdW5jdGlvbiB0aGF0IHNldHMgdGhlIGRlZmF1bHQgb3B0aW9ucyB3aGVuIG5vdCBleHBsaWNpdGx5IGNvbmZpZ3VyZWQgZnJvbSBhcHAgZGV2ZWxvcGVyXHJcbiAqXHJcbiAqIEBwYXJhbSBDb25maWd1cmF0aW9uXHJcbiAqXHJcbiAqIEByZXR1cm5zIENvbmZpZ3VyYXRpb25cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBidWlsZENsaWVudENvbmZpZ3VyYXRpb24oXHJcbiAgICB7XHJcbiAgICAgICAgYXV0aE9wdGlvbnM6IHVzZXJBdXRoT3B0aW9ucyxcclxuICAgICAgICBzeXN0ZW1PcHRpb25zOiB1c2VyU3lzdGVtT3B0aW9ucyxcclxuICAgICAgICBsb2dnZXJPcHRpb25zOiB1c2VyTG9nZ2VyT3B0aW9uLFxyXG4gICAgICAgIHN0b3JhZ2VJbnRlcmZhY2U6IHN0b3JhZ2VJbXBsZW1lbnRhdGlvbixcclxuICAgICAgICBuZXR3b3JrSW50ZXJmYWNlOiBuZXR3b3JrSW1wbGVtZW50YXRpb24sXHJcbiAgICAgICAgY3J5cHRvSW50ZXJmYWNlOiBjcnlwdG9JbXBsZW1lbnRhdGlvbixcclxuICAgICAgICBjbGllbnRDcmVkZW50aWFsczogY2xpZW50Q3JlZGVudGlhbHMsXHJcbiAgICAgICAgbGlicmFyeUluZm86IGxpYnJhcnlJbmZvLFxyXG4gICAgICAgIHNlcnZlclRlbGVtZXRyeU1hbmFnZXI6IHNlcnZlclRlbGVtZXRyeU1hbmFnZXIsXHJcbiAgICAgICAgcGVyc2lzdGVuY2VQbHVnaW46IHBlcnNpc3RlbmNlUGx1Z2luLFxyXG4gICAgICAgIHNlcmlhbGl6YWJsZUNhY2hlOiBzZXJpYWxpemFibGVDYWNoZVxyXG4gICAgfTogQ2xpZW50Q29uZmlndXJhdGlvbik6IENvbW1vbkNsaWVudENvbmZpZ3VyYXRpb24ge1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgYXV0aE9wdGlvbnM6IGJ1aWxkQXV0aE9wdGlvbnModXNlckF1dGhPcHRpb25zKSxcclxuICAgICAgICBzeXN0ZW1PcHRpb25zOiB7IC4uLkRFRkFVTFRfU1lTVEVNX09QVElPTlMsIC4uLnVzZXJTeXN0ZW1PcHRpb25zIH0sXHJcbiAgICAgICAgbG9nZ2VyT3B0aW9uczogeyAuLi5ERUZBVUxUX0xPR0dFUl9JTVBMRU1FTlRBVElPTiwgLi4udXNlckxvZ2dlck9wdGlvbiB9LFxyXG4gICAgICAgIHN0b3JhZ2VJbnRlcmZhY2U6IHN0b3JhZ2VJbXBsZW1lbnRhdGlvbiB8fCBuZXcgRGVmYXVsdFN0b3JhZ2VDbGFzcyh1c2VyQXV0aE9wdGlvbnMuY2xpZW50SWQsIERFRkFVTFRfQ1JZUFRPX0lNUExFTUVOVEFUSU9OKSxcclxuICAgICAgICBuZXR3b3JrSW50ZXJmYWNlOiBuZXR3b3JrSW1wbGVtZW50YXRpb24gfHwgREVGQVVMVF9ORVRXT1JLX0lNUExFTUVOVEFUSU9OLFxyXG4gICAgICAgIGNyeXB0b0ludGVyZmFjZTogY3J5cHRvSW1wbGVtZW50YXRpb24gfHwgREVGQVVMVF9DUllQVE9fSU1QTEVNRU5UQVRJT04sXHJcbiAgICAgICAgY2xpZW50Q3JlZGVudGlhbHM6IGNsaWVudENyZWRlbnRpYWxzIHx8IERFRkFVTFRfQ0xJRU5UX0NSRURFTlRJQUxTLFxyXG4gICAgICAgIGxpYnJhcnlJbmZvOiB7IC4uLkRFRkFVTFRfTElCUkFSWV9JTkZPLCAuLi5saWJyYXJ5SW5mbyB9LFxyXG4gICAgICAgIHNlcnZlclRlbGVtZXRyeU1hbmFnZXI6IHNlcnZlclRlbGVtZXRyeU1hbmFnZXIgfHwgbnVsbCxcclxuICAgICAgICBwZXJzaXN0ZW5jZVBsdWdpbjogcGVyc2lzdGVuY2VQbHVnaW4gfHwgbnVsbCxcclxuICAgICAgICBzZXJpYWxpemFibGVDYWNoZTogc2VyaWFsaXphYmxlQ2FjaGUgfHwgbnVsbFxyXG4gICAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnN0cnVjdCBhdXRob3B0aW9ucyBmcm9tIHRoZSBjbGllbnQgYW5kIHBsYXRmb3JtIHBhc3NlZCB2YWx1ZXNcclxuICogQHBhcmFtIGF1dGhPcHRpb25zXHJcbiAqL1xyXG5mdW5jdGlvbiBidWlsZEF1dGhPcHRpb25zKGF1dGhPcHRpb25zOiBBdXRoT3B0aW9ucyk6IFJlcXVpcmVkPEF1dGhPcHRpb25zPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGNsaWVudENhcGFiaWxpdGllczogW10sXHJcbiAgICAgICAgLi4uYXV0aE9wdGlvbnNcclxuICAgIH07XHJcbn1cclxuIiwiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBBdXRoRXJyb3IgfSBmcm9tIFwiLi9BdXRoRXJyb3JcIjtcclxuXHJcbi8qKlxyXG4gKiBFcnJvciB0aHJvd24gd2hlbiB0aGVyZSBpcyBhbiBlcnJvciB3aXRoIHRoZSBzZXJ2ZXIgY29kZSwgZm9yIGV4YW1wbGUsIHVuYXZhaWxhYmlsaXR5LlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNlcnZlckVycm9yIGV4dGVuZHMgQXV0aEVycm9yIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihlcnJvckNvZGU/OiBzdHJpbmcsIGVycm9yTWVzc2FnZT86IHN0cmluZywgc3ViRXJyb3I/OiBzdHJpbmcpIHtcclxuICAgICAgICBzdXBlcihlcnJvckNvZGUsIGVycm9yTWVzc2FnZSwgc3ViRXJyb3IpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IFwiU2VydmVyRXJyb3JcIjtcclxuXHJcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFNlcnZlckVycm9yLnByb3RvdHlwZSk7XHJcbiAgICB9XHJcbn1cclxuIiwiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBOZXR3b3JrUmVzcG9uc2UgfSBmcm9tIFwiLi9OZXR3b3JrTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBTZXJ2ZXJBdXRob3JpemF0aW9uVG9rZW5SZXNwb25zZSB9IGZyb20gXCIuLi9yZXNwb25zZS9TZXJ2ZXJBdXRob3JpemF0aW9uVG9rZW5SZXNwb25zZVwiO1xyXG5pbXBvcnQgeyBIZWFkZXJOYW1lcywgQ2FjaGVTY2hlbWFUeXBlLCBUaHJvdHRsaW5nQ29uc3RhbnRzLCBDb25zdGFudHMgfSBmcm9tIFwiLi4vdXRpbHMvQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IENhY2hlTWFuYWdlciB9IGZyb20gXCIuLi9jYWNoZS9DYWNoZU1hbmFnZXJcIjtcclxuaW1wb3J0IHsgU2VydmVyRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvU2VydmVyRXJyb3JcIjtcclxuaW1wb3J0IHsgUmVxdWVzdFRodW1icHJpbnQgfSBmcm9tIFwiLi9SZXF1ZXN0VGh1bWJwcmludFwiO1xyXG5pbXBvcnQgeyBUaHJvdHRsaW5nRW50aXR5IH0gZnJvbSBcIi4uL2NhY2hlL2VudGl0aWVzL1Rocm90dGxpbmdFbnRpdHlcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBUaHJvdHRsaW5nVXRpbHMge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlcGFyZXMgYSBSZXF1ZXN0VGh1bWJwcmludCB0byBiZSBzdG9yZWQgYXMgYSBrZXkuXHJcbiAgICAgKiBAcGFyYW0gdGh1bWJwcmludFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2VuZXJhdGVUaHJvdHRsaW5nU3RvcmFnZUtleSh0aHVtYnByaW50OiBSZXF1ZXN0VGh1bWJwcmludCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGAke1Rocm90dGxpbmdDb25zdGFudHMuVEhST1RUTElOR19QUkVGSVh9LiR7SlNPTi5zdHJpbmdpZnkodGh1bWJwcmludCl9YDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcmZvcm1zIG5lY2Vzc2FyeSB0aHJvdHRsaW5nIGNoZWNrcyBiZWZvcmUgYSBuZXR3b3JrIHJlcXVlc3QuXHJcbiAgICAgKiBAcGFyYW0gY2FjaGVNYW5hZ2VyXHJcbiAgICAgKiBAcGFyYW0gdGh1bWJwcmludFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcHJlUHJvY2VzcyhjYWNoZU1hbmFnZXI6IENhY2hlTWFuYWdlciwgdGh1bWJwcmludDogUmVxdWVzdFRodW1icHJpbnQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBrZXkgPSBUaHJvdHRsaW5nVXRpbHMuZ2VuZXJhdGVUaHJvdHRsaW5nU3RvcmFnZUtleSh0aHVtYnByaW50KTtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGNhY2hlTWFuYWdlci5nZXRUaHJvdHRsaW5nQ2FjaGUoa2V5KTtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS50aHJvdHRsZVRpbWUgPCBEYXRlLm5vdygpKSB7XHJcbiAgICAgICAgICAgICAgICBjYWNoZU1hbmFnZXIucmVtb3ZlSXRlbShrZXksIENhY2hlU2NoZW1hVHlwZS5USFJPVFRMSU5HKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgU2VydmVyRXJyb3IodmFsdWUuZXJyb3JDb2Rlcz8uam9pbihcIiBcIikgfHwgQ29uc3RhbnRzLkVNUFRZX1NUUklORywgdmFsdWUuZXJyb3JNZXNzYWdlLCB2YWx1ZS5zdWJFcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGVyZm9ybXMgbmVjZXNzYXJ5IHRocm90dGxpbmcgY2hlY2tzIGFmdGVyIGEgbmV0d29yayByZXF1ZXN0LlxyXG4gICAgICogQHBhcmFtIGNhY2hlTWFuYWdlclxyXG4gICAgICogQHBhcmFtIHRodW1icHJpbnRcclxuICAgICAqIEBwYXJhbSByZXNwb25zZVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcG9zdFByb2Nlc3MoY2FjaGVNYW5hZ2VyOiBDYWNoZU1hbmFnZXIsIHRodW1icHJpbnQ6IFJlcXVlc3RUaHVtYnByaW50LCByZXNwb25zZTogTmV0d29ya1Jlc3BvbnNlPFNlcnZlckF1dGhvcml6YXRpb25Ub2tlblJlc3BvbnNlPik6IHZvaWQge1xyXG4gICAgICAgIGlmIChUaHJvdHRsaW5nVXRpbHMuY2hlY2tSZXNwb25zZVN0YXR1cyhyZXNwb25zZSkgfHwgVGhyb3R0bGluZ1V0aWxzLmNoZWNrUmVzcG9uc2VGb3JSZXRyeUFmdGVyKHJlc3BvbnNlKSkge1xyXG4gICAgICAgICAgICBjb25zdCB0aHVtYnByaW50VmFsdWU6IFRocm90dGxpbmdFbnRpdHkgPSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdHRsZVRpbWU6IFRocm90dGxpbmdVdGlscy5jYWxjdWxhdGVUaHJvdHRsZVRpbWUocGFyc2VJbnQocmVzcG9uc2UuaGVhZGVyc1tIZWFkZXJOYW1lcy5SRVRSWV9BRlRFUl0pKSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiByZXNwb25zZS5ib2R5LmVycm9yLFxyXG4gICAgICAgICAgICAgICAgZXJyb3JDb2RlczogcmVzcG9uc2UuYm9keS5lcnJvcl9jb2RlcyxcclxuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZTogcmVzcG9uc2UuYm9keS5lcnJvcl9kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgIHN1YkVycm9yOiByZXNwb25zZS5ib2R5LnN1YmVycm9yXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNhY2hlTWFuYWdlci5zZXRUaHJvdHRsaW5nQ2FjaGUoXHJcbiAgICAgICAgICAgICAgICBUaHJvdHRsaW5nVXRpbHMuZ2VuZXJhdGVUaHJvdHRsaW5nU3RvcmFnZUtleSh0aHVtYnByaW50KSxcclxuICAgICAgICAgICAgICAgIHRodW1icHJpbnRWYWx1ZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBhIE5ldHdvcmtSZXNwb25zZSBvYmplY3QncyBzdGF0dXMgY29kZXMgYWdhaW5zdCA0Mjkgb3IgNXh4XHJcbiAgICAgKiBAcGFyYW0gcmVzcG9uc2VcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNoZWNrUmVzcG9uc2VTdGF0dXMocmVzcG9uc2U6IE5ldHdvcmtSZXNwb25zZTxTZXJ2ZXJBdXRob3JpemF0aW9uVG9rZW5SZXNwb25zZT4pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2Uuc3RhdHVzID09PSA0MjkgfHwgcmVzcG9uc2Uuc3RhdHVzID49IDUwMCAmJiByZXNwb25zZS5zdGF0dXMgPCA2MDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3MgYSBOZXR3b3JrUmVzcG9uc2Ugb2JqZWN0J3MgUmV0cnlBZnRlciBoZWFkZXJcclxuICAgICAqIEBwYXJhbSByZXNwb25zZVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY2hlY2tSZXNwb25zZUZvclJldHJ5QWZ0ZXIocmVzcG9uc2U6IE5ldHdvcmtSZXNwb25zZTxTZXJ2ZXJBdXRob3JpemF0aW9uVG9rZW5SZXNwb25zZT4pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAocmVzcG9uc2UuaGVhZGVycykge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuaGVhZGVycy5oYXNPd25Qcm9wZXJ0eShIZWFkZXJOYW1lcy5SRVRSWV9BRlRFUikgJiYgKHJlc3BvbnNlLnN0YXR1cyA8IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPj0gMzAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgVW5peC10aW1lIHZhbHVlIGZvciBhIHRocm90dGxlIHRvIGV4cGlyZSBnaXZlbiB0aHJvdHRsZVRpbWUgaW4gc2Vjb25kcy5cclxuICAgICAqIEBwYXJhbSB0aHJvdHRsZVRpbWVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNhbGN1bGF0ZVRocm90dGxlVGltZSh0aHJvdHRsZVRpbWU6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgaWYodGhyb3R0bGVUaW1lIDw9IDApIHtcclxuICAgICAgICAgICAgdGhyb3R0bGVUaW1lID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudFNlY29uZHMgPSBEYXRlLm5vdygpIC8gMTAwMDtcclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLm1pbihcclxuICAgICAgICAgICAgY3VycmVudFNlY29uZHMgKyAodGhyb3R0bGVUaW1lIHx8IFRocm90dGxpbmdDb25zdGFudHMuREVGQVVMVF9USFJPVFRMRV9USU1FX1NFQ09ORFMpLFxyXG4gICAgICAgICAgICBjdXJyZW50U2Vjb25kcyArIFRocm90dGxpbmdDb25zdGFudHMuREVGQVVMVF9NQVhfVEhST1RUTEVfVElNRV9TRUNPTkRTXHJcbiAgICAgICAgKSAqIDEwMDApO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByZW1vdmVUaHJvdHRsZShjYWNoZU1hbmFnZXI6IENhY2hlTWFuYWdlciwgY2xpZW50SWQ6IHN0cmluZywgYXV0aG9yaXR5OiBzdHJpbmcsIHNjb3BlczogQXJyYXk8c3RyaW5nPiwgaG9tZUFjY291bnRJZGVudGlmaWVyPzogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgdGh1bWJwcmludDogUmVxdWVzdFRodW1icHJpbnQgPSB7XHJcbiAgICAgICAgICAgIGNsaWVudElkLFxyXG4gICAgICAgICAgICBhdXRob3JpdHksXHJcbiAgICAgICAgICAgIHNjb3BlcyxcclxuICAgICAgICAgICAgaG9tZUFjY291bnRJZGVudGlmaWVyXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZW5lcmF0ZVRocm90dGxpbmdTdG9yYWdlS2V5KHRodW1icHJpbnQpO1xyXG4gICAgICAgIHJldHVybiBjYWNoZU1hbmFnZXIucmVtb3ZlSXRlbShrZXksIENhY2hlU2NoZW1hVHlwZS5USFJPVFRMSU5HKTtcclxuICAgIH1cclxufVxyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IElOZXR3b3JrTW9kdWxlLCBOZXR3b3JrUmVxdWVzdE9wdGlvbnMgfSBmcm9tIFwiLi9JTmV0d29ya01vZHVsZVwiO1xyXG5pbXBvcnQgeyBSZXF1ZXN0VGh1bWJwcmludCB9IGZyb20gXCIuL1JlcXVlc3RUaHVtYnByaW50XCI7XHJcbmltcG9ydCB7IFRocm90dGxpbmdVdGlscyB9IGZyb20gXCIuL1Rocm90dGxpbmdVdGlsc1wiO1xyXG5pbXBvcnQgeyBDYWNoZU1hbmFnZXIgfSBmcm9tIFwiLi4vY2FjaGUvQ2FjaGVNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IENsaWVudEF1dGhFcnJvciB9IGZyb20gXCIuLi9lcnJvci9DbGllbnRBdXRoRXJyb3JcIjtcclxuaW1wb3J0IHsgQXV0aEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0F1dGhFcnJvclwiO1xyXG5cclxuZXhwb3J0IHR5cGUgTmV0d29ya1Jlc3BvbnNlPFQ+ID0ge1xyXG4gICAgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuICAgIGJvZHk6IFQ7XHJcbiAgICBzdGF0dXM6IG51bWJlcjtcclxufTtcclxuXHJcbmV4cG9ydCBjbGFzcyBOZXR3b3JrTWFuYWdlciB7XHJcbiAgICBwcml2YXRlIG5ldHdvcmtDbGllbnQ6IElOZXR3b3JrTW9kdWxlO1xyXG4gICAgcHJpdmF0ZSBjYWNoZU1hbmFnZXI6IENhY2hlTWFuYWdlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihuZXR3b3JrQ2xpZW50OiBJTmV0d29ya01vZHVsZSwgY2FjaGVNYW5hZ2VyOiBDYWNoZU1hbmFnZXIpIHtcclxuICAgICAgICB0aGlzLm5ldHdvcmtDbGllbnQgPSBuZXR3b3JrQ2xpZW50O1xyXG4gICAgICAgIHRoaXMuY2FjaGVNYW5hZ2VyID0gY2FjaGVNYW5hZ2VyO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV3JhcHMgc2VuZFBvc3RSZXF1ZXN0QXN5bmMgd2l0aCBuZWNlc3NhcnkgcHJlZmxpZ2h0IGFuZCBwb3N0ZmxpZ2h0IGxvZ2ljXHJcbiAgICAgKiBAcGFyYW0gdGh1bWJwcmludFxyXG4gICAgICogQHBhcmFtIHRva2VuRW5kcG9pbnRcclxuICAgICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIHNlbmRQb3N0UmVxdWVzdDxUPih0aHVtYnByaW50OiBSZXF1ZXN0VGh1bWJwcmludCwgdG9rZW5FbmRwb2ludDogc3RyaW5nLCBvcHRpb25zOiBOZXR3b3JrUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPE5ldHdvcmtSZXNwb25zZTxUPj4ge1xyXG4gICAgICAgIFRocm90dGxpbmdVdGlscy5wcmVQcm9jZXNzKHRoaXMuY2FjaGVNYW5hZ2VyLCB0aHVtYnByaW50KTtcclxuXHJcbiAgICAgICAgbGV0IHJlc3BvbnNlO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5uZXR3b3JrQ2xpZW50LnNlbmRQb3N0UmVxdWVzdEFzeW5jPFQ+KHRva2VuRW5kcG9pbnQsIG9wdGlvbnMpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBdXRoRXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBDbGllbnRBdXRoRXJyb3IuY3JlYXRlTmV0d29ya0Vycm9yKHRva2VuRW5kcG9pbnQsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBUaHJvdHRsaW5nVXRpbHMucG9zdFByb2Nlc3ModGhpcy5jYWNoZU1hbmFnZXIsIHRodW1icHJpbnQsIHJlc3BvbnNlKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfVxyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ2xpZW50Q29uZmlndXJhdGlvbiwgYnVpbGRDbGllbnRDb25maWd1cmF0aW9uLCBDb21tb25DbGllbnRDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uL2NvbmZpZy9DbGllbnRDb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IElOZXR3b3JrTW9kdWxlIH0gZnJvbSBcIi4uL25ldHdvcmsvSU5ldHdvcmtNb2R1bGVcIjtcclxuaW1wb3J0IHsgTmV0d29ya01hbmFnZXIsIE5ldHdvcmtSZXNwb25zZSB9IGZyb20gXCIuLi9uZXR3b3JrL05ldHdvcmtNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IElDcnlwdG8gfSBmcm9tIFwiLi4vY3J5cHRvL0lDcnlwdG9cIjtcclxuaW1wb3J0IHsgQXV0aG9yaXR5IH0gZnJvbSBcIi4uL2F1dGhvcml0eS9BdXRob3JpdHlcIjtcclxuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSBcIi4uL2xvZ2dlci9Mb2dnZXJcIjtcclxuaW1wb3J0IHsgQUFEU2VydmVyUGFyYW1LZXlzLCBDb25zdGFudHMsIEhlYWRlck5hbWVzIH0gZnJvbSBcIi4uL3V0aWxzL0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBTZXJ2ZXJBdXRob3JpemF0aW9uVG9rZW5SZXNwb25zZSB9IGZyb20gXCIuLi9yZXNwb25zZS9TZXJ2ZXJBdXRob3JpemF0aW9uVG9rZW5SZXNwb25zZVwiO1xyXG5pbXBvcnQgeyBDYWNoZU1hbmFnZXIgfSBmcm9tIFwiLi4vY2FjaGUvQ2FjaGVNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IFNlcnZlclRlbGVtZXRyeU1hbmFnZXIgfSBmcm9tIFwiLi4vdGVsZW1ldHJ5L3NlcnZlci9TZXJ2ZXJUZWxlbWV0cnlNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IFJlcXVlc3RUaHVtYnByaW50IH0gZnJvbSBcIi4uL25ldHdvcmsvUmVxdWVzdFRodW1icHJpbnRcIjtcclxuaW1wb3J0IHsgdmVyc2lvbiwgbmFtZSB9IGZyb20gXCIuLi9wYWNrYWdlTWV0YWRhdGFcIjtcclxuaW1wb3J0IHsgQ2xpZW50QXV0aEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0NsaWVudEF1dGhFcnJvclwiO1xyXG5cclxuLyoqXHJcbiAqIEJhc2UgYXBwbGljYXRpb24gY2xhc3Mgd2hpY2ggd2lsbCBjb25zdHJ1Y3QgcmVxdWVzdHMgdG8gc2VuZCB0byBhbmQgaGFuZGxlIHJlc3BvbnNlcyBmcm9tIHRoZSBNaWNyb3NvZnQgU1RTIHVzaW5nIHRoZSBhdXRob3JpemF0aW9uIGNvZGUgZmxvdy5cclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ2xpZW50IHtcclxuICAgIC8vIExvZ2dlciBvYmplY3RcclxuICAgIHB1YmxpYyBsb2dnZXI6IExvZ2dlcjtcclxuXHJcbiAgICAvLyBBcHBsaWNhdGlvbiBjb25maWdcclxuICAgIHByb3RlY3RlZCBjb25maWc6IENvbW1vbkNsaWVudENvbmZpZ3VyYXRpb247XHJcblxyXG4gICAgLy8gQ3J5cHRvIEludGVyZmFjZVxyXG4gICAgcHJvdGVjdGVkIGNyeXB0b1V0aWxzOiBJQ3J5cHRvO1xyXG5cclxuICAgIC8vIFN0b3JhZ2UgSW50ZXJmYWNlXHJcbiAgICBwcm90ZWN0ZWQgY2FjaGVNYW5hZ2VyOiBDYWNoZU1hbmFnZXI7XHJcblxyXG4gICAgLy8gTmV0d29yayBJbnRlcmZhY2VcclxuICAgIHByb3RlY3RlZCBuZXR3b3JrQ2xpZW50OiBJTmV0d29ya01vZHVsZTtcclxuXHJcbiAgICAvLyBTZXJ2ZXIgVGVsZW1ldHJ5IE1hbmFnZXJcclxuICAgIHByb3RlY3RlZCBzZXJ2ZXJUZWxlbWV0cnlNYW5hZ2VyOiBTZXJ2ZXJUZWxlbWV0cnlNYW5hZ2VyIHwgbnVsbDtcclxuXHJcbiAgICAvLyBOZXR3b3JrIE1hbmFnZXJcclxuICAgIHByb3RlY3RlZCBuZXR3b3JrTWFuYWdlcjogTmV0d29ya01hbmFnZXI7XHJcblxyXG4gICAgLy8gRGVmYXVsdCBhdXRob3JpdHkgb2JqZWN0XHJcbiAgICBwdWJsaWMgYXV0aG9yaXR5OiBBdXRob3JpdHk7XHJcblxyXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGNvbmZpZ3VyYXRpb246IENsaWVudENvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICAvLyBTZXQgdGhlIGNvbmZpZ3VyYXRpb25cclxuICAgICAgICB0aGlzLmNvbmZpZyA9IGJ1aWxkQ2xpZW50Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTtcclxuXHJcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgbG9nZ2VyXHJcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMuY29uZmlnLmxvZ2dlck9wdGlvbnMsIG5hbWUsIHZlcnNpb24pO1xyXG5cclxuICAgICAgICAvLyBJbml0aWFsaXplIGNyeXB0b1xyXG4gICAgICAgIHRoaXMuY3J5cHRvVXRpbHMgPSB0aGlzLmNvbmZpZy5jcnlwdG9JbnRlcmZhY2U7XHJcblxyXG4gICAgICAgIC8vIEluaXRpYWxpemUgc3RvcmFnZSBpbnRlcmZhY2VcclxuICAgICAgICB0aGlzLmNhY2hlTWFuYWdlciA9IHRoaXMuY29uZmlnLnN0b3JhZ2VJbnRlcmZhY2U7XHJcblxyXG4gICAgICAgIC8vIFNldCB0aGUgbmV0d29yayBpbnRlcmZhY2VcclxuICAgICAgICB0aGlzLm5ldHdvcmtDbGllbnQgPSB0aGlzLmNvbmZpZy5uZXR3b3JrSW50ZXJmYWNlO1xyXG5cclxuICAgICAgICAvLyBTZXQgdGhlIE5ldHdvcmtNYW5hZ2VyXHJcbiAgICAgICAgdGhpcy5uZXR3b3JrTWFuYWdlciA9IG5ldyBOZXR3b3JrTWFuYWdlcih0aGlzLm5ldHdvcmtDbGllbnQsIHRoaXMuY2FjaGVNYW5hZ2VyKTtcclxuXHJcbiAgICAgICAgLy8gU2V0IFRlbGVtZXRyeU1hbmFnZXJcclxuICAgICAgICB0aGlzLnNlcnZlclRlbGVtZXRyeU1hbmFnZXIgPSB0aGlzLmNvbmZpZy5zZXJ2ZXJUZWxlbWV0cnlNYW5hZ2VyO1xyXG5cclxuICAgICAgICAvLyBzZXQgQXV0aG9yaXR5XHJcbiAgICAgICAgdGhpcy5hdXRob3JpdHkgPSB0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5hdXRob3JpdHk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGRlZmF1bHQgaGVhZGVycyBmb3IgcmVxdWVzdHMgdG8gdG9rZW4gZW5kcG9pbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNyZWF0ZURlZmF1bHRUb2tlblJlcXVlc3RIZWFkZXJzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmNyZWF0ZURlZmF1bHRMaWJyYXJ5SGVhZGVycygpO1xyXG4gICAgICAgIGhlYWRlcnNbSGVhZGVyTmFtZXMuQ09OVEVOVF9UWVBFXSA9IENvbnN0YW50cy5VUkxfRk9STV9DT05URU5UX1RZUEU7XHJcbiAgICAgICAgaGVhZGVyc1tIZWFkZXJOYW1lcy5YX01TX0xJQl9DQVBBQklMSVRZXSA9IEhlYWRlck5hbWVzLlhfTVNfTElCX0NBUEFCSUxJVFlfVkFMVUU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlcnZlclRlbGVtZXRyeU1hbmFnZXIpIHtcclxuICAgICAgICAgICAgaGVhZGVyc1tIZWFkZXJOYW1lcy5YX0NMSUVOVF9DVVJSX1RFTEVNXSA9IHRoaXMuc2VydmVyVGVsZW1ldHJ5TWFuYWdlci5nZW5lcmF0ZUN1cnJlbnRSZXF1ZXN0SGVhZGVyVmFsdWUoKTtcclxuICAgICAgICAgICAgaGVhZGVyc1tIZWFkZXJOYW1lcy5YX0NMSUVOVF9MQVNUX1RFTEVNXSA9IHRoaXMuc2VydmVyVGVsZW1ldHJ5TWFuYWdlci5nZW5lcmF0ZUxhc3RSZXF1ZXN0SGVhZGVyVmFsdWUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBoZWFkZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYWRkTGlicmFyeURhdGFcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNyZWF0ZURlZmF1bHRMaWJyYXJ5SGVhZGVycygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgICAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XHJcblxyXG4gICAgICAgIC8vIGNsaWVudCBpbmZvIGhlYWRlcnNcclxuICAgICAgICBoZWFkZXJzW0FBRFNlcnZlclBhcmFtS2V5cy5YX0NMSUVOVF9TS1VdID0gdGhpcy5jb25maWcubGlicmFyeUluZm8uc2t1O1xyXG4gICAgICAgIGhlYWRlcnNbQUFEU2VydmVyUGFyYW1LZXlzLlhfQ0xJRU5UX1ZFUl0gPSB0aGlzLmNvbmZpZy5saWJyYXJ5SW5mby52ZXJzaW9uO1xyXG4gICAgICAgIGhlYWRlcnNbQUFEU2VydmVyUGFyYW1LZXlzLlhfQ0xJRU5UX09TXSA9IHRoaXMuY29uZmlnLmxpYnJhcnlJbmZvLm9zO1xyXG4gICAgICAgIGhlYWRlcnNbQUFEU2VydmVyUGFyYW1LZXlzLlhfQ0xJRU5UX0NQVV0gPSB0aGlzLmNvbmZpZy5saWJyYXJ5SW5mby5jcHU7XHJcblxyXG4gICAgICAgIHJldHVybiBoZWFkZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSHR0cCBwb3N0IHRvIHRva2VuIGVuZHBvaW50XHJcbiAgICAgKiBAcGFyYW0gdG9rZW5FbmRwb2ludFxyXG4gICAgICogQHBhcmFtIHF1ZXJ5U3RyaW5nXHJcbiAgICAgKiBAcGFyYW0gaGVhZGVyc1xyXG4gICAgICogQHBhcmFtIHRodW1icHJpbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGFzeW5jIGV4ZWN1dGVQb3N0VG9Ub2tlbkVuZHBvaW50KHRva2VuRW5kcG9pbnQ6IHN0cmluZywgcXVlcnlTdHJpbmc6IHN0cmluZywgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgdGh1bWJwcmludDogUmVxdWVzdFRodW1icHJpbnQpOiBQcm9taXNlPE5ldHdvcmtSZXNwb25zZTxTZXJ2ZXJBdXRob3JpemF0aW9uVG9rZW5SZXNwb25zZT4+IHtcclxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMubmV0d29ya01hbmFnZXIuc2VuZFBvc3RSZXF1ZXN0PFNlcnZlckF1dGhvcml6YXRpb25Ub2tlblJlc3BvbnNlPihcclxuICAgICAgICAgICAgdGh1bWJwcmludCxcclxuICAgICAgICAgICAgdG9rZW5FbmRwb2ludCxcclxuICAgICAgICAgICAgeyBib2R5OiBxdWVyeVN0cmluZywgaGVhZGVyczogaGVhZGVycyB9XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLnNlcnZlclRlbGVtZXRyeU1hbmFnZXIgJiYgcmVzcG9uc2Uuc3RhdHVzIDwgNTAwICYmIHJlc3BvbnNlLnN0YXR1cyAhPT0gNDI5KSB7XHJcbiAgICAgICAgICAgIC8vIFRlbGVtZXRyeSBkYXRhIHN1Y2Nlc3NmdWxseSBsb2dnZWQgYnkgc2VydmVyLCBjbGVhciBUZWxlbWV0cnkgY2FjaGVcclxuICAgICAgICAgICAgdGhpcy5jb25maWcuc2VydmVyVGVsZW1ldHJ5TWFuYWdlci5jbGVhclRlbGVtZXRyeUNhY2hlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIHRoZSBhdXRob3JpdHkgb2JqZWN0IG9mIHRoZSBjbGllbnQuIEVuZHBvaW50IGRpc2NvdmVyeSBtdXN0IGJlIGNvbXBsZXRlZC5cclxuICAgICAqIEBwYXJhbSB1cGRhdGVkQXV0aG9yaXR5IFxyXG4gICAgICovXHJcbiAgICB1cGRhdGVBdXRob3JpdHkodXBkYXRlZEF1dGhvcml0eTogQXV0aG9yaXR5KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF1cGRhdGVkQXV0aG9yaXR5LmRpc2NvdmVyeUNvbXBsZXRlKCkpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZUVuZHBvaW50RGlzY292ZXJ5SW5jb21wbGV0ZUVycm9yKFwiVXBkYXRlZCBhdXRob3JpdHkgaGFzIG5vdCBjb21wbGV0ZWQgZW5kcG9pbnQgZGlzY292ZXJ5LlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hdXRob3JpdHkgPSB1cGRhdGVkQXV0aG9yaXR5O1xyXG4gICAgfVxyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tIFwiLi4vdXRpbHMvU3RyaW5nVXRpbHNcIjtcclxuaW1wb3J0IHsgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0NsaWVudENvbmZpZ3VyYXRpb25FcnJvclwiO1xyXG5pbXBvcnQgeyBQcm9tcHRWYWx1ZSwgQ29kZUNoYWxsZW5nZU1ldGhvZFZhbHVlc30gZnJvbSBcIi4uL3V0aWxzL0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBTdHJpbmdEaWN0IH0gZnJvbSBcIi4uL3V0aWxzL01zYWxUeXBlc1wiO1xyXG5cclxuLyoqXHJcbiAqIFZhbGlkYXRlcyBzZXJ2ZXIgY29uc3VtYWJsZSBwYXJhbXMgZnJvbSB0aGUgXCJyZXF1ZXN0XCIgb2JqZWN0c1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFJlcXVlc3RWYWxpZGF0b3Ige1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXRpbGl0eSB0byBjaGVjayBpZiB0aGUgYHJlZGlyZWN0VXJpYCBpbiB0aGUgcmVxdWVzdCBpcyBhIG5vbi1udWxsIHZhbHVlXHJcbiAgICAgKiBAcGFyYW0gcmVkaXJlY3RVcmlcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHZhbGlkYXRlUmVkaXJlY3RVcmkocmVkaXJlY3RVcmk6IHN0cmluZykgOiB2b2lkIHtcclxuICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNFbXB0eShyZWRpcmVjdFVyaSkpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yLmNyZWF0ZVJlZGlyZWN0VXJpRW1wdHlFcnJvcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFV0aWxpdHkgdG8gdmFsaWRhdGUgcHJvbXB0IHNlbnQgYnkgdGhlIHVzZXIgaW4gdGhlIHJlcXVlc3RcclxuICAgICAqIEBwYXJhbSBwcm9tcHRcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHZhbGlkYXRlUHJvbXB0KHByb21wdDogc3RyaW5nKSA6IHZvaWQge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgUHJvbXB0VmFsdWUuTE9HSU4sXHJcbiAgICAgICAgICAgICAgICBQcm9tcHRWYWx1ZS5TRUxFQ1RfQUNDT1VOVCxcclxuICAgICAgICAgICAgICAgIFByb21wdFZhbHVlLkNPTlNFTlQsXHJcbiAgICAgICAgICAgICAgICBQcm9tcHRWYWx1ZS5OT05FXHJcbiAgICAgICAgICAgIF0uaW5kZXhPZihwcm9tcHQpIDwgMFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRDb25maWd1cmF0aW9uRXJyb3IuY3JlYXRlSW52YWxpZFByb21wdEVycm9yKHByb21wdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyB2YWxpZGF0ZUNsYWltcyhjbGFpbXM6IHN0cmluZykgOiB2b2lkIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBKU09OLnBhcnNlKGNsYWltcyk7XHJcbiAgICAgICAgfSBjYXRjaChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudENvbmZpZ3VyYXRpb25FcnJvci5jcmVhdGVJbnZhbGlkQ2xhaW1zUmVxdWVzdEVycm9yKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXRpbGl0eSB0byB2YWxpZGF0ZSBjb2RlX2NoYWxsZW5nZSBhbmQgY29kZV9jaGFsbGVuZ2VfbWV0aG9kXHJcbiAgICAgKiBAcGFyYW0gY29kZUNoYWxsZW5nZVxyXG4gICAgICogQHBhcmFtIGNvZGVDaGFsbGVuZ2VNZXRob2RcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHZhbGlkYXRlQ29kZUNoYWxsZW5nZVBhcmFtcyhjb2RlQ2hhbGxlbmdlOiBzdHJpbmcsIGNvZGVDaGFsbGVuZ2VNZXRob2Q6IHN0cmluZykgOiB2b2lkICB7XHJcbiAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzRW1wdHkoY29kZUNoYWxsZW5nZSkgfHwgU3RyaW5nVXRpbHMuaXNFbXB0eShjb2RlQ2hhbGxlbmdlTWV0aG9kKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRDb25maWd1cmF0aW9uRXJyb3IuY3JlYXRlSW52YWxpZENvZGVDaGFsbGVuZ2VQYXJhbXNFcnJvcigpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVDb2RlQ2hhbGxlbmdlTWV0aG9kKGNvZGVDaGFsbGVuZ2VNZXRob2QpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFV0aWxpdHkgdG8gdmFsaWRhdGUgY29kZV9jaGFsbGVuZ2VfbWV0aG9kXHJcbiAgICAgKiBAcGFyYW0gY29kZUNoYWxsZW5nZU1ldGhvZFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgdmFsaWRhdGVDb2RlQ2hhbGxlbmdlTWV0aG9kKGNvZGVDaGFsbGVuZ2VNZXRob2Q6IHN0cmluZykgOiB2b2lkIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgIENvZGVDaGFsbGVuZ2VNZXRob2RWYWx1ZXMuUExBSU4sXHJcbiAgICAgICAgICAgICAgICBDb2RlQ2hhbGxlbmdlTWV0aG9kVmFsdWVzLlMyNTZcclxuICAgICAgICAgICAgXS5pbmRleE9mKGNvZGVDaGFsbGVuZ2VNZXRob2QpIDwgMFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRDb25maWd1cmF0aW9uRXJyb3IuY3JlYXRlSW52YWxpZENvZGVDaGFsbGVuZ2VNZXRob2RFcnJvcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgdW5uZWNlc3Nhcnkgb3IgZHVwbGljYXRlIHF1ZXJ5IHBhcmFtZXRlcnMgZnJvbSBleHRyYVF1ZXJ5UGFyYW1ldGVyc1xyXG4gICAgICogQHBhcmFtIHJlcXVlc3RcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHNhbml0aXplRVFQYXJhbXMoZVFQYXJhbXM6IFN0cmluZ0RpY3QsIHF1ZXJ5UGFyYW1zOiBNYXA8c3RyaW5nLCBzdHJpbmc+KSA6IFN0cmluZ0RpY3Qge1xyXG4gICAgICAgIGlmICghZVFQYXJhbXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIGFueSBxdWVyeSBwYXJhbWV0ZXJzIGFscmVhZHkgaW5jbHVkZWQgaW4gU1NPIHBhcmFtc1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVRUGFyYW1zW2tleV0pIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBlUVBhcmFtc1trZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBlUVBhcmFtcztcclxuICAgIH1cclxufVxyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEFBRFNlcnZlclBhcmFtS2V5cywgQ29uc3RhbnRzLCBSZXNwb25zZU1vZGUsIFNTT1R5cGVzLCBDbGllbnRJbmZvLCBBdXRoZW50aWNhdGlvblNjaGVtZSwgQ2xhaW1zUmVxdWVzdEtleXMsIFBhc3N3b3JkR3JhbnRDb25zdGFudHMsIE9JRENfREVGQVVMVF9TQ09QRVN9IGZyb20gXCIuLi91dGlscy9Db25zdGFudHNcIjtcclxuaW1wb3J0IHsgU2NvcGVTZXQgfSBmcm9tIFwiLi9TY29wZVNldFwiO1xyXG5pbXBvcnQgeyBDbGllbnRDb25maWd1cmF0aW9uRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yXCI7XHJcbmltcG9ydCB7IFN0cmluZ0RpY3QgfSBmcm9tIFwiLi4vdXRpbHMvTXNhbFR5cGVzXCI7XHJcbmltcG9ydCB7IFJlcXVlc3RWYWxpZGF0b3IgfSBmcm9tIFwiLi9SZXF1ZXN0VmFsaWRhdG9yXCI7XHJcbmltcG9ydCB7IExpYnJhcnlJbmZvIH0gZnJvbSBcIi4uL2NvbmZpZy9DbGllbnRDb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IFN0cmluZ1V0aWxzIH0gZnJvbSBcIi4uL3V0aWxzL1N0cmluZ1V0aWxzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUmVxdWVzdFBhcmFtZXRlckJ1aWxkZXIge1xyXG5cclxuICAgIHByaXZhdGUgcGFyYW1ldGVyczogTWFwPHN0cmluZywgc3RyaW5nPjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYWRkIHJlc3BvbnNlX3R5cGUgPSBjb2RlXHJcbiAgICAgKi9cclxuICAgIGFkZFJlc3BvbnNlVHlwZUNvZGUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChcclxuICAgICAgICAgICAgQUFEU2VydmVyUGFyYW1LZXlzLlJFU1BPTlNFX1RZUEUsIGVuY29kZVVSSUNvbXBvbmVudChDb25zdGFudHMuQ09ERV9SRVNQT05TRV9UWVBFKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhZGQgcmVzcG9uc2VfbW9kZS4gZGVmYXVsdHMgdG8gcXVlcnkuXHJcbiAgICAgKiBAcGFyYW0gcmVzcG9uc2VNb2RlXHJcbiAgICAgKi9cclxuICAgIGFkZFJlc3BvbnNlTW9kZShyZXNwb25zZU1vZGU/OiBSZXNwb25zZU1vZGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KFxyXG4gICAgICAgICAgICBBQURTZXJ2ZXJQYXJhbUtleXMuUkVTUE9OU0VfTU9ERSxcclxuICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KChyZXNwb25zZU1vZGUpID8gcmVzcG9uc2VNb2RlIDogUmVzcG9uc2VNb2RlLlFVRVJZKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhZGQgc2NvcGVzLiBzZXQgYWRkT2lkY1Njb3BlcyB0byBmYWxzZSB0byBwcmV2ZW50IGRlZmF1bHQgc2NvcGVzIGluIG5vbi11c2VyIHNjZW5hcmlvc1xyXG4gICAgICogQHBhcmFtIHNjb3BlU2V0XHJcbiAgICAgKiBAcGFyYW0gYWRkT2lkY1Njb3Blc1xyXG4gICAgICovXHJcbiAgICBhZGRTY29wZXMoc2NvcGVzOiBzdHJpbmdbXSwgYWRkT2lkY1Njb3BlczogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCByZXF1ZXN0U2NvcGVzID0gYWRkT2lkY1Njb3BlcyA/IFsuLi5zY29wZXMgfHwgW10sIC4uLk9JRENfREVGQVVMVF9TQ09QRVNdIDogc2NvcGVzIHx8IFtdO1xyXG4gICAgICAgIGNvbnN0IHNjb3BlU2V0ID0gbmV3IFNjb3BlU2V0KHJlcXVlc3RTY29wZXMpO1xyXG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQoQUFEU2VydmVyUGFyYW1LZXlzLlNDT1BFLCBlbmNvZGVVUklDb21wb25lbnQoc2NvcGVTZXQucHJpbnRTY29wZXMoKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYWRkIGNsaWVudElkXHJcbiAgICAgKiBAcGFyYW0gY2xpZW50SWRcclxuICAgICAqL1xyXG4gICAgYWRkQ2xpZW50SWQoY2xpZW50SWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQoQUFEU2VydmVyUGFyYW1LZXlzLkNMSUVOVF9JRCwgZW5jb2RlVVJJQ29tcG9uZW50KGNsaWVudElkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhZGQgcmVkaXJlY3RfdXJpXHJcbiAgICAgKiBAcGFyYW0gcmVkaXJlY3RVcmlcclxuICAgICAqL1xyXG4gICAgYWRkUmVkaXJlY3RVcmkocmVkaXJlY3RVcmk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIFJlcXVlc3RWYWxpZGF0b3IudmFsaWRhdGVSZWRpcmVjdFVyaShyZWRpcmVjdFVyaSk7XHJcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChBQURTZXJ2ZXJQYXJhbUtleXMuUkVESVJFQ1RfVVJJLCBlbmNvZGVVUklDb21wb25lbnQocmVkaXJlY3RVcmkpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGFkZCBwb3N0IGxvZ291dCByZWRpcmVjdFVyaVxyXG4gICAgICogQHBhcmFtIHJlZGlyZWN0VXJpXHJcbiAgICAgKi9cclxuICAgIGFkZFBvc3RMb2dvdXRSZWRpcmVjdFVyaShyZWRpcmVjdFVyaTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgUmVxdWVzdFZhbGlkYXRvci52YWxpZGF0ZVJlZGlyZWN0VXJpKHJlZGlyZWN0VXJpKTtcclxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KEFBRFNlcnZlclBhcmFtS2V5cy5QT1NUX0xPR09VVF9VUkksIGVuY29kZVVSSUNvbXBvbmVudChyZWRpcmVjdFVyaSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYWRkIGlkX3Rva2VuX2hpbnQgdG8gbG9nb3V0IHJlcXVlc3RcclxuICAgICAqIEBwYXJhbSBpZFRva2VuSGludFxyXG4gICAgICovXHJcbiAgICBhZGRJZFRva2VuSGludChpZFRva2VuSGludDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChBQURTZXJ2ZXJQYXJhbUtleXMuSURfVE9LRU5fSElOVCwgZW5jb2RlVVJJQ29tcG9uZW50KGlkVG9rZW5IaW50KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhZGQgZG9tYWluX2hpbnRcclxuICAgICAqIEBwYXJhbSBkb21haW5IaW50XHJcbiAgICAgKi9cclxuICAgIGFkZERvbWFpbkhpbnQoZG9tYWluSGludDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChTU09UeXBlcy5ET01BSU5fSElOVCwgZW5jb2RlVVJJQ29tcG9uZW50KGRvbWFpbkhpbnQpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGFkZCBsb2dpbl9oaW50XHJcbiAgICAgKiBAcGFyYW0gbG9naW5IaW50XHJcbiAgICAgKi9cclxuICAgIGFkZExvZ2luSGludChsb2dpbkhpbnQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQoU1NPVHlwZXMuTE9HSU5fSElOVCwgZW5jb2RlVVJJQ29tcG9uZW50KGxvZ2luSGludCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYWRkIHNpZFxyXG4gICAgICogQHBhcmFtIHNpZFxyXG4gICAgICovXHJcbiAgICBhZGRTaWQoc2lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KFNTT1R5cGVzLlNJRCwgZW5jb2RlVVJJQ29tcG9uZW50KHNpZCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYWRkIGNsYWltc1xyXG4gICAgICogQHBhcmFtIGNsYWltc1xyXG4gICAgICovXHJcbiAgICBhZGRDbGFpbXMoY2xhaW1zPzogc3RyaW5nLCBjbGllbnRDYXBhYmlsaXRpZXM/OiBBcnJheTxzdHJpbmc+KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbWVyZ2VkQ2xhaW1zID0gdGhpcy5hZGRDbGllbnRDYXBhYmlsaXRpZXNUb0NsYWltcyhjbGFpbXMsIGNsaWVudENhcGFiaWxpdGllcyk7XHJcbiAgICAgICAgUmVxdWVzdFZhbGlkYXRvci52YWxpZGF0ZUNsYWltcyhtZXJnZWRDbGFpbXMpO1xyXG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQoQUFEU2VydmVyUGFyYW1LZXlzLkNMQUlNUywgZW5jb2RlVVJJQ29tcG9uZW50KG1lcmdlZENsYWltcykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYWRkIGNvcnJlbGF0aW9uSWRcclxuICAgICAqIEBwYXJhbSBjb3JyZWxhdGlvbklkXHJcbiAgICAgKi9cclxuICAgIGFkZENvcnJlbGF0aW9uSWQoY29ycmVsYXRpb25JZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChBQURTZXJ2ZXJQYXJhbUtleXMuQ0xJRU5UX1JFUVVFU1RfSUQsIGVuY29kZVVSSUNvbXBvbmVudChjb3JyZWxhdGlvbklkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhZGQgbGlicmFyeSBpbmZvIHF1ZXJ5IHBhcmFtc1xyXG4gICAgICogQHBhcmFtIGxpYnJhcnlJbmZvXHJcbiAgICAgKi9cclxuICAgIGFkZExpYnJhcnlJbmZvKGxpYnJhcnlJbmZvOiBMaWJyYXJ5SW5mbyk6IHZvaWQge1xyXG4gICAgICAgIC8vIFRlbGVtZXRyeSBJbmZvXHJcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChBQURTZXJ2ZXJQYXJhbUtleXMuWF9DTElFTlRfU0tVLCBsaWJyYXJ5SW5mby5za3UpO1xyXG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQoQUFEU2VydmVyUGFyYW1LZXlzLlhfQ0xJRU5UX1ZFUiwgbGlicmFyeUluZm8udmVyc2lvbik7XHJcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChBQURTZXJ2ZXJQYXJhbUtleXMuWF9DTElFTlRfT1MsIGxpYnJhcnlJbmZvLm9zKTtcclxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KEFBRFNlcnZlclBhcmFtS2V5cy5YX0NMSUVOVF9DUFUsIGxpYnJhcnlJbmZvLmNwdSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhZGQgcHJvbXB0XHJcbiAgICAgKiBAcGFyYW0gcHJvbXB0XHJcbiAgICAgKi9cclxuICAgIGFkZFByb21wdChwcm9tcHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIFJlcXVlc3RWYWxpZGF0b3IudmFsaWRhdGVQcm9tcHQocHJvbXB0KTtcclxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KGAke0FBRFNlcnZlclBhcmFtS2V5cy5QUk9NUFR9YCwgZW5jb2RlVVJJQ29tcG9uZW50KHByb21wdCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYWRkIHN0YXRlXHJcbiAgICAgKiBAcGFyYW0gc3RhdGVcclxuICAgICAqL1xyXG4gICAgYWRkU3RhdGUoc3RhdGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghU3RyaW5nVXRpbHMuaXNFbXB0eShzdGF0ZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChBQURTZXJ2ZXJQYXJhbUtleXMuU1RBVEUsIGVuY29kZVVSSUNvbXBvbmVudChzdGF0ZSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGFkZCBub25jZVxyXG4gICAgICogQHBhcmFtIG5vbmNlXHJcbiAgICAgKi9cclxuICAgIGFkZE5vbmNlKG5vbmNlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KEFBRFNlcnZlclBhcmFtS2V5cy5OT05DRSwgZW5jb2RlVVJJQ29tcG9uZW50KG5vbmNlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhZGQgY29kZV9jaGFsbGVuZ2UgYW5kIGNvZGVfY2hhbGxlbmdlX21ldGhvZFxyXG4gICAgICogLSB0aHJvdyBpZiBlaXRoZXIgb2YgdGhlbSBhcmUgbm90IHBhc3NlZFxyXG4gICAgICogQHBhcmFtIGNvZGVDaGFsbGVuZ2VcclxuICAgICAqIEBwYXJhbSBjb2RlQ2hhbGxlbmdlTWV0aG9kXHJcbiAgICAgKi9cclxuICAgIGFkZENvZGVDaGFsbGVuZ2VQYXJhbXMoXHJcbiAgICAgICAgY29kZUNoYWxsZW5nZTogc3RyaW5nLFxyXG4gICAgICAgIGNvZGVDaGFsbGVuZ2VNZXRob2Q6IHN0cmluZ1xyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgUmVxdWVzdFZhbGlkYXRvci52YWxpZGF0ZUNvZGVDaGFsbGVuZ2VQYXJhbXMoY29kZUNoYWxsZW5nZSwgY29kZUNoYWxsZW5nZU1ldGhvZCk7XHJcbiAgICAgICAgaWYgKGNvZGVDaGFsbGVuZ2UgJiYgY29kZUNoYWxsZW5nZU1ldGhvZCkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KEFBRFNlcnZlclBhcmFtS2V5cy5DT0RFX0NIQUxMRU5HRSwgZW5jb2RlVVJJQ29tcG9uZW50KGNvZGVDaGFsbGVuZ2UpKTtcclxuICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChBQURTZXJ2ZXJQYXJhbUtleXMuQ09ERV9DSEFMTEVOR0VfTUVUSE9ELCBlbmNvZGVVUklDb21wb25lbnQoY29kZUNoYWxsZW5nZU1ldGhvZCkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudENvbmZpZ3VyYXRpb25FcnJvci5jcmVhdGVJbnZhbGlkQ29kZUNoYWxsZW5nZVBhcmFtc0Vycm9yKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYWRkIHRoZSBgYXV0aG9yaXphdGlvbl9jb2RlYCBwYXNzZWQgYnkgdGhlIHVzZXIgdG8gZXhjaGFuZ2UgZm9yIGEgdG9rZW5cclxuICAgICAqIEBwYXJhbSBjb2RlXHJcbiAgICAgKi9cclxuICAgIGFkZEF1dGhvcml6YXRpb25Db2RlKGNvZGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQoQUFEU2VydmVyUGFyYW1LZXlzLkNPREUsIGVuY29kZVVSSUNvbXBvbmVudChjb2RlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhZGQgdGhlIGBhdXRob3JpemF0aW9uX2NvZGVgIHBhc3NlZCBieSB0aGUgdXNlciB0byBleGNoYW5nZSBmb3IgYSB0b2tlblxyXG4gICAgICogQHBhcmFtIGNvZGVcclxuICAgICAqL1xyXG4gICAgYWRkRGV2aWNlQ29kZShjb2RlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KEFBRFNlcnZlclBhcmFtS2V5cy5ERVZJQ0VfQ09ERSwgZW5jb2RlVVJJQ29tcG9uZW50KGNvZGUpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGFkZCB0aGUgYHJlZnJlc2hUb2tlbmAgcGFzc2VkIGJ5IHRoZSB1c2VyXHJcbiAgICAgKiBAcGFyYW0gcmVmcmVzaFRva2VuXHJcbiAgICAgKi9cclxuICAgIGFkZFJlZnJlc2hUb2tlbihyZWZyZXNoVG9rZW46IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQoQUFEU2VydmVyUGFyYW1LZXlzLlJFRlJFU0hfVE9LRU4sIGVuY29kZVVSSUNvbXBvbmVudChyZWZyZXNoVG9rZW4pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGFkZCB0aGUgYGNvZGVfdmVyaWZpZXJgIHBhc3NlZCBieSB0aGUgdXNlciB0byBleGNoYW5nZSBmb3IgYSB0b2tlblxyXG4gICAgICogQHBhcmFtIGNvZGVWZXJpZmllclxyXG4gICAgICovXHJcbiAgICBhZGRDb2RlVmVyaWZpZXIoY29kZVZlcmlmaWVyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KEFBRFNlcnZlclBhcmFtS2V5cy5DT0RFX1ZFUklGSUVSLCBlbmNvZGVVUklDb21wb25lbnQoY29kZVZlcmlmaWVyKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhZGQgY2xpZW50X3NlY3JldFxyXG4gICAgICogQHBhcmFtIGNsaWVudFNlY3JldFxyXG4gICAgICovXHJcbiAgICBhZGRDbGllbnRTZWNyZXQoY2xpZW50U2VjcmV0OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KEFBRFNlcnZlclBhcmFtS2V5cy5DTElFTlRfU0VDUkVULCBlbmNvZGVVUklDb21wb25lbnQoY2xpZW50U2VjcmV0KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhZGQgY2xpZW50QXNzZXJ0aW9uIGZvciBjb25maWRlbnRpYWwgY2xpZW50IGZsb3dzXHJcbiAgICAgKiBAcGFyYW0gY2xpZW50QXNzZXJ0aW9uXHJcbiAgICAgKi9cclxuICAgIGFkZENsaWVudEFzc2VydGlvbihjbGllbnRBc3NlcnRpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQoQUFEU2VydmVyUGFyYW1LZXlzLkNMSUVOVF9BU1NFUlRJT04sIGVuY29kZVVSSUNvbXBvbmVudChjbGllbnRBc3NlcnRpb24pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGFkZCBjbGllbnRBc3NlcnRpb25UeXBlIGZvciBjb25maWRlbnRpYWwgY2xpZW50IGZsb3dzXHJcbiAgICAgKiBAcGFyYW0gY2xpZW50QXNzZXJ0aW9uVHlwZVxyXG4gICAgICovXHJcbiAgICBhZGRDbGllbnRBc3NlcnRpb25UeXBlKGNsaWVudEFzc2VydGlvblR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQoQUFEU2VydmVyUGFyYW1LZXlzLkNMSUVOVF9BU1NFUlRJT05fVFlQRSwgZW5jb2RlVVJJQ29tcG9uZW50KGNsaWVudEFzc2VydGlvblR5cGUpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGFkZCBPQk8gYXNzZXJ0aW9uIGZvciBjb25maWRlbnRpYWwgY2xpZW50IGZsb3dzXHJcbiAgICAgKiBAcGFyYW0gY2xpZW50QXNzZXJ0aW9uXHJcbiAgICAgKi9cclxuICAgIGFkZE9ib0Fzc2VydGlvbihvYm9Bc3NlcnRpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQoQUFEU2VydmVyUGFyYW1LZXlzLk9CT19BU1NFUlRJT04sIGVuY29kZVVSSUNvbXBvbmVudChvYm9Bc3NlcnRpb24pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGFkZCBncmFudCB0eXBlXHJcbiAgICAgKiBAcGFyYW0gZ3JhbnRUeXBlXHJcbiAgICAgKi9cclxuICAgIGFkZFJlcXVlc3RUb2tlblVzZSh0b2tlblVzZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChBQURTZXJ2ZXJQYXJhbUtleXMuUkVRVUVTVEVEX1RPS0VOX1VTRSwgZW5jb2RlVVJJQ29tcG9uZW50KHRva2VuVXNlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhZGQgZ3JhbnQgdHlwZVxyXG4gICAgICogQHBhcmFtIGdyYW50VHlwZVxyXG4gICAgICovXHJcbiAgICBhZGRHcmFudFR5cGUoZ3JhbnRUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KEFBRFNlcnZlclBhcmFtS2V5cy5HUkFOVF9UWVBFLCBlbmNvZGVVUklDb21wb25lbnQoZ3JhbnRUeXBlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhZGQgY2xpZW50IGluZm9cclxuICAgICAqXHJcbiAgICAgKi9cclxuICAgIGFkZENsaWVudEluZm8oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChDbGllbnRJbmZvLCBcIjFcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhZGQgZXh0cmFRdWVyeVBhcmFtc1xyXG4gICAgICogQHBhcmFtIGVRcGFyYW1zXHJcbiAgICAgKi9cclxuICAgIGFkZEV4dHJhUXVlcnlQYXJhbWV0ZXJzKGVRcGFyYW1zOiBTdHJpbmdEaWN0KTogdm9pZCB7XHJcbiAgICAgICAgUmVxdWVzdFZhbGlkYXRvci5zYW5pdGl6ZUVRUGFyYW1zKGVRcGFyYW1zLCB0aGlzLnBhcmFtZXRlcnMpO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGVRcGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChrZXksIGVRcGFyYW1zW2tleV0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZENsaWVudENhcGFiaWxpdGllc1RvQ2xhaW1zKGNsYWltcz86IHN0cmluZywgY2xpZW50Q2FwYWJpbGl0aWVzPzogQXJyYXk8c3RyaW5nPik6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IG1lcmdlZENsYWltczogb2JqZWN0O1xyXG5cclxuICAgICAgICAvLyBQYXJzZSBwcm92aWRlZCBjbGFpbXMgaW50byBKU09OIG9iamVjdCBvciBpbml0aWFsaXplIGVtcHR5IG9iamVjdFxyXG4gICAgICAgIGlmICghY2xhaW1zKSB7XHJcbiAgICAgICAgICAgIG1lcmdlZENsYWltcyA9IHt9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBtZXJnZWRDbGFpbXMgPSBKU09OLnBhcnNlKGNsYWltcyk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2goZSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yLmNyZWF0ZUludmFsaWRDbGFpbXNSZXF1ZXN0RXJyb3IoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNsaWVudENhcGFiaWxpdGllcyAmJiBjbGllbnRDYXBhYmlsaXRpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZiAoIW1lcmdlZENsYWltcy5oYXNPd25Qcm9wZXJ0eShDbGFpbXNSZXF1ZXN0S2V5cy5BQ0NFU1NfVE9LRU4pKXtcclxuICAgICAgICAgICAgICAgIC8vIEFkZCBhY2Nlc3NfdG9rZW4ga2V5IHRvIGNsYWltcyBvYmplY3RcclxuICAgICAgICAgICAgICAgIG1lcmdlZENsYWltc1tDbGFpbXNSZXF1ZXN0S2V5cy5BQ0NFU1NfVE9LRU5dID0ge307XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEFkZCB4bXNfY2MgY2xhaW0gd2l0aCBwcm92aWRlZCBjbGllbnRDYXBhYmlsaXRpZXMgdG8gYWNjZXNzX3Rva2VuIGtleVxyXG4gICAgICAgICAgICBtZXJnZWRDbGFpbXNbQ2xhaW1zUmVxdWVzdEtleXMuQUNDRVNTX1RPS0VOXVtDbGFpbXNSZXF1ZXN0S2V5cy5YTVNfQ0NdID0ge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVzOiBjbGllbnRDYXBhYmlsaXRpZXNcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShtZXJnZWRDbGFpbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYWRkcyBgdXNlcm5hbWVgIGZvciBQYXNzd29yZCBHcmFudCBmbG93XHJcbiAgICAgKiBAcGFyYW0gdXNlcm5hbWVcclxuICAgICAqL1xyXG4gICAgYWRkVXNlcm5hbWUodXNlcm5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQoUGFzc3dvcmRHcmFudENvbnN0YW50cy51c2VybmFtZSwgdXNlcm5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYWRkcyBgcGFzc3dvcmRgIGZvciBQYXNzd29yZCBHcmFudCBmbG93XHJcbiAgICAgKiBAcGFyYW0gcGFzc3dvcmRcclxuICAgICAqL1xyXG4gICAgYWRkUGFzc3dvcmQocGFzc3dvcmQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQoUGFzc3dvcmRHcmFudENvbnN0YW50cy5wYXNzd29yZCwgcGFzc3dvcmQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYWRkIHBvcF9qd2sgdG8gcXVlcnkgcGFyYW1zXHJcbiAgICAgKiBAcGFyYW0gY25mU3RyaW5nXHJcbiAgICAgKi9cclxuICAgIGFkZFBvcFRva2VuKGNuZlN0cmluZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFTdHJpbmdVdGlscy5pc0VtcHR5KGNuZlN0cmluZykpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChBQURTZXJ2ZXJQYXJhbUtleXMuVE9LRU5fVFlQRSwgQXV0aGVudGljYXRpb25TY2hlbWUuUE9QKTtcclxuICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChBQURTZXJ2ZXJQYXJhbUtleXMuUkVRX0NORiwgZW5jb2RlVVJJQ29tcG9uZW50KGNuZlN0cmluZykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFV0aWxpdHkgdG8gY3JlYXRlIGEgVVJMIGZyb20gdGhlIHBhcmFtcyBtYXBcclxuICAgICAqL1xyXG4gICAgY3JlYXRlUXVlcnlTdHJpbmcoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBxdWVyeVBhcmFtZXRlckFycmF5OiBBcnJheTxzdHJpbmc+ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuXHJcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJBcnJheS5wdXNoKGAke2tleX09JHt2YWx1ZX1gKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHF1ZXJ5UGFyYW1ldGVyQXJyYXkuam9pbihcIiZcIik7XHJcbiAgICB9XHJcbn1cclxuIiwiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBDcmVkZW50aWFsRW50aXR5IH0gZnJvbSBcIi4vQ3JlZGVudGlhbEVudGl0eVwiO1xyXG5pbXBvcnQgeyBDcmVkZW50aWFsVHlwZSB9IGZyb20gXCIuLi8uLi91dGlscy9Db25zdGFudHNcIjtcclxuXHJcbi8qKlxyXG4gKiBJRF9UT0tFTiBDYWNoZVxyXG4gKlxyXG4gKiBLZXk6VmFsdWUgU2NoZW1hOlxyXG4gKlxyXG4gKiBLZXkgRXhhbXBsZTogdWlkLnV0aWQtbG9naW4ubWljcm9zb2Z0b25saW5lLmNvbS1pZHRva2VuLWNsaWVudElkLWNvbnRvc28uY29tLVxyXG4gKlxyXG4gKiBWYWx1ZSBTY2hlbWE6XHJcbiAqIHtcclxuICogICAgICBob21lQWNjb3VudElkOiBob21lIGFjY291bnQgaWRlbnRpZmllciBmb3IgdGhlIGF1dGggc2NoZW1lLFxyXG4gKiAgICAgIGVudmlyb25tZW50OiBlbnRpdHkgdGhhdCBpc3N1ZWQgdGhlIHRva2VuLCByZXByZXNlbnRlZCBhcyBhIGZ1bGwgaG9zdFxyXG4gKiAgICAgIGNyZWRlbnRpYWxUeXBlOiBUeXBlIG9mIGNyZWRlbnRpYWwgYXMgYSBzdHJpbmcsIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzogUmVmcmVzaFRva2VuLCBBY2Nlc3NUb2tlbiwgSWRUb2tlbiwgUGFzc3dvcmQsIENvb2tpZSwgQ2VydGlmaWNhdGUsIE90aGVyXHJcbiAqICAgICAgY2xpZW50SWQ6IGNsaWVudCBJRCBvZiB0aGUgYXBwbGljYXRpb25cclxuICogICAgICBzZWNyZXQ6IEFjdHVhbCBjcmVkZW50aWFsIGFzIGEgc3RyaW5nXHJcbiAqICAgICAgcmVhbG06IEZ1bGwgdGVuYW50IG9yIG9yZ2FuaXphdGlvbmFsIGlkZW50aWZpZXIgdGhhdCB0aGUgYWNjb3VudCBiZWxvbmdzIHRvXHJcbiAqIH1cclxuICovXHJcbmV4cG9ydCBjbGFzcyBJZFRva2VuRW50aXR5IGV4dGVuZHMgQ3JlZGVudGlhbEVudGl0eSB7XHJcbiAgICByZWFsbTogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlIElkVG9rZW5FbnRpdHlcclxuICAgICAqIEBwYXJhbSBob21lQWNjb3VudElkXHJcbiAgICAgKiBAcGFyYW0gYXV0aGVudGljYXRpb25SZXN1bHRcclxuICAgICAqIEBwYXJhbSBjbGllbnRJZFxyXG4gICAgICogQHBhcmFtIGF1dGhvcml0eVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlSWRUb2tlbkVudGl0eShcclxuICAgICAgICBob21lQWNjb3VudElkOiBzdHJpbmcsXHJcbiAgICAgICAgZW52aXJvbm1lbnQ6IHN0cmluZyxcclxuICAgICAgICBpZFRva2VuOiBzdHJpbmcsXHJcbiAgICAgICAgY2xpZW50SWQ6IHN0cmluZyxcclxuICAgICAgICB0ZW5hbnRJZDogc3RyaW5nLFxyXG4gICAgICAgIG9ib0Fzc2VydGlvbj86IHN0cmluZ1xyXG4gICAgKTogSWRUb2tlbkVudGl0eSB7XHJcbiAgICAgICAgY29uc3QgaWRUb2tlbkVudGl0eSA9IG5ldyBJZFRva2VuRW50aXR5KCk7XHJcblxyXG4gICAgICAgIGlkVG9rZW5FbnRpdHkuY3JlZGVudGlhbFR5cGUgPSBDcmVkZW50aWFsVHlwZS5JRF9UT0tFTjtcclxuICAgICAgICBpZFRva2VuRW50aXR5LmhvbWVBY2NvdW50SWQgPSBob21lQWNjb3VudElkO1xyXG4gICAgICAgIGlkVG9rZW5FbnRpdHkuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcclxuICAgICAgICBpZFRva2VuRW50aXR5LmNsaWVudElkID0gY2xpZW50SWQ7XHJcbiAgICAgICAgaWRUb2tlbkVudGl0eS5zZWNyZXQgPSBpZFRva2VuO1xyXG4gICAgICAgIGlkVG9rZW5FbnRpdHkucmVhbG0gPSB0ZW5hbnRJZDtcclxuICAgICAgICBpZFRva2VuRW50aXR5Lm9ib0Fzc2VydGlvbiA9IG9ib0Fzc2VydGlvbjtcclxuXHJcbiAgICAgICAgcmV0dXJuIGlkVG9rZW5FbnRpdHk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGF0ZXMgYW4gZW50aXR5OiBjaGVja3MgZm9yIGFsbCBleHBlY3RlZCBwYXJhbXNcclxuICAgICAqIEBwYXJhbSBlbnRpdHlcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzSWRUb2tlbkVudGl0eShlbnRpdHk6IG9iamVjdCk6IGJvb2xlYW4ge1xyXG5cclxuICAgICAgICBpZiAoIWVudGl0eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICBlbnRpdHkuaGFzT3duUHJvcGVydHkoXCJob21lQWNjb3VudElkXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImVudmlyb25tZW50XCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImNyZWRlbnRpYWxUeXBlXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcInJlYWxtXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImNsaWVudElkXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcInNlY3JldFwiKSAmJlxyXG4gICAgICAgICAgICBlbnRpdHlbXCJjcmVkZW50aWFsVHlwZVwiXSA9PT0gQ3JlZGVudGlhbFR5cGUuSURfVE9LRU5cclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIFV0aWxpdHkgY2xhc3Mgd2hpY2ggZXhwb3NlcyBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIGRhdGUgYW5kIHRpbWUgb3BlcmF0aW9ucy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBUaW1lVXRpbHMge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJuIHRoZSBjdXJyZW50IHRpbWUgaW4gVW5peCB0aW1lIChzZWNvbmRzKS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIG5vd1NlY29uZHMoKTogbnVtYmVyIHtcclxuICAgICAgICAvLyBEYXRlLmdldFRpbWUoKSByZXR1cm5zIGluIG1pbGxpc2Vjb25kcy5cclxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDAuMCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogY2hlY2sgaWYgYSB0b2tlbiBpcyBleHBpcmVkIGJhc2VkIG9uIGdpdmVuIFVUQyB0aW1lIGluIHNlY29uZHMuXHJcbiAgICAgKiBAcGFyYW0gZXhwaXJlc09uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc1Rva2VuRXhwaXJlZChleHBpcmVzT246IHN0cmluZywgb2Zmc2V0OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgICAgICAvLyBjaGVjayBmb3IgYWNjZXNzIHRva2VuIGV4cGlyeVxyXG4gICAgICAgIGNvbnN0IGV4cGlyYXRpb25TZWMgPSBOdW1iZXIoZXhwaXJlc09uKSB8fCAwO1xyXG4gICAgICAgIGNvbnN0IG9mZnNldEN1cnJlbnRUaW1lU2VjID0gVGltZVV0aWxzLm5vd1NlY29uZHMoKSArIG9mZnNldDsgXHJcblxyXG4gICAgICAgIC8vIElmIGN1cnJlbnQgdGltZSArIG9mZnNldCBpcyBncmVhdGVyIHRoYW4gdG9rZW4gZXhwaXJhdGlvbiB0aW1lLCB0aGVuIHRva2VuIGlzIGV4cGlyZWQuXHJcbiAgICAgICAgcmV0dXJuIChvZmZzZXRDdXJyZW50VGltZVNlYyA+IGV4cGlyYXRpb25TZWMpO1xyXG4gICAgfVxyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ3JlZGVudGlhbEVudGl0eSB9IGZyb20gXCIuL0NyZWRlbnRpYWxFbnRpdHlcIjtcclxuaW1wb3J0IHsgQ3JlZGVudGlhbFR5cGUsIEF1dGhlbnRpY2F0aW9uU2NoZW1lIH0gZnJvbSBcIi4uLy4uL3V0aWxzL0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBUaW1lVXRpbHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvVGltZVV0aWxzXCI7XHJcbmltcG9ydCB7IFN0cmluZ1V0aWxzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL1N0cmluZ1V0aWxzXCI7XHJcblxyXG4vKipcclxuICogQUNDRVNTX1RPS0VOIENyZWRlbnRpYWwgVHlwZVxyXG4gKlxyXG4gKiBLZXk6VmFsdWUgU2NoZW1hOlxyXG4gKlxyXG4gKiBLZXkgRXhhbXBsZTogdWlkLnV0aWQtbG9naW4ubWljcm9zb2Z0b25saW5lLmNvbS1hY2Nlc3N0b2tlbi1jbGllbnRJZC1jb250b3NvLmNvbS11c2VyLnJlYWRcclxuICpcclxuICogVmFsdWUgU2NoZW1hOlxyXG4gKiB7XHJcbiAqICAgICAgaG9tZUFjY291bnRJZDogaG9tZSBhY2NvdW50IGlkZW50aWZpZXIgZm9yIHRoZSBhdXRoIHNjaGVtZSxcclxuICogICAgICBlbnZpcm9ubWVudDogZW50aXR5IHRoYXQgaXNzdWVkIHRoZSB0b2tlbiwgcmVwcmVzZW50ZWQgYXMgYSBmdWxsIGhvc3RcclxuICogICAgICBjcmVkZW50aWFsVHlwZTogVHlwZSBvZiBjcmVkZW50aWFsIGFzIGEgc3RyaW5nLCBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6IFJlZnJlc2hUb2tlbiwgQWNjZXNzVG9rZW4sIElkVG9rZW4sIFBhc3N3b3JkLCBDb29raWUsIENlcnRpZmljYXRlLCBPdGhlclxyXG4gKiAgICAgIGNsaWVudElkOiBjbGllbnQgSUQgb2YgdGhlIGFwcGxpY2F0aW9uXHJcbiAqICAgICAgc2VjcmV0OiBBY3R1YWwgY3JlZGVudGlhbCBhcyBhIHN0cmluZ1xyXG4gKiAgICAgIGZhbWlseUlkOiBGYW1pbHkgSUQgaWRlbnRpZmllciwgdXN1YWxseSBvbmx5IHVzZWQgZm9yIHJlZnJlc2ggdG9rZW5zXHJcbiAqICAgICAgcmVhbG06IEZ1bGwgdGVuYW50IG9yIG9yZ2FuaXphdGlvbmFsIGlkZW50aWZpZXIgdGhhdCB0aGUgYWNjb3VudCBiZWxvbmdzIHRvXHJcbiAqICAgICAgdGFyZ2V0OiBQZXJtaXNzaW9ucyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgdG9rZW4sIG9yIGZvciByZWZyZXNoIHRva2VucywgdGhlIHJlc291cmNlIGlkZW50aWZpZXIuXHJcbiAqICAgICAgY2FjaGVkQXQ6IEFic29sdXRlIGRldmljZSB0aW1lIHdoZW4gZW50cnkgd2FzIGNyZWF0ZWQgaW4gdGhlIGNhY2hlLlxyXG4gKiAgICAgIGV4cGlyZXNPbjogVG9rZW4gZXhwaXJ5IHRpbWUsIGNhbGN1bGF0ZWQgYmFzZWQgb24gY3VycmVudCBVVEMgdGltZSBpbiBzZWNvbmRzLiBSZXByZXNlbnRlZCBhcyBhIHN0cmluZy5cclxuICogICAgICBleHRlbmRlZEV4cGlyZXNPbjogQWRkaXRpb25hbCBleHRlbmRlZCBleHBpcnkgdGltZSB1bnRpbCB3aGVuIHRva2VuIGlzIHZhbGlkIGluIGNhc2Ugb2Ygc2VydmVyLXNpZGUgb3V0YWdlLiBSZXByZXNlbnRlZCBhcyBzdHJpbmcgaW4gVVRDIHNlY29uZHMuXHJcbiAqICAgICAga2V5SWQ6IHVzZWQgZm9yIFBPUCBhbmQgU1NIIHRva2VuVHlwZXNcclxuICogICAgICB0b2tlblR5cGU6IFR5cGUgb2YgdGhlIHRva2VuIGlzc3VlZC4gVXN1YWxseSBcIkJlYXJlclwiXHJcbiAqIH1cclxuICovXHJcbmV4cG9ydCBjbGFzcyBBY2Nlc3NUb2tlbkVudGl0eSBleHRlbmRzIENyZWRlbnRpYWxFbnRpdHkge1xyXG4gICAgcmVhbG06IHN0cmluZztcclxuICAgIHRhcmdldDogc3RyaW5nO1xyXG4gICAgY2FjaGVkQXQ6IHN0cmluZztcclxuICAgIGV4cGlyZXNPbjogc3RyaW5nO1xyXG4gICAgZXh0ZW5kZWRFeHBpcmVzT24/OiBzdHJpbmc7XHJcbiAgICByZWZyZXNoT24/OiBzdHJpbmc7XHJcbiAgICBrZXlJZD86IHN0cmluZzsgLy8gZm9yIFBPUCBhbmQgU1NIIHRva2VuVHlwZXNcclxuICAgIHRva2VuVHlwZT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZSBBY2Nlc3NUb2tlbkVudGl0eVxyXG4gICAgICogQHBhcmFtIGhvbWVBY2NvdW50SWRcclxuICAgICAqIEBwYXJhbSBlbnZpcm9ubWVudFxyXG4gICAgICogQHBhcmFtIGFjY2Vzc1Rva2VuXHJcbiAgICAgKiBAcGFyYW0gY2xpZW50SWRcclxuICAgICAqIEBwYXJhbSB0ZW5hbnRJZFxyXG4gICAgICogQHBhcmFtIHNjb3Blc1xyXG4gICAgICogQHBhcmFtIGV4cGlyZXNPblxyXG4gICAgICogQHBhcmFtIGV4dEV4cGlyZXNPblxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlQWNjZXNzVG9rZW5FbnRpdHkoXHJcbiAgICAgICAgaG9tZUFjY291bnRJZDogc3RyaW5nLFxyXG4gICAgICAgIGVudmlyb25tZW50OiBzdHJpbmcsXHJcbiAgICAgICAgYWNjZXNzVG9rZW46IHN0cmluZyxcclxuICAgICAgICBjbGllbnRJZDogc3RyaW5nLFxyXG4gICAgICAgIHRlbmFudElkOiBzdHJpbmcsXHJcbiAgICAgICAgc2NvcGVzOiBzdHJpbmcsXHJcbiAgICAgICAgZXhwaXJlc09uOiBudW1iZXIsXHJcbiAgICAgICAgZXh0RXhwaXJlc09uOiBudW1iZXIsXHJcbiAgICAgICAgdG9rZW5UeXBlPzogc3RyaW5nLFxyXG4gICAgICAgIG9ib0Fzc2VydGlvbj86IHN0cmluZ1xyXG4gICAgKTogQWNjZXNzVG9rZW5FbnRpdHkge1xyXG4gICAgICAgIGNvbnN0IGF0RW50aXR5OiBBY2Nlc3NUb2tlbkVudGl0eSA9IG5ldyBBY2Nlc3NUb2tlbkVudGl0eSgpO1xyXG5cclxuICAgICAgICBhdEVudGl0eS5ob21lQWNjb3VudElkID0gaG9tZUFjY291bnRJZDtcclxuICAgICAgICBhdEVudGl0eS5jcmVkZW50aWFsVHlwZSA9IENyZWRlbnRpYWxUeXBlLkFDQ0VTU19UT0tFTjtcclxuICAgICAgICBhdEVudGl0eS5zZWNyZXQgPSBhY2Nlc3NUb2tlbjtcclxuXHJcbiAgICAgICAgY29uc3QgY3VycmVudFRpbWUgPSBUaW1lVXRpbHMubm93U2Vjb25kcygpO1xyXG4gICAgICAgIGF0RW50aXR5LmNhY2hlZEF0ID0gY3VycmVudFRpbWUudG9TdHJpbmcoKTtcclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICAgKiBUb2tlbiBleHBpcnkgdGltZS5cclxuICAgICAgICAgKiBUaGlzIHZhbHVlIHNob3VsZCBiZSDigK9jYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBjdXJyZW50IFVUQyB0aW1lIG1lYXN1cmVkIGxvY2FsbHkgYW5kIHRoZSB2YWx1ZSDigK9leHBpcmVzX2luIFJlcHJlc2VudGVkIGFzIGEgc3RyaW5nIGluIEpTT04uXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgYXRFbnRpdHkuZXhwaXJlc09uID0gZXhwaXJlc09uLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgYXRFbnRpdHkuZXh0ZW5kZWRFeHBpcmVzT24gPSBleHRFeHBpcmVzT24udG9TdHJpbmcoKTtcclxuXHJcbiAgICAgICAgYXRFbnRpdHkuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcclxuICAgICAgICBhdEVudGl0eS5jbGllbnRJZCA9IGNsaWVudElkO1xyXG4gICAgICAgIGF0RW50aXR5LnJlYWxtID0gdGVuYW50SWQ7XHJcbiAgICAgICAgYXRFbnRpdHkudGFyZ2V0ID0gc2NvcGVzO1xyXG4gICAgICAgIGF0RW50aXR5Lm9ib0Fzc2VydGlvbiA9IG9ib0Fzc2VydGlvbjtcclxuXHJcbiAgICAgICAgYXRFbnRpdHkudG9rZW5UeXBlID0gU3RyaW5nVXRpbHMuaXNFbXB0eSh0b2tlblR5cGUpID8gQXV0aGVudGljYXRpb25TY2hlbWUuQkVBUkVSIDogdG9rZW5UeXBlO1xyXG4gICAgICAgIHJldHVybiBhdEVudGl0eTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRlcyBhbiBlbnRpdHk6IGNoZWNrcyBmb3IgYWxsIGV4cGVjdGVkIHBhcmFtc1xyXG4gICAgICogQHBhcmFtIGVudGl0eVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNBY2Nlc3NUb2tlbkVudGl0eShlbnRpdHk6IG9iamVjdCk6IGJvb2xlYW4ge1xyXG5cclxuICAgICAgICBpZiAoIWVudGl0eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICBlbnRpdHkuaGFzT3duUHJvcGVydHkoXCJob21lQWNjb3VudElkXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImVudmlyb25tZW50XCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImNyZWRlbnRpYWxUeXBlXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcInJlYWxtXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImNsaWVudElkXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcInNlY3JldFwiKSAmJlxyXG4gICAgICAgICAgICBlbnRpdHkuaGFzT3duUHJvcGVydHkoXCJ0YXJnZXRcIikgJiZcclxuICAgICAgICAgICAgZW50aXR5W1wiY3JlZGVudGlhbFR5cGVcIl0gPT09IENyZWRlbnRpYWxUeXBlLkFDQ0VTU19UT0tFTlxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIiwiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBDcmVkZW50aWFsRW50aXR5IH0gZnJvbSBcIi4vQ3JlZGVudGlhbEVudGl0eVwiO1xyXG5pbXBvcnQgeyBDcmVkZW50aWFsVHlwZSB9IGZyb20gXCIuLi8uLi91dGlscy9Db25zdGFudHNcIjtcclxuXHJcbi8qKlxyXG4gKiBSRUZSRVNIX1RPS0VOIENhY2hlXHJcbiAqXHJcbiAqIEtleTpWYWx1ZSBTY2hlbWE6XHJcbiAqXHJcbiAqIEtleSBFeGFtcGxlOiB1aWQudXRpZC1sb2dpbi5taWNyb3NvZnRvbmxpbmUuY29tLXJlZnJlc2h0b2tlbi1jbGllbnRJZC0tXHJcbiAqXHJcbiAqIFZhbHVlOlxyXG4gKiB7XHJcbiAqICAgICAgaG9tZUFjY291bnRJZDogaG9tZSBhY2NvdW50IGlkZW50aWZpZXIgZm9yIHRoZSBhdXRoIHNjaGVtZSxcclxuICogICAgICBlbnZpcm9ubWVudDogZW50aXR5IHRoYXQgaXNzdWVkIHRoZSB0b2tlbiwgcmVwcmVzZW50ZWQgYXMgYSBmdWxsIGhvc3RcclxuICogICAgICBjcmVkZW50aWFsVHlwZTogVHlwZSBvZiBjcmVkZW50aWFsIGFzIGEgc3RyaW5nLCBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6IFJlZnJlc2hUb2tlbiwgQWNjZXNzVG9rZW4sIElkVG9rZW4sIFBhc3N3b3JkLCBDb29raWUsIENlcnRpZmljYXRlLCBPdGhlclxyXG4gKiAgICAgIGNsaWVudElkOiBjbGllbnQgSUQgb2YgdGhlIGFwcGxpY2F0aW9uXHJcbiAqICAgICAgc2VjcmV0OiBBY3R1YWwgY3JlZGVudGlhbCBhcyBhIHN0cmluZ1xyXG4gKiAgICAgIGZhbWlseUlkOiBGYW1pbHkgSUQgaWRlbnRpZmllciwgJzEnIHJlcHJlc2VudHMgTWljcm9zb2Z0IEZhbWlseVxyXG4gKiAgICAgIHJlYWxtOiBGdWxsIHRlbmFudCBvciBvcmdhbml6YXRpb25hbCBpZGVudGlmaWVyIHRoYXQgdGhlIGFjY291bnQgYmVsb25ncyB0b1xyXG4gKiAgICAgIHRhcmdldDogUGVybWlzc2lvbnMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlIHRva2VuLCBvciBmb3IgcmVmcmVzaCB0b2tlbnMsIHRoZSByZXNvdXJjZSBpZGVudGlmaWVyLlxyXG4gKiB9XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUmVmcmVzaFRva2VuRW50aXR5IGV4dGVuZHMgQ3JlZGVudGlhbEVudGl0eSB7XHJcbiAgICBmYW1pbHlJZD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZSBSZWZyZXNoVG9rZW5FbnRpdHlcclxuICAgICAqIEBwYXJhbSBob21lQWNjb3VudElkXHJcbiAgICAgKiBAcGFyYW0gYXV0aGVudGljYXRpb25SZXN1bHRcclxuICAgICAqIEBwYXJhbSBjbGllbnRJZFxyXG4gICAgICogQHBhcmFtIGF1dGhvcml0eVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlUmVmcmVzaFRva2VuRW50aXR5KFxyXG4gICAgICAgIGhvbWVBY2NvdW50SWQ6IHN0cmluZyxcclxuICAgICAgICBlbnZpcm9ubWVudDogc3RyaW5nLFxyXG4gICAgICAgIHJlZnJlc2hUb2tlbjogc3RyaW5nLFxyXG4gICAgICAgIGNsaWVudElkOiBzdHJpbmcsXHJcbiAgICAgICAgZmFtaWx5SWQ/OiBzdHJpbmcsXHJcbiAgICAgICAgb2JvQXNzZXJ0aW9uPzogc3RyaW5nXHJcbiAgICApOiBSZWZyZXNoVG9rZW5FbnRpdHkge1xyXG4gICAgICAgIGNvbnN0IHJ0RW50aXR5ID0gbmV3IFJlZnJlc2hUb2tlbkVudGl0eSgpO1xyXG5cclxuICAgICAgICBydEVudGl0eS5jbGllbnRJZCA9IGNsaWVudElkO1xyXG4gICAgICAgIHJ0RW50aXR5LmNyZWRlbnRpYWxUeXBlID0gQ3JlZGVudGlhbFR5cGUuUkVGUkVTSF9UT0tFTjtcclxuICAgICAgICBydEVudGl0eS5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xyXG4gICAgICAgIHJ0RW50aXR5LmhvbWVBY2NvdW50SWQgPSBob21lQWNjb3VudElkO1xyXG4gICAgICAgIHJ0RW50aXR5LnNlY3JldCA9IHJlZnJlc2hUb2tlbjtcclxuICAgICAgICBydEVudGl0eS5vYm9Bc3NlcnRpb24gPSBvYm9Bc3NlcnRpb247XHJcblxyXG4gICAgICAgIGlmIChmYW1pbHlJZClcclxuICAgICAgICAgICAgcnRFbnRpdHkuZmFtaWx5SWQgPSBmYW1pbHlJZDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJ0RW50aXR5O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdGVzIGFuIGVudGl0eTogY2hlY2tzIGZvciBhbGwgZXhwZWN0ZWQgcGFyYW1zXHJcbiAgICAgKiBAcGFyYW0gZW50aXR5XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc1JlZnJlc2hUb2tlbkVudGl0eShlbnRpdHk6IG9iamVjdCk6IGJvb2xlYW4ge1xyXG5cclxuICAgICAgICBpZiAoIWVudGl0eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICBlbnRpdHkuaGFzT3duUHJvcGVydHkoXCJob21lQWNjb3VudElkXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImVudmlyb25tZW50XCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImNyZWRlbnRpYWxUeXBlXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImNsaWVudElkXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcInNlY3JldFwiKSAmJlxyXG4gICAgICAgICAgICBlbnRpdHlbXCJjcmVkZW50aWFsVHlwZVwiXSA9PT0gQ3JlZGVudGlhbFR5cGUuUkVGUkVTSF9UT0tFTlxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIiwiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBTZXJ2ZXJFcnJvciB9IGZyb20gXCIuL1NlcnZlckVycm9yXCI7XHJcblxyXG4vKipcclxuICogSW50ZXJhY3Rpb25SZXF1aXJlZEF1dGhFcnJvck1lc3NhZ2UgY2xhc3MgY29udGFpbmluZyBzdHJpbmcgY29uc3RhbnRzIHVzZWQgYnkgZXJyb3IgY29kZXMgYW5kIG1lc3NhZ2VzLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IEludGVyYWN0aW9uUmVxdWlyZWRBdXRoRXJyb3JNZXNzYWdlID0gW1xyXG4gICAgXCJpbnRlcmFjdGlvbl9yZXF1aXJlZFwiLFxyXG4gICAgXCJjb25zZW50X3JlcXVpcmVkXCIsXHJcbiAgICBcImxvZ2luX3JlcXVpcmVkXCJcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBJbnRlcmFjdGlvblJlcXVpcmVkQXV0aFN1YkVycm9yTWVzc2FnZSA9IFtcclxuICAgIFwibWVzc2FnZV9vbmx5XCIsXHJcbiAgICBcImFkZGl0aW9uYWxfYWN0aW9uXCIsXHJcbiAgICBcImJhc2ljX2FjdGlvblwiLFxyXG4gICAgXCJ1c2VyX3Bhc3N3b3JkX2V4cGlyZWRcIixcclxuICAgIFwiY29uc2VudF9yZXF1aXJlZFwiXHJcbl07XHJcblxyXG4vKipcclxuICogRXJyb3IgdGhyb3duIHdoZW4gdXNlciBpbnRlcmFjdGlvbiBpcyByZXF1aXJlZCBhdCB0aGUgYXV0aCBzZXJ2ZXIuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgSW50ZXJhY3Rpb25SZXF1aXJlZEF1dGhFcnJvciBleHRlbmRzIFNlcnZlckVycm9yIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihlcnJvckNvZGU/OiBzdHJpbmcsIGVycm9yTWVzc2FnZT86IHN0cmluZywgc3ViRXJyb3I/OiBzdHJpbmcpIHtcclxuICAgICAgICBzdXBlcihlcnJvckNvZGUsIGVycm9yTWVzc2FnZSwgc3ViRXJyb3IpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IFwiSW50ZXJhY3Rpb25SZXF1aXJlZEF1dGhFcnJvclwiO1xyXG5cclxuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgSW50ZXJhY3Rpb25SZXF1aXJlZEF1dGhFcnJvci5wcm90b3R5cGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0ludGVyYWN0aW9uUmVxdWlyZWRFcnJvcihlcnJvckNvZGU/OiBzdHJpbmcsIGVycm9yU3RyaW5nPzogc3RyaW5nLCBzdWJFcnJvcj86IHN0cmluZykgOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBpc0ludGVyYWN0aW9uUmVxdWlyZWRFcnJvckNvZGUgPSAhIWVycm9yQ29kZSAmJiBJbnRlcmFjdGlvblJlcXVpcmVkQXV0aEVycm9yTWVzc2FnZS5pbmRleE9mKGVycm9yQ29kZSkgPiAtMTtcclxuICAgICAgICBjb25zdCBpc0ludGVyYWN0aW9uUmVxdWlyZWRTdWJFcnJvciA9ICEhc3ViRXJyb3IgJiYgSW50ZXJhY3Rpb25SZXF1aXJlZEF1dGhTdWJFcnJvck1lc3NhZ2UuaW5kZXhPZihzdWJFcnJvcikgPiAtMTtcclxuICAgICAgICBjb25zdCBpc0ludGVyYWN0aW9uUmVxdWlyZWRFcnJvckRlc2MgPSAhIWVycm9yU3RyaW5nICYmIEludGVyYWN0aW9uUmVxdWlyZWRBdXRoRXJyb3JNZXNzYWdlLnNvbWUoKGlyRXJyb3JDb2RlKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBlcnJvclN0cmluZy5pbmRleE9mKGlyRXJyb3JDb2RlKSA+IC0xO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gaXNJbnRlcmFjdGlvblJlcXVpcmVkRXJyb3JDb2RlIHx8IGlzSW50ZXJhY3Rpb25SZXF1aXJlZEVycm9yRGVzYyB8fCBpc0ludGVyYWN0aW9uUmVxdWlyZWRTdWJFcnJvcjtcclxuICAgIH1cclxufVxyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IElkVG9rZW5FbnRpdHkgfSBmcm9tIFwiLi9JZFRva2VuRW50aXR5XCI7XHJcbmltcG9ydCB7IEFjY2Vzc1Rva2VuRW50aXR5IH0gZnJvbSBcIi4vQWNjZXNzVG9rZW5FbnRpdHlcIjtcclxuaW1wb3J0IHsgUmVmcmVzaFRva2VuRW50aXR5IH0gZnJvbSBcIi4vUmVmcmVzaFRva2VuRW50aXR5XCI7XHJcbmltcG9ydCB7IEFjY291bnRFbnRpdHkgfSBmcm9tIFwiLi9BY2NvdW50RW50aXR5XCI7XHJcbmltcG9ydCB7IEFwcE1ldGFkYXRhRW50aXR5IH0gZnJvbSBcIi4vQXBwTWV0YWRhdGFFbnRpdHlcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBDYWNoZVJlY29yZCB7XHJcbiAgICBhY2NvdW50OiBBY2NvdW50RW50aXR5IHwgbnVsbDtcclxuICAgIGlkVG9rZW46IElkVG9rZW5FbnRpdHkgfCBudWxsO1xyXG4gICAgYWNjZXNzVG9rZW46IEFjY2Vzc1Rva2VuRW50aXR5IHwgbnVsbDtcclxuICAgIHJlZnJlc2hUb2tlbjogUmVmcmVzaFRva2VuRW50aXR5IHwgbnVsbDtcclxuICAgIGFwcE1ldGFkYXRhOiBBcHBNZXRhZGF0YUVudGl0eSB8IG51bGw7XHJcblxyXG4gICAgY29uc3RydWN0b3IoYWNjb3VudEVudGl0eT86IEFjY291bnRFbnRpdHkgfCBudWxsLCBpZFRva2VuRW50aXR5PzogSWRUb2tlbkVudGl0eSB8IG51bGwsIGFjY2Vzc1Rva2VuRW50aXR5PzogQWNjZXNzVG9rZW5FbnRpdHkgfCBudWxsLCByZWZyZXNoVG9rZW5FbnRpdHk/OiBSZWZyZXNoVG9rZW5FbnRpdHkgfCBudWxsLCBhcHBNZXRhZGF0YUVudGl0eT86IEFwcE1ldGFkYXRhRW50aXR5IHwgbnVsbCkge1xyXG4gICAgICAgIHRoaXMuYWNjb3VudCA9IGFjY291bnRFbnRpdHkgfHwgbnVsbDtcclxuICAgICAgICB0aGlzLmlkVG9rZW4gPSBpZFRva2VuRW50aXR5IHx8IG51bGw7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlbiA9IGFjY2Vzc1Rva2VuRW50aXR5IHx8IG51bGw7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4gPSByZWZyZXNoVG9rZW5FbnRpdHkgfHwgbnVsbDtcclxuICAgICAgICB0aGlzLmFwcE1ldGFkYXRhID0gYXBwTWV0YWRhdGFFbnRpdHkgfHwgbnVsbDtcclxuICAgIH1cclxufVxyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IFN0cmluZ1V0aWxzIH0gZnJvbSBcIi4vU3RyaW5nVXRpbHNcIjtcclxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSBcIi4vQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IElDcnlwdG8gfSBmcm9tIFwiLi4vY3J5cHRvL0lDcnlwdG9cIjtcclxuaW1wb3J0IHsgQ2xpZW50QXV0aEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0NsaWVudEF1dGhFcnJvclwiO1xyXG5cclxuLyoqXHJcbiAqIFR5cGUgd2hpY2ggZGVmaW5lcyB0aGUgb2JqZWN0IHRoYXQgaXMgc3RyaW5naWZpZWQsIGVuY29kZWQgYW5kIHNlbnQgaW4gdGhlIHN0YXRlIHZhbHVlLlxyXG4gKiBDb250YWlucyB0aGUgZm9sbG93aW5nOlxyXG4gKiAtIGlkIC0gdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgcmVxdWVzdFxyXG4gKiAtIHRzIC0gdGltZXN0YW1wIGZvciB0aGUgdGltZSB0aGUgcmVxdWVzdCB3YXMgbWFkZS4gVXNlZCB0byBlbnN1cmUgdGhhdCB0b2tlbiBleHBpcmF0aW9uIGlzIG5vdCBjYWxjdWxhdGVkIGluY29ycmVjdGx5LlxyXG4gKiAtIHBsYXRmb3JtU3RhdGUgLSBzdHJpbmcgdmFsdWUgc2VudCBmcm9tIHRoZSBwbGF0Zm9ybS5cclxuICovXHJcbmV4cG9ydCB0eXBlIExpYnJhcnlTdGF0ZU9iamVjdCA9IHtcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICBtZXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG59O1xyXG5cclxuLyoqXHJcbiAqIFR5cGUgd2hpY2ggZGVmaW5lcyB0aGUgc3RyaW5naWZpZWQgYW5kIGVuY29kZWQgb2JqZWN0IHNlbnQgdG8gdGhlIHNlcnZpY2UgaW4gdGhlIGF1dGhvcml6ZSByZXF1ZXN0LlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgUmVxdWVzdFN0YXRlT2JqZWN0ID0ge1xyXG4gICAgdXNlclJlcXVlc3RTdGF0ZTogc3RyaW5nLFxyXG4gICAgbGlicmFyeVN0YXRlOiBMaWJyYXJ5U3RhdGVPYmplY3RcclxufTtcclxuXHJcbi8qKlxyXG4gKiBDbGFzcyB3aGljaCBwcm92aWRlcyBoZWxwZXJzIGZvciBPQXV0aCAyLjAgcHJvdG9jb2wgc3BlY2lmaWMgdmFsdWVzXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUHJvdG9jb2xVdGlscyB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcHBlbmRzIHVzZXIgc3RhdGUgd2l0aCByYW5kb20gZ3VpZCwgb3IgcmV0dXJucyByYW5kb20gZ3VpZC5cclxuICAgICAqIEBwYXJhbSB1c2VyU3RhdGUgXHJcbiAgICAgKiBAcGFyYW0gcmFuZG9tR3VpZCBcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHNldFJlcXVlc3RTdGF0ZShjcnlwdG9PYmo6IElDcnlwdG8sIHVzZXJTdGF0ZT86IHN0cmluZywgbWV0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGxpYnJhcnlTdGF0ZSA9IFByb3RvY29sVXRpbHMuZ2VuZXJhdGVMaWJyYXJ5U3RhdGUoY3J5cHRvT2JqLCBtZXRhKTtcclxuICAgICAgICByZXR1cm4gIVN0cmluZ1V0aWxzLmlzRW1wdHkodXNlclN0YXRlKSA/IGAke2xpYnJhcnlTdGF0ZX0ke0NvbnN0YW50cy5SRVNPVVJDRV9ERUxJTX0ke3VzZXJTdGF0ZX1gIDogbGlicmFyeVN0YXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIHRoZSBzdGF0ZSB2YWx1ZSB1c2VkIGJ5IHRoZSBjb21tb24gbGlicmFyeS5cclxuICAgICAqIEBwYXJhbSByYW5kb21HdWlkIFxyXG4gICAgICogQHBhcmFtIGNyeXB0b09iaiBcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdlbmVyYXRlTGlicmFyeVN0YXRlKGNyeXB0b09iajogSUNyeXB0bywgbWV0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghY3J5cHRvT2JqKSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVOb0NyeXB0b09iamVjdEVycm9yKFwiZ2VuZXJhdGVMaWJyYXJ5U3RhdGVcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDcmVhdGUgYSBzdGF0ZSBvYmplY3QgY29udGFpbmluZyBhIHVuaXF1ZSBpZCBhbmQgdGhlIHRpbWVzdGFtcCBvZiB0aGUgcmVxdWVzdCBjcmVhdGlvblxyXG4gICAgICAgIGNvbnN0IHN0YXRlT2JqOiBMaWJyYXJ5U3RhdGVPYmplY3QgPSB7XHJcbiAgICAgICAgICAgIGlkOiBjcnlwdG9PYmouY3JlYXRlTmV3R3VpZCgpXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKG1ldGEpIHtcclxuICAgICAgICAgICAgc3RhdGVPYmoubWV0YSA9IG1ldGE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBzdGF0ZVN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHN0YXRlT2JqKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNyeXB0b09iai5iYXNlNjRFbmNvZGUoc3RhdGVTdHJpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGFyc2VzIHRoZSBzdGF0ZSBpbnRvIHRoZSBSZXF1ZXN0U3RhdGVPYmplY3QsIHdoaWNoIGNvbnRhaW5zIHRoZSBMaWJyYXJ5U3RhdGUgaW5mbyBhbmQgdGhlIHN0YXRlIHBhc3NlZCBieSB0aGUgdXNlci5cclxuICAgICAqIEBwYXJhbSBzdGF0ZSBcclxuICAgICAqIEBwYXJhbSBjcnlwdG9PYmogXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBwYXJzZVJlcXVlc3RTdGF0ZShjcnlwdG9PYmo6IElDcnlwdG8sIHN0YXRlOiBzdHJpbmcpOiBSZXF1ZXN0U3RhdGVPYmplY3Qge1xyXG4gICAgICAgIGlmICghY3J5cHRvT2JqKSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVOb0NyeXB0b09iamVjdEVycm9yKFwicGFyc2VSZXF1ZXN0U3RhdGVcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNFbXB0eShzdGF0ZSkpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZUludmFsaWRTdGF0ZUVycm9yKHN0YXRlLCBcIk51bGwsIHVuZGVmaW5lZCBvciBlbXB0eSBzdGF0ZVwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIFNwbGl0IHRoZSBzdGF0ZSBiZXR3ZWVuIGxpYnJhcnkgc3RhdGUgYW5kIHVzZXIgcGFzc2VkIHN0YXRlIGFuZCBkZWNvZGUgdGhlbSBzZXBhcmF0ZWx5XHJcbiAgICAgICAgICAgIGNvbnN0IHNwbGl0U3RhdGUgPSBkZWNvZGVVUklDb21wb25lbnQoc3RhdGUpLnNwbGl0KENvbnN0YW50cy5SRVNPVVJDRV9ERUxJTSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpYnJhcnlTdGF0ZSA9IHNwbGl0U3RhdGVbMF07XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZXJTdGF0ZSA9IHNwbGl0U3RhdGUubGVuZ3RoID4gMSA/IHNwbGl0U3RhdGUuc2xpY2UoMSkuam9pbihDb25zdGFudHMuUkVTT1VSQ0VfREVMSU0pIDogXCJcIjtcclxuICAgICAgICAgICAgY29uc3QgbGlicmFyeVN0YXRlU3RyaW5nID0gY3J5cHRvT2JqLmJhc2U2NERlY29kZShsaWJyYXJ5U3RhdGUpO1xyXG4gICAgICAgICAgICBjb25zdCBsaWJyYXJ5U3RhdGVPYmogPSBKU09OLnBhcnNlKGxpYnJhcnlTdGF0ZVN0cmluZykgYXMgTGlicmFyeVN0YXRlT2JqZWN0O1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdXNlclJlcXVlc3RTdGF0ZTogIVN0cmluZ1V0aWxzLmlzRW1wdHkodXNlclN0YXRlKSA/IHVzZXJTdGF0ZSA6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICBsaWJyYXJ5U3RhdGU6IGxpYnJhcnlTdGF0ZU9ialxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0gY2F0Y2goZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRBdXRoRXJyb3IuY3JlYXRlSW52YWxpZFN0YXRlRXJyb3Ioc3RhdGUsIGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IFNlcnZlckF1dGhvcml6YXRpb25Db2RlUmVzcG9uc2UgfSBmcm9tIFwiLi4vcmVzcG9uc2UvU2VydmVyQXV0aG9yaXphdGlvbkNvZGVSZXNwb25zZVwiO1xyXG5pbXBvcnQgeyBDbGllbnRDb25maWd1cmF0aW9uRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yXCI7XHJcbmltcG9ydCB7IENsaWVudEF1dGhFcnJvciB9IGZyb20gXCIuLi9lcnJvci9DbGllbnRBdXRoRXJyb3JcIjtcclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tIFwiLi4vdXRpbHMvU3RyaW5nVXRpbHNcIjtcclxuaW1wb3J0IHsgSVVyaSB9IGZyb20gXCIuL0lVcmlcIjtcclxuaW1wb3J0IHsgQUFEQXV0aG9yaXR5Q29uc3RhbnRzLCBDb25zdGFudHMgfSBmcm9tIFwiLi4vdXRpbHMvQ29uc3RhbnRzXCI7XHJcblxyXG4vKipcclxuICogVXJsIG9iamVjdCBjbGFzcyB3aGljaCBjYW4gcGVyZm9ybSB2YXJpb3VzIHRyYW5zZm9ybWF0aW9ucyBvbiB1cmwgc3RyaW5ncy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBVcmxTdHJpbmcge1xyXG5cclxuICAgIC8vIGludGVybmFsIHVybCBzdHJpbmcgZmllbGRcclxuICAgIHByaXZhdGUgX3VybFN0cmluZzogc3RyaW5nO1xyXG4gICAgcHVibGljIGdldCB1cmxTdHJpbmcoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdXJsU3RyaW5nO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdHJ1Y3Rvcih1cmw6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3VybFN0cmluZyA9IHVybDtcclxuICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNFbXB0eSh0aGlzLl91cmxTdHJpbmcpKSB7XHJcbiAgICAgICAgICAgIC8vIFRocm93cyBlcnJvciBpZiB1cmwgaXMgZW1wdHlcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yLmNyZWF0ZVVybEVtcHR5RXJyb3IoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChTdHJpbmdVdGlscy5pc0VtcHR5KHRoaXMuZ2V0SGFzaCgpKSkge1xyXG4gICAgICAgICAgICB0aGlzLl91cmxTdHJpbmcgPSBVcmxTdHJpbmcuY2Fub25pY2FsaXplVXJpKHVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRW5zdXJlIHVybHMgYXJlIGxvd2VyIGNhc2UgYW5kIGVuZCB3aXRoIGEgLyBjaGFyYWN0ZXIuXHJcbiAgICAgKiBAcGFyYW0gdXJsIFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY2Fub25pY2FsaXplVXJpKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodXJsKSB7XHJcbiAgICAgICAgICAgIHVybCA9IHVybC50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmVuZHNXaXRoKHVybCwgXCI/XCIpKSB7XHJcbiAgICAgICAgICAgICAgICB1cmwgPSB1cmwuc2xpY2UoMCwgLTEpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFN0cmluZ1V0aWxzLmVuZHNXaXRoKHVybCwgXCI/L1wiKSkge1xyXG4gICAgICAgICAgICAgICAgdXJsID0gdXJsLnNsaWNlKDAsIC0yKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFTdHJpbmdVdGlscy5lbmRzV2l0aCh1cmwsIFwiL1wiKSkge1xyXG4gICAgICAgICAgICAgICAgdXJsICs9IFwiL1wiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdXJsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhyb3dzIGlmIHVybFN0cmluZyBwYXNzZWQgaXMgbm90IGEgdmFsaWQgYXV0aG9yaXR5IFVSSSBzdHJpbmcuXHJcbiAgICAgKi9cclxuICAgIHZhbGlkYXRlQXNVcmkoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gQXR0ZW1wdHMgdG8gcGFyc2UgdXJsIGZvciB1cmkgY29tcG9uZW50c1xyXG4gICAgICAgIGxldCBjb21wb25lbnRzO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudHMgPSB0aGlzLmdldFVybENvbXBvbmVudHMoKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudENvbmZpZ3VyYXRpb25FcnJvci5jcmVhdGVVcmxQYXJzZUVycm9yKGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVGhyb3cgZXJyb3IgaWYgVVJJIG9yIHBhdGggc2VnbWVudHMgYXJlIG5vdCBwYXJzZWFibGUuXHJcbiAgICAgICAgaWYgKCFjb21wb25lbnRzLkhvc3ROYW1lQW5kUG9ydCB8fCAhY29tcG9uZW50cy5QYXRoU2VnbWVudHMpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yLmNyZWF0ZVVybFBhcnNlRXJyb3IoYEdpdmVuIHVybCBzdHJpbmc6ICR7dGhpcy51cmxTdHJpbmd9YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBUaHJvdyBlcnJvciBpZiB1cmkgaXMgaW5zZWN1cmUuXHJcbiAgICAgICAgaWYoIWNvbXBvbmVudHMuUHJvdG9jb2wgfHwgY29tcG9uZW50cy5Qcm90b2NvbC50b0xvd2VyQ2FzZSgpICE9PSBcImh0dHBzOlwiKSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudENvbmZpZ3VyYXRpb25FcnJvci5jcmVhdGVJbnNlY3VyZUF1dGhvcml0eVVyaUVycm9yKHRoaXMudXJsU3RyaW5nKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGdW5jdGlvbiB0byByZW1vdmUgcXVlcnkgc3RyaW5nIHBhcmFtcyBmcm9tIHVybC4gUmV0dXJucyB0aGUgbmV3IHVybC5cclxuICAgICAqIEBwYXJhbSB1cmxcclxuICAgICAqIEBwYXJhbSBuYW1lXHJcbiAgICAgKi9cclxuICAgIHVybFJlbW92ZVF1ZXJ5U3RyaW5nUGFyYW1ldGVyKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHJlZ2V4ID0gbmV3IFJlZ0V4cChcIihcXFxcJlwiICsgbmFtZSArIFwiPSlbXlxcJl0rXCIpO1xyXG4gICAgICAgIHRoaXMuX3VybFN0cmluZyA9IHRoaXMudXJsU3RyaW5nLnJlcGxhY2UocmVnZXgsIFwiXCIpO1xyXG4gICAgICAgIC8vIG5hbWU9dmFsdWUmXHJcbiAgICAgICAgcmVnZXggPSBuZXcgUmVnRXhwKFwiKFwiICsgbmFtZSArIFwiPSlbXlxcJl0rJlwiKTtcclxuICAgICAgICB0aGlzLl91cmxTdHJpbmcgPSB0aGlzLnVybFN0cmluZy5yZXBsYWNlKHJlZ2V4LCBcIlwiKTtcclxuICAgICAgICAvLyBuYW1lPXZhbHVlXHJcbiAgICAgICAgcmVnZXggPSBuZXcgUmVnRXhwKFwiKFwiICsgbmFtZSArIFwiPSlbXlxcJl0rXCIpO1xyXG4gICAgICAgIHRoaXMuX3VybFN0cmluZyA9IHRoaXMudXJsU3RyaW5nLnJlcGxhY2UocmVnZXgsIFwiXCIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVybFN0cmluZztcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgcmVtb3ZlSGFzaEZyb21VcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBVcmxTdHJpbmcuY2Fub25pY2FsaXplVXJpKHVybC5zcGxpdChcIiNcIilbMF0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2l2ZW4gYSB1cmwgbGlrZSBodHRwczovL2E6Yi9jb21tb24vZD9lPWYjZywgYW5kIGEgdGVuYW50SWQsIHJldHVybnMgaHR0cHM6Ly9hOmIvdGVuYW50SWQvZFxyXG4gICAgICogQHBhcmFtIGhyZWYgVGhlIHVybFxyXG4gICAgICogQHBhcmFtIHRlbmFudElkIFRoZSB0ZW5hbnQgaWQgdG8gcmVwbGFjZVxyXG4gICAgICovXHJcbiAgICByZXBsYWNlVGVuYW50UGF0aCh0ZW5hbnRJZDogc3RyaW5nKTogVXJsU3RyaW5nIHtcclxuICAgICAgICBjb25zdCB1cmxPYmplY3QgPSB0aGlzLmdldFVybENvbXBvbmVudHMoKTtcclxuICAgICAgICBjb25zdCBwYXRoQXJyYXkgPSB1cmxPYmplY3QuUGF0aFNlZ21lbnRzO1xyXG4gICAgICAgIGlmICh0ZW5hbnRJZCAmJiAocGF0aEFycmF5Lmxlbmd0aCAhPT0gMCAmJiAocGF0aEFycmF5WzBdID09PSBBQURBdXRob3JpdHlDb25zdGFudHMuQ09NTU9OIHx8IHBhdGhBcnJheVswXSA9PT0gQUFEQXV0aG9yaXR5Q29uc3RhbnRzLk9SR0FOSVpBVElPTlMpKSkge1xyXG4gICAgICAgICAgICBwYXRoQXJyYXlbMF0gPSB0ZW5hbnRJZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFVybFN0cmluZy5jb25zdHJ1Y3RBdXRob3JpdHlVcmlGcm9tT2JqZWN0KHVybE9iamVjdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBhbmNob3IgcGFydCgjKSBvZiB0aGUgVVJMXHJcbiAgICAgKi9cclxuICAgIGdldEhhc2goKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gVXJsU3RyaW5nLnBhcnNlSGFzaCh0aGlzLnVybFN0cmluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXJzZXMgb3V0IHRoZSBjb21wb25lbnRzIGZyb20gYSB1cmwgc3RyaW5nLlxyXG4gICAgICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggdGhlIHZhcmlvdXMgY29tcG9uZW50cy4gUGxlYXNlIGNhY2hlIHRoaXMgdmFsdWUgaW5zdGVkIG9mIGNhbGxpbmcgdGhpcyBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSB1cmwuXHJcbiAgICAgKi9cclxuICAgIGdldFVybENvbXBvbmVudHMoKTogSVVyaSB7XHJcbiAgICAgICAgLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vY3VydGlzei8xMTEzOWIyY2ZjYWVmNGEyNjFlMFxyXG4gICAgICAgIGNvbnN0IHJlZ0V4ID0gUmVnRXhwKFwiXigoW146Lz8jXSspOik/KC8vKFteLz8jXSopKT8oW14/I10qKShcXFxcPyhbXiNdKikpPygjKC4qKSk/XCIpO1xyXG5cclxuICAgICAgICAvLyBJZiB1cmwgc3RyaW5nIGRvZXMgbm90IG1hdGNoIHJlZ0V4LCB3ZSB0aHJvdyBhbiBlcnJvclxyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gdGhpcy51cmxTdHJpbmcubWF0Y2gocmVnRXgpO1xyXG4gICAgICAgIGlmICghbWF0Y2gpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yLmNyZWF0ZVVybFBhcnNlRXJyb3IoYEdpdmVuIHVybCBzdHJpbmc6ICR7dGhpcy51cmxTdHJpbmd9YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBVcmwgY29tcG9uZW50IG9iamVjdFxyXG4gICAgICAgIGNvbnN0IHVybENvbXBvbmVudHMgPSB7XHJcbiAgICAgICAgICAgIFByb3RvY29sOiBtYXRjaFsxXSxcclxuICAgICAgICAgICAgSG9zdE5hbWVBbmRQb3J0OiBtYXRjaFs0XSxcclxuICAgICAgICAgICAgQWJzb2x1dGVQYXRoOiBtYXRjaFs1XSxcclxuICAgICAgICAgICAgUXVlcnlTdHJpbmc6IG1hdGNoWzddXHJcbiAgICAgICAgfSBhcyBJVXJpO1xyXG5cclxuICAgICAgICBsZXQgcGF0aFNlZ21lbnRzID0gdXJsQ29tcG9uZW50cy5BYnNvbHV0ZVBhdGguc3BsaXQoXCIvXCIpO1xyXG4gICAgICAgIHBhdGhTZWdtZW50cyA9IHBhdGhTZWdtZW50cy5maWx0ZXIoKHZhbCkgPT4gdmFsICYmIHZhbC5sZW5ndGggPiAwKTsgLy8gcmVtb3ZlIGVtcHR5IGVsZW1lbnRzXHJcbiAgICAgICAgdXJsQ29tcG9uZW50cy5QYXRoU2VnbWVudHMgPSBwYXRoU2VnbWVudHM7XHJcblxyXG4gICAgICAgIGlmICghU3RyaW5nVXRpbHMuaXNFbXB0eSh1cmxDb21wb25lbnRzLlF1ZXJ5U3RyaW5nKSAmJiB1cmxDb21wb25lbnRzLlF1ZXJ5U3RyaW5nLmVuZHNXaXRoKFwiL1wiKSkge1xyXG4gICAgICAgICAgICB1cmxDb21wb25lbnRzLlF1ZXJ5U3RyaW5nID0gdXJsQ29tcG9uZW50cy5RdWVyeVN0cmluZy5zdWJzdHJpbmcoMCwgdXJsQ29tcG9uZW50cy5RdWVyeVN0cmluZy5sZW5ndGgtMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB1cmxDb21wb25lbnRzO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXREb21haW5Gcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCByZWdFeCA9IFJlZ0V4cChcIl4oW146Lz8jXSs6Ly8pPyhbXi8/I10qKVwiKTtcclxuXHJcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB1cmwubWF0Y2gocmVnRXgpO1xyXG5cclxuICAgICAgICBpZiAoIW1hdGNoKSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudENvbmZpZ3VyYXRpb25FcnJvci5jcmVhdGVVcmxQYXJzZUVycm9yKGBHaXZlbiB1cmwgc3RyaW5nOiAke3VybH1gKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtYXRjaFsyXTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0QWJzb2x1dGVVcmwocmVsYXRpdmVVcmw6IHN0cmluZywgYmFzZVVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAocmVsYXRpdmVVcmxbMF0gPT09IENvbnN0YW50cy5GT1JXQVJEX1NMQVNIKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVcmxTdHJpbmcoYmFzZVVybCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJhc2VDb21wb25lbnRzID0gdXJsLmdldFVybENvbXBvbmVudHMoKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBiYXNlQ29tcG9uZW50cy5Qcm90b2NvbCArIFwiLy9cIiArIGJhc2VDb21wb25lbnRzLkhvc3ROYW1lQW5kUG9ydCArIHJlbGF0aXZlVXJsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gcmVsYXRpdmVVcmw7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogUGFyc2VzIGhhc2ggc3RyaW5nIGZyb20gZ2l2ZW4gc3RyaW5nLiBSZXR1cm5zIGVtcHR5IHN0cmluZyBpZiBubyBoYXNoIHN5bWJvbCBpcyBmb3VuZC5cclxuICAgICAqIEBwYXJhbSBoYXNoU3RyaW5nIFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcGFyc2VIYXNoKGhhc2hTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgaGFzaEluZGV4MSA9IGhhc2hTdHJpbmcuaW5kZXhPZihcIiNcIik7XHJcbiAgICAgICAgY29uc3QgaGFzaEluZGV4MiA9IGhhc2hTdHJpbmcuaW5kZXhPZihcIiMvXCIpO1xyXG4gICAgICAgIGlmIChoYXNoSW5kZXgyID4gLTEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGhhc2hTdHJpbmcuc3Vic3RyaW5nKGhhc2hJbmRleDIgKyAyKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGhhc2hJbmRleDEgPiAtMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gaGFzaFN0cmluZy5zdWJzdHJpbmcoaGFzaEluZGV4MSArIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29uc3RydWN0QXV0aG9yaXR5VXJpRnJvbU9iamVjdCh1cmxPYmplY3Q6IElVcmkpOiBVcmxTdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBuZXcgVXJsU3RyaW5nKHVybE9iamVjdC5Qcm90b2NvbCArIFwiLy9cIiArIHVybE9iamVjdC5Ib3N0TmFtZUFuZFBvcnQgKyBcIi9cIiArIHVybE9iamVjdC5QYXRoU2VnbWVudHMuam9pbihcIi9cIikpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBVUkwgaGFzaCBhcyBzZXJ2ZXIgYXV0aCBjb2RlIHJlc3BvbnNlIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldERlc2VyaWFsaXplZEhhc2goaGFzaDogc3RyaW5nKTogU2VydmVyQXV0aG9yaXphdGlvbkNvZGVSZXNwb25zZSB7XHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgZ2l2ZW4gaGFzaCBpcyBlbXB0eVxyXG4gICAgICAgIGlmIChTdHJpbmdVdGlscy5pc0VtcHR5KGhhc2gpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7fTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gU3RyaXAgdGhlICMgc3ltYm9sIGlmIHByZXNlbnRcclxuICAgICAgICBjb25zdCBwYXJzZWRIYXNoID0gVXJsU3RyaW5nLnBhcnNlSGFzaChoYXNoKTtcclxuICAgICAgICAvLyBJZiAjIHN5bWJvbCB3YXMgbm90IHByZXNlbnQsIGFib3ZlIHdpbGwgcmV0dXJuIGVtcHR5IHN0cmluZywgc28gZ2l2ZSBvcmlnaW5hbCBoYXNoIHZhbHVlXHJcbiAgICAgICAgY29uc3QgZGVzZXJpYWxpemVkSGFzaDogU2VydmVyQXV0aG9yaXphdGlvbkNvZGVSZXNwb25zZSA9IFN0cmluZ1V0aWxzLnF1ZXJ5U3RyaW5nVG9PYmplY3Q8U2VydmVyQXV0aG9yaXphdGlvbkNvZGVSZXNwb25zZT4oU3RyaW5nVXRpbHMuaXNFbXB0eShwYXJzZWRIYXNoKSA/IGhhc2ggOiBwYXJzZWRIYXNoKTtcclxuICAgICAgICAvLyBDaGVjayBpZiBkZXNlcmlhbGl6YXRpb24gZGlkbid0IHdvcmtcclxuICAgICAgICBpZiAoIWRlc2VyaWFsaXplZEhhc2gpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZUhhc2hOb3REZXNlcmlhbGl6ZWRFcnJvcihKU09OLnN0cmluZ2lmeShkZXNlcmlhbGl6ZWRIYXNoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkZXNlcmlhbGl6ZWRIYXNoO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2sgaWYgdGhlIGhhc2ggb2YgdGhlIFVSTCBzdHJpbmcgY29udGFpbnMga25vd24gcHJvcGVydGllc1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaGFzaENvbnRhaW5zS25vd25Qcm9wZXJ0aWVzKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChTdHJpbmdVdGlscy5pc0VtcHR5KGhhc2gpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcnM6IFNlcnZlckF1dGhvcml6YXRpb25Db2RlUmVzcG9uc2UgPSBVcmxTdHJpbmcuZ2V0RGVzZXJpYWxpemVkSGFzaChoYXNoKTtcclxuICAgICAgICByZXR1cm4gISEoXHJcbiAgICAgICAgICAgIHBhcmFtZXRlcnMuY29kZSB8fFxyXG4gICAgICAgICAgICBwYXJhbWV0ZXJzLmVycm9yX2Rlc2NyaXB0aW9uIHx8XHJcbiAgICAgICAgICAgIHBhcmFtZXRlcnMuZXJyb3IgfHxcclxuICAgICAgICAgICAgcGFyYW1ldGVycy5zdGF0ZVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIiwiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBJQ3J5cHRvIH0gZnJvbSBcIi4vSUNyeXB0b1wiO1xyXG5pbXBvcnQgeyBBdXRoVG9rZW4gfSBmcm9tIFwiLi4vYWNjb3VudC9BdXRoVG9rZW5cIjtcclxuaW1wb3J0IHsgVG9rZW5DbGFpbXMgfSBmcm9tIFwiLi4vYWNjb3VudC9Ub2tlbkNsYWltc1wiO1xyXG5pbXBvcnQgeyBUaW1lVXRpbHMgfSBmcm9tIFwiLi4vdXRpbHMvVGltZVV0aWxzXCI7XHJcbmltcG9ydCB7IFVybFN0cmluZyB9IGZyb20gXCIuLi91cmwvVXJsU3RyaW5nXCI7XHJcbmltcG9ydCB7IElVcmkgfSBmcm9tIFwiLi4vdXJsL0lVcmlcIjtcclxuaW1wb3J0IHsgQ2xpZW50QXV0aEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0NsaWVudEF1dGhFcnJvclwiO1xyXG5cclxuLyoqXHJcbiAqIFNlZSBlU1RTIGRvY3MgZm9yIG1vcmUgaW5mby5cclxuICogLSBBIGtpZCBlbGVtZW50LCB3aXRoIHRoZSB2YWx1ZSBjb250YWluaW5nIGFuIFJGQyA3NjM4LWNvbXBsaWFudCBKV0sgdGh1bWJwcmludCB0aGF0IGlzIGJhc2U2NCBlbmNvZGVkLlxyXG4gKiAtICB4bXNfa3NsIGVsZW1lbnQsIHJlcHJlc2VudGluZyB0aGUgc3RvcmFnZSBsb2NhdGlvbiBvZiB0aGUga2V5J3Mgc2VjcmV0IGNvbXBvbmVudCBvbiB0aGUgY2xpZW50IGRldmljZS4gT25lIG9mIHR3byB2YWx1ZXM6XHJcbiAqICAgICAgLSBzdzogc29mdHdhcmUgc3RvcmFnZVxyXG4gKiAgICAgIC0gdWh3OiBoYXJkd2FyZSBzdG9yYWdlXHJcbiAqL1xyXG50eXBlIFJlcUNuZiA9IHtcclxuICAgIGtpZDogc3RyaW5nO1xyXG4gICAgeG1zX2tzbDogS2V5TG9jYXRpb247XHJcbn07XHJcblxyXG5lbnVtIEtleUxvY2F0aW9uIHtcclxuICAgIFNXID0gXCJzd1wiLFxyXG4gICAgVUhXID0gXCJ1aHdcIlxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUG9wVG9rZW5HZW5lcmF0b3Ige1xyXG5cclxuICAgIHByaXZhdGUgY3J5cHRvVXRpbHM6IElDcnlwdG87XHJcblxyXG4gICAgY29uc3RydWN0b3IoY3J5cHRvVXRpbHM6IElDcnlwdG8pIHtcclxuICAgICAgICB0aGlzLmNyeXB0b1V0aWxzID0gY3J5cHRvVXRpbHM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2VuZXJhdGVDbmYocmVzb3VyY2VSZXF1ZXN0TWV0aG9kOiBzdHJpbmcsIHJlc291cmNlUmVxdWVzdFVyaTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBjb25zdCBraWRUaHVtYnByaW50ID0gYXdhaXQgdGhpcy5jcnlwdG9VdGlscy5nZXRQdWJsaWNLZXlUaHVtYnByaW50KHJlc291cmNlUmVxdWVzdE1ldGhvZCwgcmVzb3VyY2VSZXF1ZXN0VXJpKTtcclxuICAgICAgICBjb25zdCByZXFDbmY6IFJlcUNuZiA9IHtcclxuICAgICAgICAgICAga2lkOiBraWRUaHVtYnByaW50LFxyXG4gICAgICAgICAgICB4bXNfa3NsOiBLZXlMb2NhdGlvbi5TV1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3J5cHRvVXRpbHMuYmFzZTY0RW5jb2RlKEpTT04uc3RyaW5naWZ5KHJlcUNuZikpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNpZ25Qb3BUb2tlbihhY2Nlc3NUb2tlbjogc3RyaW5nLCByZXNvdXJjZVJlcXVlc3RNZXRob2Q6IHN0cmluZywgcmVzb3VyY2VSZXF1ZXN0VXJpOiBzdHJpbmcsIHNockNsYWltcz86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgY29uc3QgdG9rZW5DbGFpbXM6IFRva2VuQ2xhaW1zIHwgbnVsbCA9IEF1dGhUb2tlbi5leHRyYWN0VG9rZW5DbGFpbXMoYWNjZXNzVG9rZW4sIHRoaXMuY3J5cHRvVXRpbHMpO1xyXG4gICAgICAgIGNvbnN0IHJlc291cmNlVXJsU3RyaW5nOiBVcmxTdHJpbmcgPSBuZXcgVXJsU3RyaW5nKHJlc291cmNlUmVxdWVzdFVyaSk7XHJcbiAgICAgICAgY29uc3QgcmVzb3VyY2VVcmxDb21wb25lbnRzOiBJVXJpID0gcmVzb3VyY2VVcmxTdHJpbmcuZ2V0VXJsQ29tcG9uZW50cygpO1xyXG5cclxuICAgICAgICBpZiAoIXRva2VuQ2xhaW1zPy5jbmY/LmtpZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRBdXRoRXJyb3IuY3JlYXRlVG9rZW5DbGFpbXNSZXF1aXJlZEVycm9yKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jcnlwdG9VdGlscy5zaWduSnd0KHtcclxuICAgICAgICAgICAgYXQ6IGFjY2Vzc1Rva2VuLFxyXG4gICAgICAgICAgICB0czogYCR7VGltZVV0aWxzLm5vd1NlY29uZHMoKX1gLFxyXG4gICAgICAgICAgICBtOiByZXNvdXJjZVJlcXVlc3RNZXRob2QudG9VcHBlckNhc2UoKSxcclxuICAgICAgICAgICAgdTogcmVzb3VyY2VVcmxDb21wb25lbnRzLkhvc3ROYW1lQW5kUG9ydCB8fCBcIlwiLFxyXG4gICAgICAgICAgICBub25jZTogdGhpcy5jcnlwdG9VdGlscy5jcmVhdGVOZXdHdWlkKCksXHJcbiAgICAgICAgICAgIHA6IHJlc291cmNlVXJsQ29tcG9uZW50cy5BYnNvbHV0ZVBhdGgsXHJcbiAgICAgICAgICAgIHE6IFtbXSwgcmVzb3VyY2VVcmxDb21wb25lbnRzLlF1ZXJ5U3RyaW5nXSxcclxuICAgICAgICAgICAgY2xpZW50X2NsYWltczogc2hyQ2xhaW1zIHx8IHVuZGVmaW5lZFxyXG4gICAgICAgIH0sIHRva2VuQ2xhaW1zLmNuZi5raWQpO1xyXG4gICAgfVxyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQVBQX01FVEFEQVRBLCBTZXBhcmF0b3JzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL0NvbnN0YW50c1wiO1xyXG5cclxuLyoqXHJcbiAqIEFQUF9NRVRBREFUQSBDYWNoZVxyXG4gKlxyXG4gKiBLZXk6VmFsdWUgU2NoZW1hOlxyXG4gKlxyXG4gKiBLZXk6IGFwcG1ldGFkYXRhLTxlbnZpcm9ubWVudD4tPGNsaWVudF9pZD5cclxuICpcclxuICogVmFsdWU6XHJcbiAqIHtcclxuICogICAgICBjbGllbnRJZDogY2xpZW50IElEIG9mIHRoZSBhcHBsaWNhdGlvblxyXG4gKiAgICAgIGVudmlyb25tZW50OiBlbnRpdHkgdGhhdCBpc3N1ZWQgdGhlIHRva2VuLCByZXByZXNlbnRlZCBhcyBhIGZ1bGwgaG9zdFxyXG4gKiAgICAgIGZhbWlseUlkOiBGYW1pbHkgSUQgaWRlbnRpZmllciwgJzEnIHJlcHJlc2VudHMgTWljcm9zb2Z0IEZhbWlseVxyXG4gKiB9XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXBwTWV0YWRhdGFFbnRpdHkge1xyXG4gICAgY2xpZW50SWQ6IHN0cmluZztcclxuICAgIGVudmlyb25tZW50OiBzdHJpbmc7XHJcbiAgICBmYW1pbHlJZD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYXRlIEFwcE1ldGFkYXRhIENhY2hlIEtleSBhcyBwZXIgdGhlIHNjaGVtYTogYXBwbWV0YWRhdGEtPGVudmlyb25tZW50Pi08Y2xpZW50X2lkPlxyXG4gICAgICovXHJcbiAgICBnZW5lcmF0ZUFwcE1ldGFkYXRhS2V5KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIEFwcE1ldGFkYXRhRW50aXR5LmdlbmVyYXRlQXBwTWV0YWRhdGFDYWNoZUtleSh0aGlzLmVudmlyb25tZW50LCB0aGlzLmNsaWVudElkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYXRlIEFwcE1ldGFkYXRhIENhY2hlIEtleVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2VuZXJhdGVBcHBNZXRhZGF0YUNhY2hlS2V5KGVudmlyb25tZW50OiBzdHJpbmcsIGNsaWVudElkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGFwcE1ldGFEYXRhS2V5QXJyYXk6IEFycmF5PHN0cmluZz4gPSBbXHJcbiAgICAgICAgICAgIEFQUF9NRVRBREFUQSxcclxuICAgICAgICAgICAgZW52aXJvbm1lbnQsXHJcbiAgICAgICAgICAgIGNsaWVudElkLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmV0dXJuIGFwcE1ldGFEYXRhS2V5QXJyYXkuam9pbihTZXBhcmF0b3JzLkNBQ0hFX0tFWV9TRVBBUkFUT1IpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIEFwcE1ldGFkYXRhRW50aXR5XHJcbiAgICAgKiBAcGFyYW0gY2xpZW50SWRcclxuICAgICAqIEBwYXJhbSBlbnZpcm9ubWVudFxyXG4gICAgICogQHBhcmFtIGZhbWlseUlkXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjcmVhdGVBcHBNZXRhZGF0YUVudGl0eShjbGllbnRJZDogc3RyaW5nLCBlbnZpcm9ubWVudDogc3RyaW5nLCBmYW1pbHlJZD86IHN0cmluZyk6IEFwcE1ldGFkYXRhRW50aXR5IHtcclxuICAgICAgICBjb25zdCBhcHBNZXRhZGF0YSA9IG5ldyBBcHBNZXRhZGF0YUVudGl0eSgpO1xyXG5cclxuICAgICAgICBhcHBNZXRhZGF0YS5jbGllbnRJZCA9IGNsaWVudElkO1xyXG4gICAgICAgIGFwcE1ldGFkYXRhLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XHJcbiAgICAgICAgaWYgKGZhbWlseUlkKSB7XHJcbiAgICAgICAgICAgIGFwcE1ldGFkYXRhLmZhbWlseUlkID0gZmFtaWx5SWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYXBwTWV0YWRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGF0ZXMgYW4gZW50aXR5OiBjaGVja3MgZm9yIGFsbCBleHBlY3RlZCBwYXJhbXNcclxuICAgICAqIEBwYXJhbSBlbnRpdHlcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzQXBwTWV0YWRhdGFFbnRpdHkoa2V5OiBzdHJpbmcsIGVudGl0eTogb2JqZWN0KTogYm9vbGVhbiB7XHJcblxyXG4gICAgICAgIGlmICghZW50aXR5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIGtleS5pbmRleE9mKEFQUF9NRVRBREFUQSkgPT09IDAgJiZcclxuICAgICAgICAgICAgZW50aXR5Lmhhc093blByb3BlcnR5KFwiY2xpZW50SWRcIikgJiZcclxuICAgICAgICAgICAgZW50aXR5Lmhhc093blByb3BlcnR5KFwiZW52aXJvbm1lbnRcIilcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSVNlcmlhbGl6YWJsZVRva2VuQ2FjaGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlL0lTZXJpYWxpemFibGVUb2tlbkNhY2hlXCI7XHJcblxyXG4vKipcclxuICogVGhpcyBjbGFzcyBpbnN0YW5jZSBoZWxwcyB0cmFjayB0aGUgbWVtb3J5IGNoYW5nZXMgZmFjaWxpdGF0aW5nXHJcbiAqIGRlY2lzaW9ucyB0byByZWFkIGZyb20gYW5kIHdyaXRlIHRvIHRoZSBwZXJzaXN0ZW50IGNhY2hlXHJcbiAqL2V4cG9ydCBjbGFzcyBUb2tlbkNhY2hlQ29udGV4dCB7XHJcbiAgICAvKipcclxuICAgICAqIGJvb2xlYW4gaW5kaWNhdGluZyBjYWNoZSBjaGFuZ2VcclxuICAgICAqL1xyXG4gICAgaGFzQ2hhbmdlZDogYm9vbGVhbjtcclxuICAgIC8qKlxyXG4gICAgICogc2VyaWFsaXphYmxlIHRva2VuIGNhY2hlIGludGVyZmFjZVxyXG4gICAgICovXHJcbiAgICBjYWNoZTogSVNlcmlhbGl6YWJsZVRva2VuQ2FjaGU7XHJcblxyXG4gICAgY29uc3RydWN0b3IodG9rZW5DYWNoZTogSVNlcmlhbGl6YWJsZVRva2VuQ2FjaGUsIGhhc0NoYW5nZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmNhY2hlID0gdG9rZW5DYWNoZTtcclxuICAgICAgICB0aGlzLmhhc0NoYW5nZWQgPSBoYXNDaGFuZ2VkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYm9vbGVhbiB3aGljaCBpbmRpY2F0ZXMgdGhlIGNoYW5nZXMgaW4gY2FjaGVcclxuICAgICAqL1xyXG4gICAgZ2V0IGNhY2hlSGFzQ2hhbmdlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5oYXNDaGFuZ2VkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZnVuY3Rpb24gdG8gcmV0cmlldmUgdGhlIHRva2VuIGNhY2hlXHJcbiAgICAgKi9cclxuICAgIGdldCB0b2tlbkNhY2hlKCk6IElTZXJpYWxpemFibGVUb2tlbkNhY2hlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZTtcclxuICAgIH1cclxufVxyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IFNlcnZlckF1dGhvcml6YXRpb25Ub2tlblJlc3BvbnNlIH0gZnJvbSBcIi4vU2VydmVyQXV0aG9yaXphdGlvblRva2VuUmVzcG9uc2VcIjtcclxuaW1wb3J0IHsgYnVpbGRDbGllbnRJbmZvfSBmcm9tIFwiLi4vYWNjb3VudC9DbGllbnRJbmZvXCI7XHJcbmltcG9ydCB7IElDcnlwdG8gfSBmcm9tIFwiLi4vY3J5cHRvL0lDcnlwdG9cIjtcclxuaW1wb3J0IHsgQ2xpZW50QXV0aEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0NsaWVudEF1dGhFcnJvclwiO1xyXG5pbXBvcnQgeyBTdHJpbmdVdGlscyB9IGZyb20gXCIuLi91dGlscy9TdHJpbmdVdGlsc1wiO1xyXG5pbXBvcnQgeyBTZXJ2ZXJBdXRob3JpemF0aW9uQ29kZVJlc3BvbnNlIH0gZnJvbSBcIi4vU2VydmVyQXV0aG9yaXphdGlvbkNvZGVSZXNwb25zZVwiO1xyXG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tIFwiLi4vbG9nZ2VyL0xvZ2dlclwiO1xyXG5pbXBvcnQgeyBTZXJ2ZXJFcnJvciB9IGZyb20gXCIuLi9lcnJvci9TZXJ2ZXJFcnJvclwiO1xyXG5pbXBvcnQgeyBBdXRoVG9rZW4gfSBmcm9tIFwiLi4vYWNjb3VudC9BdXRoVG9rZW5cIjtcclxuaW1wb3J0IHsgU2NvcGVTZXQgfSBmcm9tIFwiLi4vcmVxdWVzdC9TY29wZVNldFwiO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblJlc3VsdCB9IGZyb20gXCIuL0F1dGhlbnRpY2F0aW9uUmVzdWx0XCI7XHJcbmltcG9ydCB7IEFjY291bnRFbnRpdHkgfSBmcm9tIFwiLi4vY2FjaGUvZW50aXRpZXMvQWNjb3VudEVudGl0eVwiO1xyXG5pbXBvcnQgeyBBdXRob3JpdHkgfSBmcm9tIFwiLi4vYXV0aG9yaXR5L0F1dGhvcml0eVwiO1xyXG5pbXBvcnQgeyBBdXRob3JpdHlUeXBlIH0gZnJvbSBcIi4uL2F1dGhvcml0eS9BdXRob3JpdHlUeXBlXCI7XHJcbmltcG9ydCB7IElkVG9rZW5FbnRpdHkgfSBmcm9tIFwiLi4vY2FjaGUvZW50aXRpZXMvSWRUb2tlbkVudGl0eVwiO1xyXG5pbXBvcnQgeyBBY2Nlc3NUb2tlbkVudGl0eSB9IGZyb20gXCIuLi9jYWNoZS9lbnRpdGllcy9BY2Nlc3NUb2tlbkVudGl0eVwiO1xyXG5pbXBvcnQgeyBSZWZyZXNoVG9rZW5FbnRpdHkgfSBmcm9tIFwiLi4vY2FjaGUvZW50aXRpZXMvUmVmcmVzaFRva2VuRW50aXR5XCI7XHJcbmltcG9ydCB7IEludGVyYWN0aW9uUmVxdWlyZWRBdXRoRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvSW50ZXJhY3Rpb25SZXF1aXJlZEF1dGhFcnJvclwiO1xyXG5pbXBvcnQgeyBDYWNoZVJlY29yZCB9IGZyb20gXCIuLi9jYWNoZS9lbnRpdGllcy9DYWNoZVJlY29yZFwiO1xyXG5pbXBvcnQgeyBDYWNoZU1hbmFnZXIgfSBmcm9tIFwiLi4vY2FjaGUvQ2FjaGVNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IFByb3RvY29sVXRpbHMsIFJlcXVlc3RTdGF0ZU9iamVjdCB9IGZyb20gXCIuLi91dGlscy9Qcm90b2NvbFV0aWxzXCI7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2NoZW1lLCBDb25zdGFudHMsIFRIRV9GQU1JTFlfSUQgfSBmcm9tIFwiLi4vdXRpbHMvQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IFBvcFRva2VuR2VuZXJhdG9yIH0gZnJvbSBcIi4uL2NyeXB0by9Qb3BUb2tlbkdlbmVyYXRvclwiO1xyXG5pbXBvcnQgeyBBcHBNZXRhZGF0YUVudGl0eSB9IGZyb20gXCIuLi9jYWNoZS9lbnRpdGllcy9BcHBNZXRhZGF0YUVudGl0eVwiO1xyXG5pbXBvcnQgeyBJQ2FjaGVQbHVnaW4gfSBmcm9tIFwiLi4vY2FjaGUvaW50ZXJmYWNlL0lDYWNoZVBsdWdpblwiO1xyXG5pbXBvcnQgeyBUb2tlbkNhY2hlQ29udGV4dCB9IGZyb20gXCIuLi9jYWNoZS9wZXJzaXN0ZW5jZS9Ub2tlbkNhY2hlQ29udGV4dFwiO1xyXG5pbXBvcnQgeyBJU2VyaWFsaXphYmxlVG9rZW5DYWNoZSB9IGZyb20gXCIuLi9jYWNoZS9pbnRlcmZhY2UvSVNlcmlhbGl6YWJsZVRva2VuQ2FjaGVcIjtcclxuaW1wb3J0IHsgQXV0aG9yaXphdGlvbkNvZGVQYXlsb2FkIH0gZnJvbSBcIi4vQXV0aG9yaXphdGlvbkNvZGVQYXlsb2FkXCI7XHJcbmltcG9ydCB7IENsaWVudENvbmZpZ3VyYXRpb25FcnJvciB9IGZyb20gXCIuLi9lcnJvci9DbGllbnRDb25maWd1cmF0aW9uRXJyb3JcIjtcclxuaW1wb3J0IHsgQmFzZUF1dGhSZXF1ZXN0IH0gZnJvbSBcIi4uL3JlcXVlc3QvQmFzZUF1dGhSZXF1ZXN0XCI7XHJcblxyXG4vKipcclxuICogQ2xhc3MgdGhhdCBoYW5kbGVzIHJlc3BvbnNlIHBhcnNpbmcuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUmVzcG9uc2VIYW5kbGVyIHtcclxuICAgIHByaXZhdGUgY2xpZW50SWQ6IHN0cmluZztcclxuICAgIHByaXZhdGUgY2FjaGVTdG9yYWdlOiBDYWNoZU1hbmFnZXI7XHJcbiAgICBwcml2YXRlIGNyeXB0b09iajogSUNyeXB0bztcclxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXI7XHJcbiAgICBwcml2YXRlIGhvbWVBY2NvdW50SWRlbnRpZmllcjogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBzZXJpYWxpemFibGVDYWNoZTogSVNlcmlhbGl6YWJsZVRva2VuQ2FjaGUgfCBudWxsO1xyXG4gICAgcHJpdmF0ZSBwZXJzaXN0ZW5jZVBsdWdpbjogSUNhY2hlUGx1Z2luIHwgbnVsbDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihjbGllbnRJZDogc3RyaW5nLCBjYWNoZVN0b3JhZ2U6IENhY2hlTWFuYWdlciwgY3J5cHRvT2JqOiBJQ3J5cHRvLCBsb2dnZXI6IExvZ2dlciwgc2VyaWFsaXphYmxlQ2FjaGU6IElTZXJpYWxpemFibGVUb2tlbkNhY2hlIHwgbnVsbCwgcGVyc2lzdGVuY2VQbHVnaW46IElDYWNoZVBsdWdpbiB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLmNsaWVudElkID0gY2xpZW50SWQ7XHJcbiAgICAgICAgdGhpcy5jYWNoZVN0b3JhZ2UgPSBjYWNoZVN0b3JhZ2U7XHJcbiAgICAgICAgdGhpcy5jcnlwdG9PYmogPSBjcnlwdG9PYmo7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XHJcbiAgICAgICAgdGhpcy5zZXJpYWxpemFibGVDYWNoZSA9IHNlcmlhbGl6YWJsZUNhY2hlO1xyXG4gICAgICAgIHRoaXMucGVyc2lzdGVuY2VQbHVnaW4gPSBwZXJzaXN0ZW5jZVBsdWdpbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bmN0aW9uIHdoaWNoIHZhbGlkYXRlcyBzZXJ2ZXIgYXV0aG9yaXphdGlvbiBjb2RlIHJlc3BvbnNlLlxyXG4gICAgICogQHBhcmFtIHNlcnZlclJlc3BvbnNlSGFzaFxyXG4gICAgICogQHBhcmFtIGNhY2hlZFN0YXRlXHJcbiAgICAgKiBAcGFyYW0gY3J5cHRvT2JqXHJcbiAgICAgKi9cclxuICAgIHZhbGlkYXRlU2VydmVyQXV0aG9yaXphdGlvbkNvZGVSZXNwb25zZShzZXJ2ZXJSZXNwb25zZUhhc2g6IFNlcnZlckF1dGhvcml6YXRpb25Db2RlUmVzcG9uc2UsIGNhY2hlZFN0YXRlOiBzdHJpbmcsIGNyeXB0b09iajogSUNyeXB0byk6IHZvaWQge1xyXG5cclxuICAgICAgICBpZiAoIXNlcnZlclJlc3BvbnNlSGFzaC5zdGF0ZSB8fCAhY2FjaGVkU3RhdGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgIXNlcnZlclJlc3BvbnNlSGFzaC5zdGF0ZSA/IENsaWVudEF1dGhFcnJvci5jcmVhdGVTdGF0ZU5vdEZvdW5kRXJyb3IoXCJTZXJ2ZXIgU3RhdGVcIikgOiBDbGllbnRBdXRoRXJyb3IuY3JlYXRlU3RhdGVOb3RGb3VuZEVycm9yKFwiQ2FjaGVkIFN0YXRlXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRlY29kZVVSSUNvbXBvbmVudChzZXJ2ZXJSZXNwb25zZUhhc2guc3RhdGUpICE9PSBkZWNvZGVVUklDb21wb25lbnQoY2FjaGVkU3RhdGUpKSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVTdGF0ZU1pc21hdGNoRXJyb3IoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGZvciBlcnJvclxyXG4gICAgICAgIGlmIChzZXJ2ZXJSZXNwb25zZUhhc2guZXJyb3IgfHwgc2VydmVyUmVzcG9uc2VIYXNoLmVycm9yX2Rlc2NyaXB0aW9uIHx8IHNlcnZlclJlc3BvbnNlSGFzaC5zdWJlcnJvcikge1xyXG4gICAgICAgICAgICBpZiAoSW50ZXJhY3Rpb25SZXF1aXJlZEF1dGhFcnJvci5pc0ludGVyYWN0aW9uUmVxdWlyZWRFcnJvcihzZXJ2ZXJSZXNwb25zZUhhc2guZXJyb3IsIHNlcnZlclJlc3BvbnNlSGFzaC5lcnJvcl9kZXNjcmlwdGlvbiwgc2VydmVyUmVzcG9uc2VIYXNoLnN1YmVycm9yKSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVyYWN0aW9uUmVxdWlyZWRBdXRoRXJyb3Ioc2VydmVyUmVzcG9uc2VIYXNoLmVycm9yIHx8IENvbnN0YW50cy5FTVBUWV9TVFJJTkcsIHNlcnZlclJlc3BvbnNlSGFzaC5lcnJvcl9kZXNjcmlwdGlvbiwgc2VydmVyUmVzcG9uc2VIYXNoLnN1YmVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IFNlcnZlckVycm9yKHNlcnZlclJlc3BvbnNlSGFzaC5lcnJvciB8fCBDb25zdGFudHMuRU1QVFlfU1RSSU5HLCBzZXJ2ZXJSZXNwb25zZUhhc2guZXJyb3JfZGVzY3JpcHRpb24sIHNlcnZlclJlc3BvbnNlSGFzaC5zdWJlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2VydmVyUmVzcG9uc2VIYXNoLmNsaWVudF9pbmZvKSB7XHJcbiAgICAgICAgICAgIGJ1aWxkQ2xpZW50SW5mbyhzZXJ2ZXJSZXNwb25zZUhhc2guY2xpZW50X2luZm8sIGNyeXB0b09iaik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gd2hpY2ggdmFsaWRhdGVzIHNlcnZlciBhdXRob3JpemF0aW9uIHRva2VuIHJlc3BvbnNlLlxyXG4gICAgICogQHBhcmFtIHNlcnZlclJlc3BvbnNlXHJcbiAgICAgKi9cclxuICAgIHZhbGlkYXRlVG9rZW5SZXNwb25zZShzZXJ2ZXJSZXNwb25zZTogU2VydmVyQXV0aG9yaXphdGlvblRva2VuUmVzcG9uc2UpOiB2b2lkIHtcclxuICAgICAgICAvLyBDaGVjayBmb3IgZXJyb3JcclxuICAgICAgICBpZiAoc2VydmVyUmVzcG9uc2UuZXJyb3IgfHwgc2VydmVyUmVzcG9uc2UuZXJyb3JfZGVzY3JpcHRpb24gfHwgc2VydmVyUmVzcG9uc2Uuc3ViZXJyb3IpIHtcclxuICAgICAgICAgICAgaWYgKEludGVyYWN0aW9uUmVxdWlyZWRBdXRoRXJyb3IuaXNJbnRlcmFjdGlvblJlcXVpcmVkRXJyb3Ioc2VydmVyUmVzcG9uc2UuZXJyb3IsIHNlcnZlclJlc3BvbnNlLmVycm9yX2Rlc2NyaXB0aW9uLCBzZXJ2ZXJSZXNwb25zZS5zdWJlcnJvcikpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcmFjdGlvblJlcXVpcmVkQXV0aEVycm9yKHNlcnZlclJlc3BvbnNlLmVycm9yLCBzZXJ2ZXJSZXNwb25zZS5lcnJvcl9kZXNjcmlwdGlvbiwgc2VydmVyUmVzcG9uc2Uuc3ViZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBlcnJTdHJpbmcgPSBgJHtzZXJ2ZXJSZXNwb25zZS5lcnJvcl9jb2Rlc30gLSBbJHtzZXJ2ZXJSZXNwb25zZS50aW1lc3RhbXB9XTogJHtzZXJ2ZXJSZXNwb25zZS5lcnJvcl9kZXNjcmlwdGlvbn0gLSBDb3JyZWxhdGlvbiBJRDogJHtzZXJ2ZXJSZXNwb25zZS5jb3JyZWxhdGlvbl9pZH0gLSBUcmFjZSBJRDogJHtzZXJ2ZXJSZXNwb25zZS50cmFjZV9pZH1gO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgU2VydmVyRXJyb3Ioc2VydmVyUmVzcG9uc2UuZXJyb3IsIGVyclN0cmluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBhIGNvbnN0cnVjdGVkIHRva2VuIHJlc3BvbnNlIGJhc2VkIG9uIGdpdmVuIHN0cmluZy4gQWxzbyBtYW5hZ2VzIHRoZSBjYWNoZSB1cGRhdGVzIGFuZCBjbGVhbnVwcy5cclxuICAgICAqIEBwYXJhbSBzZXJ2ZXJUb2tlblJlc3BvbnNlXHJcbiAgICAgKiBAcGFyYW0gYXV0aG9yaXR5XHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGhhbmRsZVNlcnZlclRva2VuUmVzcG9uc2UoXHJcbiAgICAgICAgc2VydmVyVG9rZW5SZXNwb25zZTogU2VydmVyQXV0aG9yaXphdGlvblRva2VuUmVzcG9uc2UsXHJcbiAgICAgICAgYXV0aG9yaXR5OiBBdXRob3JpdHksXHJcbiAgICAgICAgcmVxVGltZXN0YW1wOiBudW1iZXIsXHJcbiAgICAgICAgcmVxdWVzdDogQmFzZUF1dGhSZXF1ZXN0LFxyXG4gICAgICAgIGF1dGhDb2RlUGF5bG9hZD86IEF1dGhvcml6YXRpb25Db2RlUGF5bG9hZCxcclxuICAgICAgICBvYm9Bc3NlcnRpb24/OiBzdHJpbmcsXHJcbiAgICAgICAgaGFuZGxpbmdSZWZyZXNoVG9rZW5SZXNwb25zZT86IGJvb2xlYW4pOiBQcm9taXNlPEF1dGhlbnRpY2F0aW9uUmVzdWx0PiB7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBhbiBpZFRva2VuIG9iamVjdCAobm90IGVudGl0eSlcclxuICAgICAgICBsZXQgaWRUb2tlbk9iajogQXV0aFRva2VuIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmIChzZXJ2ZXJUb2tlblJlc3BvbnNlLmlkX3Rva2VuKSB7XHJcbiAgICAgICAgICAgIGlkVG9rZW5PYmogPSBuZXcgQXV0aFRva2VuKHNlcnZlclRva2VuUmVzcG9uc2UuaWRfdG9rZW4gfHwgQ29uc3RhbnRzLkVNUFRZX1NUUklORywgdGhpcy5jcnlwdG9PYmopO1xyXG4gICAgXHJcbiAgICAgICAgICAgIC8vIHRva2VuIG5vbmNlIGNoZWNrIChUT0RPOiBBZGQgYSB3YXJuaW5nIGlmIG5vIG5vbmNlIGlzIGdpdmVuPylcclxuICAgICAgICAgICAgaWYgKGF1dGhDb2RlUGF5bG9hZCAmJiAhU3RyaW5nVXRpbHMuaXNFbXB0eShhdXRoQ29kZVBheWxvYWQubm9uY2UpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaWRUb2tlbk9iai5jbGFpbXMubm9uY2UgIT09IGF1dGhDb2RlUGF5bG9hZC5ub25jZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVOb25jZU1pc21hdGNoRXJyb3IoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gZ2VuZXJhdGUgaG9tZUFjY291bnRJZFxyXG4gICAgICAgIHRoaXMuaG9tZUFjY291bnRJZGVudGlmaWVyID0gQWNjb3VudEVudGl0eS5nZW5lcmF0ZUhvbWVBY2NvdW50SWQoc2VydmVyVG9rZW5SZXNwb25zZS5jbGllbnRfaW5mbyB8fCBDb25zdGFudHMuRU1QVFlfU1RSSU5HLCBhdXRob3JpdHkuYXV0aG9yaXR5VHlwZSwgdGhpcy5sb2dnZXIsIHRoaXMuY3J5cHRvT2JqLCBpZFRva2VuT2JqKTtcclxuXHJcbiAgICAgICAgLy8gc2F2ZSB0aGUgcmVzcG9uc2UgdG9rZW5zXHJcbiAgICAgICAgbGV0IHJlcXVlc3RTdGF0ZU9iajogUmVxdWVzdFN0YXRlT2JqZWN0IHwgdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICghIWF1dGhDb2RlUGF5bG9hZCAmJiAhIWF1dGhDb2RlUGF5bG9hZC5zdGF0ZSkge1xyXG4gICAgICAgICAgICByZXF1ZXN0U3RhdGVPYmogPSBQcm90b2NvbFV0aWxzLnBhcnNlUmVxdWVzdFN0YXRlKHRoaXMuY3J5cHRvT2JqLCBhdXRoQ29kZVBheWxvYWQuc3RhdGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY2FjaGVSZWNvcmQgPSB0aGlzLmdlbmVyYXRlQ2FjaGVSZWNvcmQoc2VydmVyVG9rZW5SZXNwb25zZSwgYXV0aG9yaXR5LCByZXFUaW1lc3RhbXAsIGlkVG9rZW5PYmosIHJlcXVlc3Quc2NvcGVzLCBvYm9Bc3NlcnRpb24sIGF1dGhDb2RlUGF5bG9hZCk7XHJcbiAgICAgICAgbGV0IGNhY2hlQ29udGV4dDtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wZXJzaXN0ZW5jZVBsdWdpbiAmJiB0aGlzLnNlcmlhbGl6YWJsZUNhY2hlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci52ZXJib3NlKFwiUGVyc2lzdGVuY2UgZW5hYmxlZCwgY2FsbGluZyBiZWZvcmVDYWNoZUFjY2Vzc1wiKTtcclxuICAgICAgICAgICAgICAgIGNhY2hlQ29udGV4dCA9IG5ldyBUb2tlbkNhY2hlQ29udGV4dCh0aGlzLnNlcmlhbGl6YWJsZUNhY2hlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucGVyc2lzdGVuY2VQbHVnaW4uYmVmb3JlQ2FjaGVBY2Nlc3MoY2FjaGVDb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgKiBXaGVuIHNhdmluZyBhIHJlZnJlc2hlZCB0b2tlbnMgdG8gdGhlIGNhY2hlLCBpdCBpcyBleHBlY3RlZCB0aGF0IHRoZSBhY2NvdW50IHRoYXQgd2FzIHVzZWQgaXMgcHJlc2VudCBpbiB0aGUgY2FjaGUuXHJcbiAgICAgICAgICAgICAqIElmIG5vdCBwcmVzZW50LCB3ZSBzaG91bGQgcmV0dXJuIG51bGwsIGFzIGl0J3MgdGhlIGNhc2UgdGhhdCBhbm90aGVyIGFwcGxpY2F0aW9uIGNhbGxlZCByZW1vdmVBY2NvdW50IGluIGJldHdlZW5cclxuICAgICAgICAgICAgICogdGhlIGNhbGxzIHRvIGdldEFsbEFjY291bnRzIGFuZCBhY3F1aXJlVG9rZW5TaWxlbnQuIFdlIHNob3VsZCBub3Qgb3ZlcndyaXRlIHRoYXQgcmVtb3ZhbC5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGlmIChoYW5kbGluZ1JlZnJlc2hUb2tlblJlc3BvbnNlICYmIGNhY2hlUmVjb3JkLmFjY291bnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGNhY2hlUmVjb3JkLmFjY291bnQuZ2VuZXJhdGVBY2NvdW50S2V5KCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhY2NvdW50ID0gdGhpcy5jYWNoZVN0b3JhZ2UuZ2V0QWNjb3VudChrZXkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFhY2NvdW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIud2FybmluZyhcIkFjY291bnQgdXNlZCB0byByZWZyZXNoIHRva2VucyBub3QgaW4gcGVyc2lzdGVuY2UsIHJlZnJlc2hlZCB0b2tlbnMgd2lsbCBub3QgYmUgc3RvcmVkIGluIHRoZSBjYWNoZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzcG9uc2VIYW5kbGVyLmdlbmVyYXRlQXV0aGVudGljYXRpb25SZXN1bHQodGhpcy5jcnlwdG9PYmosIGF1dGhvcml0eSwgY2FjaGVSZWNvcmQsIGZhbHNlLCByZXF1ZXN0LCBpZFRva2VuT2JqLCByZXF1ZXN0U3RhdGVPYmopO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVTdG9yYWdlLnNhdmVDYWNoZVJlY29yZChjYWNoZVJlY29yZCk7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucGVyc2lzdGVuY2VQbHVnaW4gJiYgdGhpcy5zZXJpYWxpemFibGVDYWNoZSAmJiBjYWNoZUNvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLnZlcmJvc2UoXCJQZXJzaXN0ZW5jZSBlbmFibGVkLCBjYWxsaW5nIGFmdGVyQ2FjaGVBY2Nlc3NcIik7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBlcnNpc3RlbmNlUGx1Z2luLmFmdGVyQ2FjaGVBY2Nlc3MoY2FjaGVDb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gUmVzcG9uc2VIYW5kbGVyLmdlbmVyYXRlQXV0aGVudGljYXRpb25SZXN1bHQodGhpcy5jcnlwdG9PYmosIGF1dGhvcml0eSwgY2FjaGVSZWNvcmQsIGZhbHNlLCByZXF1ZXN0LCBpZFRva2VuT2JqLCByZXF1ZXN0U3RhdGVPYmopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIENhY2hlUmVjb3JkXHJcbiAgICAgKiBAcGFyYW0gc2VydmVyVG9rZW5SZXNwb25zZVxyXG4gICAgICogQHBhcmFtIGlkVG9rZW5PYmpcclxuICAgICAqIEBwYXJhbSBhdXRob3JpdHlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUNhY2hlUmVjb3JkKHNlcnZlclRva2VuUmVzcG9uc2U6IFNlcnZlckF1dGhvcml6YXRpb25Ub2tlblJlc3BvbnNlLCBhdXRob3JpdHk6IEF1dGhvcml0eSwgcmVxVGltZXN0YW1wOiBudW1iZXIsIGlkVG9rZW5PYmo/OiBBdXRoVG9rZW4sIHJlcXVlc3RTY29wZXM/OiBzdHJpbmdbXSwgb2JvQXNzZXJ0aW9uPzogc3RyaW5nLCBhdXRoQ29kZVBheWxvYWQ/OiBBdXRob3JpemF0aW9uQ29kZVBheWxvYWQpOiBDYWNoZVJlY29yZCB7XHJcbiAgICAgICAgY29uc3QgZW52ID0gYXV0aG9yaXR5LmdldFByZWZlcnJlZENhY2hlKCk7XHJcbiAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzRW1wdHkoZW52KSkge1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRBdXRoRXJyb3IuY3JlYXRlSW52YWxpZENhY2hlRW52aXJvbm1lbnRFcnJvcigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSWRUb2tlbjogbm9uIEFBRCBzY2VuYXJpb3MgY2FuIGhhdmUgZW1wdHkgcmVhbG1cclxuICAgICAgICBsZXQgY2FjaGVkSWRUb2tlbjogSWRUb2tlbkVudGl0eSB8IHVuZGVmaW5lZDtcclxuICAgICAgICBsZXQgY2FjaGVkQWNjb3VudDogQWNjb3VudEVudGl0eSB8IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoIVN0cmluZ1V0aWxzLmlzRW1wdHkoc2VydmVyVG9rZW5SZXNwb25zZS5pZF90b2tlbikgJiYgISFpZFRva2VuT2JqKSB7XHJcbiAgICAgICAgICAgIGNhY2hlZElkVG9rZW4gPSBJZFRva2VuRW50aXR5LmNyZWF0ZUlkVG9rZW5FbnRpdHkoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmhvbWVBY2NvdW50SWRlbnRpZmllcixcclxuICAgICAgICAgICAgICAgIGVudixcclxuICAgICAgICAgICAgICAgIHNlcnZlclRva2VuUmVzcG9uc2UuaWRfdG9rZW4gfHwgQ29uc3RhbnRzLkVNUFRZX1NUUklORyxcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xpZW50SWQsXHJcbiAgICAgICAgICAgICAgICBpZFRva2VuT2JqLmNsYWltcy50aWQgfHwgQ29uc3RhbnRzLkVNUFRZX1NUUklORyxcclxuICAgICAgICAgICAgICAgIG9ib0Fzc2VydGlvblxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgY2FjaGVkQWNjb3VudCA9IHRoaXMuZ2VuZXJhdGVBY2NvdW50RW50aXR5KFxyXG4gICAgICAgICAgICAgICAgc2VydmVyVG9rZW5SZXNwb25zZSxcclxuICAgICAgICAgICAgICAgIGlkVG9rZW5PYmosXHJcbiAgICAgICAgICAgICAgICBhdXRob3JpdHksXHJcbiAgICAgICAgICAgICAgICBvYm9Bc3NlcnRpb24sXHJcbiAgICAgICAgICAgICAgICBhdXRoQ29kZVBheWxvYWRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEFjY2Vzc1Rva2VuXHJcbiAgICAgICAgbGV0IGNhY2hlZEFjY2Vzc1Rva2VuOiBBY2Nlc3NUb2tlbkVudGl0eSB8IG51bGwgPSBudWxsO1xyXG4gICAgICAgIGlmICghU3RyaW5nVXRpbHMuaXNFbXB0eShzZXJ2ZXJUb2tlblJlc3BvbnNlLmFjY2Vzc190b2tlbikpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIElmIHNjb3BlcyBub3QgcmV0dXJuZWQgaW4gc2VydmVyIHJlc3BvbnNlLCB1c2UgcmVxdWVzdCBzY29wZXNcclxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VTY29wZXMgPSBzZXJ2ZXJUb2tlblJlc3BvbnNlLnNjb3BlID8gU2NvcGVTZXQuZnJvbVN0cmluZyhzZXJ2ZXJUb2tlblJlc3BvbnNlLnNjb3BlKSA6IG5ldyBTY29wZVNldChyZXF1ZXN0U2NvcGVzIHx8IFtdKTtcclxuXHJcbiAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAqIFVzZSB0aW1lc3RhbXAgY2FsY3VsYXRlZCBiZWZvcmUgcmVxdWVzdFxyXG4gICAgICAgICAgICAgKiBTZXJ2ZXIgbWF5IHJldHVybiB0aW1lc3RhbXBzIGFzIHN0cmluZ3MsIHBhcnNlIHRvIG51bWJlcnMgaWYgc28uXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBjb25zdCBleHBpcmVzSW46IG51bWJlciA9ICh0eXBlb2Ygc2VydmVyVG9rZW5SZXNwb25zZS5leHBpcmVzX2luID09PSBcInN0cmluZ1wiID8gcGFyc2VJbnQoc2VydmVyVG9rZW5SZXNwb25zZS5leHBpcmVzX2luLCAxMCkgOiBzZXJ2ZXJUb2tlblJlc3BvbnNlLmV4cGlyZXNfaW4pIHx8IDA7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4dEV4cGlyZXNJbjogbnVtYmVyID0gKHR5cGVvZiBzZXJ2ZXJUb2tlblJlc3BvbnNlLmV4dF9leHBpcmVzX2luID09PSBcInN0cmluZ1wiID8gcGFyc2VJbnQoc2VydmVyVG9rZW5SZXNwb25zZS5leHRfZXhwaXJlc19pbiwgMTApIDogc2VydmVyVG9rZW5SZXNwb25zZS5leHRfZXhwaXJlc19pbikgfHwgMDtcclxuICAgICAgICAgICAgY29uc3QgdG9rZW5FeHBpcmF0aW9uU2Vjb25kcyA9IHJlcVRpbWVzdGFtcCArIGV4cGlyZXNJbjtcclxuICAgICAgICAgICAgY29uc3QgZXh0ZW5kZWRUb2tlbkV4cGlyYXRpb25TZWNvbmRzID0gdG9rZW5FeHBpcmF0aW9uU2Vjb25kcyArIGV4dEV4cGlyZXNJbjtcclxuXHJcbiAgICAgICAgICAgIC8vIG5vbiBBQUQgc2NlbmFyaW9zIGNhbiBoYXZlIGVtcHR5IHJlYWxtXHJcbiAgICAgICAgICAgIGNhY2hlZEFjY2Vzc1Rva2VuID0gQWNjZXNzVG9rZW5FbnRpdHkuY3JlYXRlQWNjZXNzVG9rZW5FbnRpdHkoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmhvbWVBY2NvdW50SWRlbnRpZmllcixcclxuICAgICAgICAgICAgICAgIGVudixcclxuICAgICAgICAgICAgICAgIHNlcnZlclRva2VuUmVzcG9uc2UuYWNjZXNzX3Rva2VuIHx8IENvbnN0YW50cy5FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsaWVudElkLFxyXG4gICAgICAgICAgICAgICAgaWRUb2tlbk9iaiA/IGlkVG9rZW5PYmouY2xhaW1zLnRpZCB8fCBDb25zdGFudHMuRU1QVFlfU1RSSU5HIDogYXV0aG9yaXR5LnRlbmFudCxcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlU2NvcGVzLnByaW50U2NvcGVzKCksXHJcbiAgICAgICAgICAgICAgICB0b2tlbkV4cGlyYXRpb25TZWNvbmRzLFxyXG4gICAgICAgICAgICAgICAgZXh0ZW5kZWRUb2tlbkV4cGlyYXRpb25TZWNvbmRzLFxyXG4gICAgICAgICAgICAgICAgc2VydmVyVG9rZW5SZXNwb25zZS50b2tlbl90eXBlLFxyXG4gICAgICAgICAgICAgICAgb2JvQXNzZXJ0aW9uXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyByZWZyZXNoVG9rZW5cclxuICAgICAgICBsZXQgY2FjaGVkUmVmcmVzaFRva2VuOiBSZWZyZXNoVG9rZW5FbnRpdHkgfCBudWxsID0gbnVsbDtcclxuICAgICAgICBpZiAoIVN0cmluZ1V0aWxzLmlzRW1wdHkoc2VydmVyVG9rZW5SZXNwb25zZS5yZWZyZXNoX3Rva2VuKSkge1xyXG4gICAgICAgICAgICBjYWNoZWRSZWZyZXNoVG9rZW4gPSBSZWZyZXNoVG9rZW5FbnRpdHkuY3JlYXRlUmVmcmVzaFRva2VuRW50aXR5KFxyXG4gICAgICAgICAgICAgICAgdGhpcy5ob21lQWNjb3VudElkZW50aWZpZXIsXHJcbiAgICAgICAgICAgICAgICBlbnYsXHJcbiAgICAgICAgICAgICAgICBzZXJ2ZXJUb2tlblJlc3BvbnNlLnJlZnJlc2hfdG9rZW4gfHwgQ29uc3RhbnRzLkVNUFRZX1NUUklORyxcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xpZW50SWQsXHJcbiAgICAgICAgICAgICAgICBzZXJ2ZXJUb2tlblJlc3BvbnNlLmZvY2ksXHJcbiAgICAgICAgICAgICAgICBvYm9Bc3NlcnRpb25cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGFwcE1ldGFkYXRhXHJcbiAgICAgICAgbGV0IGNhY2hlZEFwcE1ldGFkYXRhOiBBcHBNZXRhZGF0YUVudGl0eSB8IG51bGwgPSBudWxsO1xyXG4gICAgICAgIGlmICghU3RyaW5nVXRpbHMuaXNFbXB0eShzZXJ2ZXJUb2tlblJlc3BvbnNlLmZvY2kpKSB7XHJcbiAgICAgICAgICAgIGNhY2hlZEFwcE1ldGFkYXRhID0gQXBwTWV0YWRhdGFFbnRpdHkuY3JlYXRlQXBwTWV0YWRhdGFFbnRpdHkodGhpcy5jbGllbnRJZCwgZW52LCBzZXJ2ZXJUb2tlblJlc3BvbnNlLmZvY2kpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBDYWNoZVJlY29yZChjYWNoZWRBY2NvdW50LCBjYWNoZWRJZFRva2VuLCBjYWNoZWRBY2Nlc3NUb2tlbiwgY2FjaGVkUmVmcmVzaFRva2VuLCBjYWNoZWRBcHBNZXRhZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZW5lcmF0ZSBBY2NvdW50XHJcbiAgICAgKiBAcGFyYW0gc2VydmVyVG9rZW5SZXNwb25zZVxyXG4gICAgICogQHBhcmFtIGlkVG9rZW5cclxuICAgICAqIEBwYXJhbSBhdXRob3JpdHlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUFjY291bnRFbnRpdHkoc2VydmVyVG9rZW5SZXNwb25zZTogU2VydmVyQXV0aG9yaXphdGlvblRva2VuUmVzcG9uc2UsIGlkVG9rZW46IEF1dGhUb2tlbiwgYXV0aG9yaXR5OiBBdXRob3JpdHksIG9ib0Fzc2VydGlvbj86IHN0cmluZywgYXV0aENvZGVQYXlsb2FkPzogQXV0aG9yaXphdGlvbkNvZGVQYXlsb2FkKTogQWNjb3VudEVudGl0eSB7XHJcbiAgICAgICAgY29uc3QgYXV0aG9yaXR5VHlwZSA9IGF1dGhvcml0eS5hdXRob3JpdHlUeXBlO1xyXG4gICAgICAgIGNvbnN0IGNsb3VkR3JhcGhIb3N0TmFtZSA9IGF1dGhDb2RlUGF5bG9hZCA/IGF1dGhDb2RlUGF5bG9hZC5jbG91ZF9ncmFwaF9ob3N0X25hbWUgOiBcIlwiO1xyXG4gICAgICAgIGNvbnN0IG1zR3JhcGhob3N0ID0gYXV0aENvZGVQYXlsb2FkID8gYXV0aENvZGVQYXlsb2FkLm1zZ3JhcGhfaG9zdCA6IFwiXCI7XHJcblxyXG4gICAgICAgIC8vIEFERlMgZG9lcyBub3QgcmVxdWlyZSBjbGllbnRfaW5mbyBpbiB0aGUgcmVzcG9uc2VcclxuICAgICAgICBpZiAoYXV0aG9yaXR5VHlwZSA9PT0gQXV0aG9yaXR5VHlwZS5BZGZzKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLnZlcmJvc2UoXCJBdXRob3JpdHkgdHlwZSBpcyBBREZTLCBjcmVhdGluZyBBREZTIGFjY291bnRcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBBY2NvdW50RW50aXR5LmNyZWF0ZUdlbmVyaWNBY2NvdW50KGF1dGhvcml0eSwgdGhpcy5ob21lQWNjb3VudElkZW50aWZpZXIsIGlkVG9rZW4sIG9ib0Fzc2VydGlvbiwgY2xvdWRHcmFwaEhvc3ROYW1lLCBtc0dyYXBoaG9zdCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBUaGlzIGZhbGxiYWNrIGFwcGxpZXMgdG8gQjJDIGFzIHdlbGwgYXMgdGhleSBmYWxsIHVuZGVyIGFuIEFBRCBhY2NvdW50IHR5cGUuXHJcbiAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzRW1wdHkoc2VydmVyVG9rZW5SZXNwb25zZS5jbGllbnRfaW5mbykgJiYgYXV0aG9yaXR5LnByb3RvY29sTW9kZSA9PT0gXCJBQURcIikge1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRBdXRoRXJyb3IuY3JlYXRlQ2xpZW50SW5mb0VtcHR5RXJyb3IoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBzZXJ2ZXJUb2tlblJlc3BvbnNlLmNsaWVudF9pbmZvID9cclxuICAgICAgICAgICAgQWNjb3VudEVudGl0eS5jcmVhdGVBY2NvdW50KHNlcnZlclRva2VuUmVzcG9uc2UuY2xpZW50X2luZm8sIHRoaXMuaG9tZUFjY291bnRJZGVudGlmaWVyLCBhdXRob3JpdHksIGlkVG9rZW4sIG9ib0Fzc2VydGlvbiwgY2xvdWRHcmFwaEhvc3ROYW1lLCBtc0dyYXBoaG9zdCkgOlxyXG4gICAgICAgICAgICBBY2NvdW50RW50aXR5LmNyZWF0ZUdlbmVyaWNBY2NvdW50KGF1dGhvcml0eSwgdGhpcy5ob21lQWNjb3VudElkZW50aWZpZXIsIGlkVG9rZW4sIG9ib0Fzc2VydGlvbiwgY2xvdWRHcmFwaEhvc3ROYW1lLCBtc0dyYXBoaG9zdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGFuIEBBdXRoZW50aWNhdGlvblJlc3VsdCBmcm9tIEBDYWNoZVJlY29yZCAsIEBJZFRva2VuICwgYW5kIGEgYm9vbGVhbiB0aGF0IHN0YXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgcmVzdWx0IGlzIGZyb20gY2FjaGUuXHJcbiAgICAgKlxyXG4gICAgICogT3B0aW9uYWxseSB0YWtlcyBhIHN0YXRlIHN0cmluZyB0aGF0IGlzIHNldCBhcy1pcyBpbiB0aGUgcmVzcG9uc2UuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNhY2hlUmVjb3JkXHJcbiAgICAgKiBAcGFyYW0gaWRUb2tlbk9ialxyXG4gICAgICogQHBhcmFtIGZyb21Ub2tlbkNhY2hlXHJcbiAgICAgKiBAcGFyYW0gc3RhdGVTdHJpbmdcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGFzeW5jIGdlbmVyYXRlQXV0aGVudGljYXRpb25SZXN1bHQoXHJcbiAgICAgICAgY3J5cHRvT2JqOiBJQ3J5cHRvLCBcclxuICAgICAgICBhdXRob3JpdHk6IEF1dGhvcml0eSxcclxuICAgICAgICBjYWNoZVJlY29yZDogQ2FjaGVSZWNvcmQsIFxyXG4gICAgICAgIGZyb21Ub2tlbkNhY2hlOiBib29sZWFuLCBcclxuICAgICAgICByZXF1ZXN0OiBCYXNlQXV0aFJlcXVlc3QsXHJcbiAgICAgICAgaWRUb2tlbk9iaj86IEF1dGhUb2tlbixcclxuICAgICAgICByZXF1ZXN0U3RhdGU/OiBSZXF1ZXN0U3RhdGVPYmplY3QpOiBQcm9taXNlPEF1dGhlbnRpY2F0aW9uUmVzdWx0PiB7XHJcbiAgICAgICAgbGV0IGFjY2Vzc1Rva2VuOiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgICAgIGxldCByZXNwb25zZVNjb3BlczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gICAgICAgIGxldCBleHBpcmVzT246IERhdGUgfCBudWxsID0gbnVsbDtcclxuICAgICAgICBsZXQgZXh0RXhwaXJlc09uOiBEYXRlIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgIGxldCBmYW1pbHlJZDogc3RyaW5nID0gQ29uc3RhbnRzLkVNUFRZX1NUUklORztcclxuICAgICAgICBpZiAoY2FjaGVSZWNvcmQuYWNjZXNzVG9rZW4pIHtcclxuICAgICAgICAgICAgaWYgKGNhY2hlUmVjb3JkLmFjY2Vzc1Rva2VuLnRva2VuVHlwZSA9PT0gQXV0aGVudGljYXRpb25TY2hlbWUuUE9QKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwb3BUb2tlbkdlbmVyYXRvcjogUG9wVG9rZW5HZW5lcmF0b3IgPSBuZXcgUG9wVG9rZW5HZW5lcmF0b3IoY3J5cHRvT2JqKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0TWV0aG9kIHx8ICFyZXF1ZXN0LnJlc291cmNlUmVxdWVzdFVyaSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IENsaWVudENvbmZpZ3VyYXRpb25FcnJvci5jcmVhdGVSZXNvdXJjZVJlcXVlc3RQYXJhbWV0ZXJzUmVxdWlyZWRFcnJvcigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYWNjZXNzVG9rZW4gPSBhd2FpdCBwb3BUb2tlbkdlbmVyYXRvci5zaWduUG9wVG9rZW4oY2FjaGVSZWNvcmQuYWNjZXNzVG9rZW4uc2VjcmV0LCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdE1ldGhvZCwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3RVcmksIHJlcXVlc3Quc2hyQ2xhaW1zKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGFjY2Vzc1Rva2VuID0gY2FjaGVSZWNvcmQuYWNjZXNzVG9rZW4uc2VjcmV0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc3BvbnNlU2NvcGVzID0gU2NvcGVTZXQuZnJvbVN0cmluZyhjYWNoZVJlY29yZC5hY2Nlc3NUb2tlbi50YXJnZXQpLmFzQXJyYXkoKTtcclxuICAgICAgICAgICAgZXhwaXJlc09uID0gbmV3IERhdGUoTnVtYmVyKGNhY2hlUmVjb3JkLmFjY2Vzc1Rva2VuLmV4cGlyZXNPbikgKiAxMDAwKTtcclxuICAgICAgICAgICAgZXh0RXhwaXJlc09uID0gbmV3IERhdGUoTnVtYmVyKGNhY2hlUmVjb3JkLmFjY2Vzc1Rva2VuLmV4dGVuZGVkRXhwaXJlc09uKSAqIDEwMDApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNhY2hlUmVjb3JkLmFwcE1ldGFkYXRhKSB7XHJcbiAgICAgICAgICAgIGZhbWlseUlkID0gY2FjaGVSZWNvcmQuYXBwTWV0YWRhdGEuZmFtaWx5SWQgPT09IFRIRV9GQU1JTFlfSUQgPyBUSEVfRkFNSUxZX0lEIDogQ29uc3RhbnRzLkVNUFRZX1NUUklORztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdWlkID0gaWRUb2tlbk9iaj8uY2xhaW1zLm9pZCB8fCBpZFRva2VuT2JqPy5jbGFpbXMuc3ViIHx8IENvbnN0YW50cy5FTVBUWV9TVFJJTkc7XHJcbiAgICAgICAgY29uc3QgdGlkID0gaWRUb2tlbk9iaj8uY2xhaW1zLnRpZCB8fCBDb25zdGFudHMuRU1QVFlfU1RSSU5HO1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBhdXRob3JpdHk6IGF1dGhvcml0eS5jYW5vbmljYWxBdXRob3JpdHksXHJcbiAgICAgICAgICAgIHVuaXF1ZUlkOiB1aWQsXHJcbiAgICAgICAgICAgIHRlbmFudElkOiB0aWQsXHJcbiAgICAgICAgICAgIHNjb3BlczogcmVzcG9uc2VTY29wZXMsXHJcbiAgICAgICAgICAgIGFjY291bnQ6IGNhY2hlUmVjb3JkLmFjY291bnQgPyBjYWNoZVJlY29yZC5hY2NvdW50LmdldEFjY291bnRJbmZvKCkgOiBudWxsLFxyXG4gICAgICAgICAgICBpZFRva2VuOiBpZFRva2VuT2JqID8gaWRUb2tlbk9iai5yYXdUb2tlbiA6IENvbnN0YW50cy5FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgICAgIGlkVG9rZW5DbGFpbXM6IGlkVG9rZW5PYmogPyBpZFRva2VuT2JqLmNsYWltcyA6IHt9LFxyXG4gICAgICAgICAgICBhY2Nlc3NUb2tlbjogYWNjZXNzVG9rZW4sXHJcbiAgICAgICAgICAgIGZyb21DYWNoZTogZnJvbVRva2VuQ2FjaGUsXHJcbiAgICAgICAgICAgIGV4cGlyZXNPbjogZXhwaXJlc09uLFxyXG4gICAgICAgICAgICBleHRFeHBpcmVzT246IGV4dEV4cGlyZXNPbixcclxuICAgICAgICAgICAgZmFtaWx5SWQ6IGZhbWlseUlkLFxyXG4gICAgICAgICAgICB0b2tlblR5cGU6IGNhY2hlUmVjb3JkLmFjY2Vzc1Rva2VuPy50b2tlblR5cGUgfHwgQ29uc3RhbnRzLkVNUFRZX1NUUklORyxcclxuICAgICAgICAgICAgc3RhdGU6IHJlcXVlc3RTdGF0ZSA/IHJlcXVlc3RTdGF0ZS51c2VyUmVxdWVzdFN0YXRlIDogQ29uc3RhbnRzLkVNUFRZX1NUUklORyxcclxuICAgICAgICAgICAgY2xvdWRHcmFwaEhvc3ROYW1lOiBjYWNoZVJlY29yZC5hY2NvdW50Py5jbG91ZEdyYXBoSG9zdE5hbWUgfHwgQ29uc3RhbnRzLkVNUFRZX1NUUklORyxcclxuICAgICAgICAgICAgbXNHcmFwaEhvc3Q6IGNhY2hlUmVjb3JkLmFjY291bnQ/Lm1zR3JhcGhIb3N0IHx8IENvbnN0YW50cy5FTVBUWV9TVFJJTkdcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQmFzZUNsaWVudCB9IGZyb20gXCIuL0Jhc2VDbGllbnRcIjtcclxuaW1wb3J0IHsgQ29tbW9uQXV0aG9yaXphdGlvblVybFJlcXVlc3QgfSBmcm9tIFwiLi4vcmVxdWVzdC9Db21tb25BdXRob3JpemF0aW9uVXJsUmVxdWVzdFwiO1xyXG5pbXBvcnQgeyBDb21tb25BdXRob3JpemF0aW9uQ29kZVJlcXVlc3QgfSBmcm9tIFwiLi4vcmVxdWVzdC9Db21tb25BdXRob3JpemF0aW9uQ29kZVJlcXVlc3RcIjtcclxuaW1wb3J0IHsgQXV0aG9yaXR5IH0gZnJvbSBcIi4uL2F1dGhvcml0eS9BdXRob3JpdHlcIjtcclxuaW1wb3J0IHsgUmVxdWVzdFBhcmFtZXRlckJ1aWxkZXIgfSBmcm9tIFwiLi4vcmVxdWVzdC9SZXF1ZXN0UGFyYW1ldGVyQnVpbGRlclwiO1xyXG5pbXBvcnQgeyBHcmFudFR5cGUsIEF1dGhlbnRpY2F0aW9uU2NoZW1lIH0gZnJvbSBcIi4uL3V0aWxzL0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBDbGllbnRDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uL2NvbmZpZy9DbGllbnRDb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IFNlcnZlckF1dGhvcml6YXRpb25Ub2tlblJlc3BvbnNlIH0gZnJvbSBcIi4uL3Jlc3BvbnNlL1NlcnZlckF1dGhvcml6YXRpb25Ub2tlblJlc3BvbnNlXCI7XHJcbmltcG9ydCB7IE5ldHdvcmtSZXNwb25zZSB9IGZyb20gXCIuLi9uZXR3b3JrL05ldHdvcmtNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IFJlc3BvbnNlSGFuZGxlciB9IGZyb20gXCIuLi9yZXNwb25zZS9SZXNwb25zZUhhbmRsZXJcIjtcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25SZXN1bHQgfSBmcm9tIFwiLi4vcmVzcG9uc2UvQXV0aGVudGljYXRpb25SZXN1bHRcIjtcclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tIFwiLi4vdXRpbHMvU3RyaW5nVXRpbHNcIjtcclxuaW1wb3J0IHsgQ2xpZW50QXV0aEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0NsaWVudEF1dGhFcnJvclwiO1xyXG5pbXBvcnQgeyBVcmxTdHJpbmcgfSBmcm9tIFwiLi4vdXJsL1VybFN0cmluZ1wiO1xyXG5pbXBvcnQgeyBTZXJ2ZXJBdXRob3JpemF0aW9uQ29kZVJlc3BvbnNlIH0gZnJvbSBcIi4uL3Jlc3BvbnNlL1NlcnZlckF1dGhvcml6YXRpb25Db2RlUmVzcG9uc2VcIjtcclxuaW1wb3J0IHsgQWNjb3VudEVudGl0eSB9IGZyb20gXCIuLi9jYWNoZS9lbnRpdGllcy9BY2NvdW50RW50aXR5XCI7XHJcbmltcG9ydCB7IENvbW1vbkVuZFNlc3Npb25SZXF1ZXN0IH0gZnJvbSBcIi4uL3JlcXVlc3QvQ29tbW9uRW5kU2Vzc2lvblJlcXVlc3RcIjtcclxuaW1wb3J0IHsgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0NsaWVudENvbmZpZ3VyYXRpb25FcnJvclwiO1xyXG5pbXBvcnQgeyBQb3BUb2tlbkdlbmVyYXRvciB9IGZyb20gXCIuLi9jcnlwdG8vUG9wVG9rZW5HZW5lcmF0b3JcIjtcclxuaW1wb3J0IHsgUmVxdWVzdFRodW1icHJpbnQgfSBmcm9tIFwiLi4vbmV0d29yay9SZXF1ZXN0VGh1bWJwcmludFwiO1xyXG5pbXBvcnQgeyBBdXRob3JpemF0aW9uQ29kZVBheWxvYWQgfSBmcm9tIFwiLi4vcmVzcG9uc2UvQXV0aG9yaXphdGlvbkNvZGVQYXlsb2FkXCI7XHJcbmltcG9ydCB7IFRpbWVVdGlscyB9IGZyb20gXCIuLi91dGlscy9UaW1lVXRpbHNcIjtcclxuaW1wb3J0IHsgVG9rZW5DbGFpbXMgfSBmcm9tIFwiLi4vYWNjb3VudC9Ub2tlbkNsYWltc1wiO1xyXG5pbXBvcnQgeyBBY2NvdW50SW5mbyB9IGZyb20gXCIuLi9hY2NvdW50L0FjY291bnRJbmZvXCI7XHJcblxyXG4vKipcclxuICogT2F1dGgyLjAgQXV0aG9yaXphdGlvbiBDb2RlIGNsaWVudFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEF1dGhvcml6YXRpb25Db2RlQ2xpZW50IGV4dGVuZHMgQmFzZUNsaWVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoY29uZmlndXJhdGlvbjogQ2xpZW50Q29uZmlndXJhdGlvbikge1xyXG4gICAgICAgIHN1cGVyKGNvbmZpZ3VyYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyB0aGUgVVJMIG9mIHRoZSBhdXRob3JpemF0aW9uIHJlcXVlc3QgbGV0dGluZyB0aGUgdXNlciBpbnB1dCBjcmVkZW50aWFscyBhbmQgY29uc2VudCB0byB0aGVcclxuICAgICAqIGFwcGxpY2F0aW9uLiBUaGUgVVJMIHRhcmdldCB0aGUgL2F1dGhvcml6ZSBlbmRwb2ludCBvZiB0aGUgYXV0aG9yaXR5IGNvbmZpZ3VyZWQgaW4gdGhlXHJcbiAgICAgKiBhcHBsaWNhdGlvbiBvYmplY3QuXHJcbiAgICAgKlxyXG4gICAgICogT25jZSB0aGUgdXNlciBpbnB1dHMgdGhlaXIgY3JlZGVudGlhbHMgYW5kIGNvbnNlbnRzLCB0aGUgYXV0aG9yaXR5IHdpbGwgc2VuZCBhIHJlc3BvbnNlIHRvIHRoZSByZWRpcmVjdCBVUklcclxuICAgICAqIHNlbnQgaW4gdGhlIHJlcXVlc3QgYW5kIHNob3VsZCBjb250YWluIGFuIGF1dGhvcml6YXRpb24gY29kZSwgd2hpY2ggY2FuIHRoZW4gYmUgdXNlZCB0byBhY3F1aXJlIHRva2VucyB2aWFcclxuICAgICAqIGFjcXVpcmVUb2tlbihBdXRob3JpemF0aW9uQ29kZVJlcXVlc3QpXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFxyXG4gICAgICovXHJcbiAgICBhc3luYyBnZXRBdXRoQ29kZVVybChyZXF1ZXN0OiBDb21tb25BdXRob3JpemF0aW9uVXJsUmVxdWVzdCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSB0aGlzLmNyZWF0ZUF1dGhDb2RlVXJsUXVlcnlTdHJpbmcocmVxdWVzdCk7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuYXV0aG9yaXR5LmF1dGhvcml6YXRpb25FbmRwb2ludH0/JHtxdWVyeVN0cmluZ31gO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQVBJIHRvIGFjcXVpcmUgYSB0b2tlbiBpbiBleGNoYW5nZSBvZiAnYXV0aG9yaXphdGlvbl9jb2RlYCBhY3F1aXJlZCBieSB0aGUgdXNlciBpbiB0aGUgZmlyc3QgbGVnIG9mIHRoZVxyXG4gICAgICogYXV0aG9yaXphdGlvbl9jb2RlX2dyYW50XHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFxyXG4gICAgICovXHJcbiAgICBhc3luYyBhY3F1aXJlVG9rZW4ocmVxdWVzdDogQ29tbW9uQXV0aG9yaXphdGlvbkNvZGVSZXF1ZXN0LCBhdXRoQ29kZVBheWxvYWQ/OiBBdXRob3JpemF0aW9uQ29kZVBheWxvYWQpOiBQcm9taXNlPEF1dGhlbnRpY2F0aW9uUmVzdWx0PiB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcImluIGFjcXVpcmVUb2tlbiBjYWxsXCIpO1xyXG4gICAgICAgIGlmICghcmVxdWVzdCB8fCBTdHJpbmdVdGlscy5pc0VtcHR5KHJlcXVlc3QuY29kZSkpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZVRva2VuUmVxdWVzdENhbm5vdEJlTWFkZUVycm9yKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCByZXFUaW1lc3RhbXAgPSBUaW1lVXRpbHMubm93U2Vjb25kcygpO1xyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlVG9rZW5SZXF1ZXN0KHRoaXMuYXV0aG9yaXR5LCByZXF1ZXN0KTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2VIYW5kbGVyID0gbmV3IFJlc3BvbnNlSGFuZGxlcihcclxuICAgICAgICAgICAgdGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50SWQsXHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVNYW5hZ2VyLFxyXG4gICAgICAgICAgICB0aGlzLmNyeXB0b1V0aWxzLFxyXG4gICAgICAgICAgICB0aGlzLmxvZ2dlcixcclxuICAgICAgICAgICAgdGhpcy5jb25maWcuc2VyaWFsaXphYmxlQ2FjaGUsXHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnBlcnNpc3RlbmNlUGx1Z2luXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgLy8gVmFsaWRhdGUgcmVzcG9uc2UuIFRoaXMgZnVuY3Rpb24gdGhyb3dzIGEgc2VydmVyIGVycm9yIGlmIGFuIGVycm9yIGlzIHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXIuXHJcbiAgICAgICAgcmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlVG9rZW5SZXNwb25zZShyZXNwb25zZS5ib2R5KTtcclxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2VIYW5kbGVyLmhhbmRsZVNlcnZlclRva2VuUmVzcG9uc2UocmVzcG9uc2UuYm9keSwgdGhpcy5hdXRob3JpdHksIHJlcVRpbWVzdGFtcCwgcmVxdWVzdCwgYXV0aENvZGVQYXlsb2FkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZXMgdGhlIGhhc2ggZnJhZ21lbnQgcmVzcG9uc2UgZnJvbSBwdWJsaWMgY2xpZW50IGNvZGUgcmVxdWVzdC4gUmV0dXJucyBhIGNvZGUgcmVzcG9uc2UgdXNlZCBieVxyXG4gICAgICogdGhlIGNsaWVudCB0byBleGNoYW5nZSBmb3IgYSB0b2tlbiBpbiBhY3F1aXJlVG9rZW4uXHJcbiAgICAgKiBAcGFyYW0gaGFzaEZyYWdtZW50XHJcbiAgICAgKi9cclxuICAgIGhhbmRsZUZyYWdtZW50UmVzcG9uc2UoaGFzaEZyYWdtZW50OiBzdHJpbmcsIGNhY2hlZFN0YXRlOiBzdHJpbmcpOiBBdXRob3JpemF0aW9uQ29kZVBheWxvYWQge1xyXG4gICAgICAgIC8vIEhhbmRsZSByZXNwb25zZXMuXHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2VIYW5kbGVyID0gbmV3IFJlc3BvbnNlSGFuZGxlcih0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRJZCwgdGhpcy5jYWNoZU1hbmFnZXIsIHRoaXMuY3J5cHRvVXRpbHMsIHRoaXMubG9nZ2VyLCBudWxsLCBudWxsKTtcclxuXHJcbiAgICAgICAgLy8gRGVzZXJpYWxpemUgaGFzaCBmcmFnbWVudCByZXNwb25zZSBwYXJhbWV0ZXJzLlxyXG4gICAgICAgIGNvbnN0IGhhc2hVcmxTdHJpbmcgPSBuZXcgVXJsU3RyaW5nKGhhc2hGcmFnbWVudCk7XHJcbiAgICAgICAgLy8gRGVzZXJpYWxpemUgaGFzaCBmcmFnbWVudCByZXNwb25zZSBwYXJhbWV0ZXJzLlxyXG4gICAgICAgIGNvbnN0IHNlcnZlclBhcmFtczogU2VydmVyQXV0aG9yaXphdGlvbkNvZGVSZXNwb25zZSA9IFVybFN0cmluZy5nZXREZXNlcmlhbGl6ZWRIYXNoKGhhc2hVcmxTdHJpbmcuZ2V0SGFzaCgpKTtcclxuXHJcbiAgICAgICAgLy8gR2V0IGNvZGUgcmVzcG9uc2VcclxuICAgICAgICByZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTZXJ2ZXJBdXRob3JpemF0aW9uQ29kZVJlc3BvbnNlKHNlcnZlclBhcmFtcywgY2FjaGVkU3RhdGUsIHRoaXMuY3J5cHRvVXRpbHMpO1xyXG5cclxuICAgICAgICAvLyB0aHJvdyB3aGVuIHRoZXJlIGlzIG5vIGF1dGggY29kZSBpbiB0aGUgcmVzcG9uc2VcclxuICAgICAgICBpZiAoIXNlcnZlclBhcmFtcy5jb2RlKSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVOb0F1dGhDb2RlSW5TZXJ2ZXJSZXNwb25zZUVycm9yKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5zZXJ2ZXJQYXJhbXMsXHJcbiAgICAgICAgICAgIC8vIENvZGUgcGFyYW0gaXMgb3B0aW9uYWwgaW4gU2VydmVyQXV0aG9yaXphdGlvbkNvZGVSZXNwb25zZSBidXQgcmVxdWlyZWQgaW4gQXV0aG9yaXphdGlvbkNvZGVQYXlsb2RcclxuICAgICAgICAgICAgY29kZTogc2VydmVyUGFyYW1zLmNvZGVcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXNlIHRvIGxvZyBvdXQgdGhlIGN1cnJlbnQgdXNlciwgYW5kIHJlZGlyZWN0IHRoZSB1c2VyIHRvIHRoZSBwb3N0TG9nb3V0UmVkaXJlY3RVcmkuXHJcbiAgICAgKiBEZWZhdWx0IGJlaGF2aW91ciBpcyB0byByZWRpcmVjdCB0aGUgdXNlciB0byBgd2luZG93LmxvY2F0aW9uLmhyZWZgLlxyXG4gICAgICogQHBhcmFtIGF1dGhvcml0eVVyaVxyXG4gICAgICovXHJcbiAgICBnZXRMb2dvdXRVcmkobG9nb3V0UmVxdWVzdDogQ29tbW9uRW5kU2Vzc2lvblJlcXVlc3QpOiBzdHJpbmcge1xyXG4gICAgICAgIC8vIFRocm93IGVycm9yIGlmIGxvZ291dFJlcXVlc3QgaXMgbnVsbC91bmRlZmluZWRcclxuICAgICAgICBpZiAoIWxvZ291dFJlcXVlc3QpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yLmNyZWF0ZUVtcHR5TG9nb3V0UmVxdWVzdEVycm9yKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobG9nb3V0UmVxdWVzdC5hY2NvdW50KSB7XHJcbiAgICAgICAgICAgIC8vIENsZWFyIGdpdmVuIGFjY291bnQuXHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVNYW5hZ2VyLnJlbW92ZUFjY291bnQoQWNjb3VudEVudGl0eS5nZW5lcmF0ZUFjY291bnRDYWNoZUtleShsb2dvdXRSZXF1ZXN0LmFjY291bnQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBDbGVhciBhbGwgYWNjb3VudHMgYW5kIHRva2Vuc1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlTWFuYWdlci5jbGVhcigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSB0aGlzLmNyZWF0ZUxvZ291dFVybFF1ZXJ5U3RyaW5nKGxvZ291dFJlcXVlc3QpO1xyXG5cclxuICAgICAgICAvLyBDb25zdHJ1Y3QgbG9nb3V0IFVSSS5cclxuICAgICAgICByZXR1cm4gU3RyaW5nVXRpbHMuaXNFbXB0eShxdWVyeVN0cmluZykgPyB0aGlzLmF1dGhvcml0eS5lbmRTZXNzaW9uRW5kcG9pbnQgOiBgJHt0aGlzLmF1dGhvcml0eS5lbmRTZXNzaW9uRW5kcG9pbnR9PyR7cXVlcnlTdHJpbmd9YDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV4ZWN1dGVzIFBPU1QgcmVxdWVzdCB0byB0b2tlbiBlbmRwb2ludFxyXG4gICAgICogQHBhcmFtIGF1dGhvcml0eVxyXG4gICAgICogQHBhcmFtIHJlcXVlc3RcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhc3luYyBleGVjdXRlVG9rZW5SZXF1ZXN0KGF1dGhvcml0eTogQXV0aG9yaXR5LCByZXF1ZXN0OiBDb21tb25BdXRob3JpemF0aW9uQ29kZVJlcXVlc3QpOiBQcm9taXNlPE5ldHdvcmtSZXNwb25zZTxTZXJ2ZXJBdXRob3JpemF0aW9uVG9rZW5SZXNwb25zZT4+IHtcclxuICAgICAgICBjb25zdCB0aHVtYnByaW50OiBSZXF1ZXN0VGh1bWJwcmludCA9IHtcclxuICAgICAgICAgICAgY2xpZW50SWQ6IHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudElkLFxyXG4gICAgICAgICAgICBhdXRob3JpdHk6IGF1dGhvcml0eS5jYW5vbmljYWxBdXRob3JpdHksXHJcbiAgICAgICAgICAgIHNjb3BlczogcmVxdWVzdC5zY29wZXNcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCByZXF1ZXN0Qm9keSA9IGF3YWl0IHRoaXMuY3JlYXRlVG9rZW5SZXF1ZXN0Qm9keShyZXF1ZXN0KTtcclxuICAgICAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gdGhpcy5jcmVhdGVEZWZhdWx0VG9rZW5SZXF1ZXN0SGVhZGVycygpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5leGVjdXRlUG9zdFRvVG9rZW5FbmRwb2ludChhdXRob3JpdHkudG9rZW5FbmRwb2ludCwgcmVxdWVzdEJvZHksIGhlYWRlcnMsIHRodW1icHJpbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIGEgbWFwIGZvciBhbGwgdGhlIHBhcmFtcyB0byBiZSBzZW50IHRvIHRoZSBzZXJ2aWNlXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGFzeW5jIGNyZWF0ZVRva2VuUmVxdWVzdEJvZHkocmVxdWVzdDogQ29tbW9uQXV0aG9yaXphdGlvbkNvZGVSZXF1ZXN0KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJCdWlsZGVyID0gbmV3IFJlcXVlc3RQYXJhbWV0ZXJCdWlsZGVyKCk7XHJcblxyXG4gICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkQ2xpZW50SWQodGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50SWQpO1xyXG5cclxuICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgcmVkaXJlY3RVcmkgKHRvIGJlIGEgbm9uIG51bGwgdmFsdWUpXHJcbiAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRSZWRpcmVjdFVyaShyZXF1ZXN0LnJlZGlyZWN0VXJpKTtcclxuXHJcbiAgICAgICAgLy8gQWRkIHNjb3BlIGFycmF5LCBwYXJhbWV0ZXIgYnVpbGRlciB3aWxsIGFkZCBkZWZhdWx0IHNjb3BlcyBhbmQgZGVkdXBlXHJcbiAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRTY29wZXMocmVxdWVzdC5zY29wZXMpO1xyXG5cclxuICAgICAgICAvLyBhZGQgY29kZTogdXNlciBzZXQsIG5vdCB2YWxpZGF0ZWRcclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZEF1dGhvcml6YXRpb25Db2RlKHJlcXVlc3QuY29kZSk7XHJcblxyXG4gICAgICAgIC8vIGFkZCBjb2RlX3ZlcmlmaWVyIGlmIHBhc3NlZFxyXG4gICAgICAgIGlmIChyZXF1ZXN0LmNvZGVWZXJpZmllcikge1xyXG4gICAgICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZENvZGVWZXJpZmllcihyZXF1ZXN0LmNvZGVWZXJpZmllcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jb25maWcuY2xpZW50Q3JlZGVudGlhbHMuY2xpZW50U2VjcmV0KSB7XHJcbiAgICAgICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkQ2xpZW50U2VjcmV0KHRoaXMuY29uZmlnLmNsaWVudENyZWRlbnRpYWxzLmNsaWVudFNlY3JldCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jb25maWcuY2xpZW50Q3JlZGVudGlhbHMuY2xpZW50QXNzZXJ0aW9uKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsaWVudEFzc2VydGlvbiA9IHRoaXMuY29uZmlnLmNsaWVudENyZWRlbnRpYWxzLmNsaWVudEFzc2VydGlvbjtcclxuICAgICAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRDbGllbnRBc3NlcnRpb24oY2xpZW50QXNzZXJ0aW9uLmFzc2VydGlvbik7XHJcbiAgICAgICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkQ2xpZW50QXNzZXJ0aW9uVHlwZShjbGllbnRBc3NlcnRpb24uYXNzZXJ0aW9uVHlwZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZEdyYW50VHlwZShHcmFudFR5cGUuQVVUSE9SSVpBVElPTl9DT0RFX0dSQU5UKTtcclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZENsaWVudEluZm8oKTtcclxuXHJcbiAgICAgICAgaWYgKHJlcXVlc3QuYXV0aGVudGljYXRpb25TY2hlbWUgPT09IEF1dGhlbnRpY2F0aW9uU2NoZW1lLlBPUCAmJiAhIXJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0TWV0aG9kICYmICEhcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3RVcmkpIHtcclxuICAgICAgICAgICAgY29uc3QgcG9wVG9rZW5HZW5lcmF0b3IgPSBuZXcgUG9wVG9rZW5HZW5lcmF0b3IodGhpcy5jcnlwdG9VdGlscyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNuZlN0cmluZyA9IGF3YWl0IHBvcFRva2VuR2VuZXJhdG9yLmdlbmVyYXRlQ25mKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0TWV0aG9kLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdFVyaSk7XHJcbiAgICAgICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkUG9wVG9rZW4oY25mU3RyaW5nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNvcnJlbGF0aW9uSWQgPSByZXF1ZXN0LmNvcnJlbGF0aW9uSWQgfHwgdGhpcy5jb25maWcuY3J5cHRvSW50ZXJmYWNlLmNyZWF0ZU5ld0d1aWQoKTtcclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZENvcnJlbGF0aW9uSWQoY29ycmVsYXRpb25JZCk7XHJcblxyXG4gICAgICAgIGlmICghU3RyaW5nVXRpbHMuaXNFbXB0eShyZXF1ZXN0LmNsYWltcykgfHwgdGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzICYmIHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkQ2xhaW1zKHJlcXVlc3QuY2xhaW1zLCB0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHBhcmFtZXRlckJ1aWxkZXIuY3JlYXRlUXVlcnlTdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgQVBJIHZhbGlkYXRlcyB0aGUgYEF1dGhvcml6YXRpb25Db2RlVXJsUmVxdWVzdGAgYW5kIGNyZWF0ZXMgYSBVUkxcclxuICAgICAqIEBwYXJhbSByZXF1ZXN0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY3JlYXRlQXV0aENvZGVVcmxRdWVyeVN0cmluZyhyZXF1ZXN0OiBDb21tb25BdXRob3JpemF0aW9uVXJsUmVxdWVzdCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyQnVpbGRlciA9IG5ldyBSZXF1ZXN0UGFyYW1ldGVyQnVpbGRlcigpO1xyXG5cclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZENsaWVudElkKHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudElkKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVxdWVzdFNjb3BlcyA9IFsuLi5yZXF1ZXN0LnNjb3BlcyB8fCBbXSwgLi4ucmVxdWVzdC5leHRyYVNjb3Blc1RvQ29uc2VudCB8fCBbXV07XHJcbiAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRTY29wZXMocmVxdWVzdFNjb3Blcyk7XHJcblxyXG4gICAgICAgIC8vIHZhbGlkYXRlIHRoZSByZWRpcmVjdFVyaSAodG8gYmUgYSBub24gbnVsbCB2YWx1ZSlcclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZFJlZGlyZWN0VXJpKHJlcXVlc3QucmVkaXJlY3RVcmkpO1xyXG5cclxuICAgICAgICAvLyBnZW5lcmF0ZSB0aGUgY29ycmVsYXRpb25JZCBpZiBub3Qgc2V0IGJ5IHRoZSB1c2VyIGFuZCBhZGRcclxuICAgICAgICBjb25zdCBjb3JyZWxhdGlvbklkID0gcmVxdWVzdC5jb3JyZWxhdGlvbklkIHx8IHRoaXMuY29uZmlnLmNyeXB0b0ludGVyZmFjZS5jcmVhdGVOZXdHdWlkKCk7XHJcbiAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRDb3JyZWxhdGlvbklkKGNvcnJlbGF0aW9uSWQpO1xyXG5cclxuICAgICAgICAvLyBhZGQgcmVzcG9uc2VfbW9kZS4gSWYgbm90IHBhc3NlZCBpbiBpdCBkZWZhdWx0cyB0byBxdWVyeS5cclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZFJlc3BvbnNlTW9kZShyZXF1ZXN0LnJlc3BvbnNlTW9kZSk7XHJcblxyXG4gICAgICAgIC8vIGFkZCByZXNwb25zZV90eXBlID0gY29kZVxyXG4gICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkUmVzcG9uc2VUeXBlQ29kZSgpO1xyXG5cclxuICAgICAgICAvLyBhZGQgbGlicmFyeSBpbmZvIHBhcmFtZXRlcnNcclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZExpYnJhcnlJbmZvKHRoaXMuY29uZmlnLmxpYnJhcnlJbmZvKTtcclxuXHJcbiAgICAgICAgLy8gYWRkIGNsaWVudF9pbmZvPTFcclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZENsaWVudEluZm8oKTtcclxuXHJcbiAgICAgICAgaWYgKHJlcXVlc3QuY29kZUNoYWxsZW5nZSAmJiByZXF1ZXN0LmNvZGVDaGFsbGVuZ2VNZXRob2QpIHtcclxuICAgICAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRDb2RlQ2hhbGxlbmdlUGFyYW1zKHJlcXVlc3QuY29kZUNoYWxsZW5nZSwgcmVxdWVzdC5jb2RlQ2hhbGxlbmdlTWV0aG9kKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXF1ZXN0LnByb21wdCkge1xyXG4gICAgICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZFByb21wdChyZXF1ZXN0LnByb21wdCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVxdWVzdC5kb21haW5IaW50KSB7XHJcbiAgICAgICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkRG9tYWluSGludChyZXF1ZXN0LmRvbWFpbkhpbnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQWRkIHNpZCBvciBsb2dpbkhpbnQgd2l0aCBwcmVmZXJlbmNlIGZvciBzaWQgLT4gbG9naW5IaW50IC0+IHVzZXJuYW1lIG9mIEFjY291bnRJbmZvIG9iamVjdFxyXG4gICAgICAgIGlmIChyZXF1ZXN0LnNpZCkge1xyXG4gICAgICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZFNpZChyZXF1ZXN0LnNpZCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LmFjY291bnQpIHtcclxuICAgICAgICAgICAgY29uc3QgYWNjb3VudFNpZCA9IHRoaXMuZXh0cmFjdEFjY291bnRTaWQocmVxdWVzdC5hY2NvdW50KTtcclxuICAgICAgICAgICAgLy8gSWYgYWNjb3VudCBhbmQgbG9naW5IaW50IGFyZSBwcm92aWRlZCwgd2Ugd2lsbCBjaGVjayBhY2NvdW50IGZpcnN0IGZvciBzaWQgYmVmb3JlIGFkZGluZyBsb2dpbkhpbnRcclxuICAgICAgICAgICAgaWYgKGFjY291bnRTaWQpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkU2lkKGFjY291bnRTaWQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3QubG9naW5IaW50KSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZExvZ2luSGludChyZXF1ZXN0LmxvZ2luSGludCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdC5hY2NvdW50LnVzZXJuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byBhY2NvdW50IHVzZXJuYW1lIGlmIHByb3ZpZGVkXHJcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZExvZ2luSGludChyZXF1ZXN0LmFjY291bnQudXNlcm5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LmxvZ2luSGludCkge1xyXG4gICAgICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZExvZ2luSGludChyZXF1ZXN0LmxvZ2luSGludCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVxdWVzdC5ub25jZSkge1xyXG4gICAgICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZE5vbmNlKHJlcXVlc3Qubm9uY2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlcXVlc3Quc3RhdGUpIHtcclxuICAgICAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRTdGF0ZShyZXF1ZXN0LnN0YXRlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghU3RyaW5nVXRpbHMuaXNFbXB0eShyZXF1ZXN0LmNsYWltcykgfHwgdGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzICYmIHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkQ2xhaW1zKHJlcXVlc3QuY2xhaW1zLCB0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlcXVlc3QuZXh0cmFRdWVyeVBhcmFtZXRlcnMpIHtcclxuICAgICAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRFeHRyYVF1ZXJ5UGFyYW1ldGVycyhyZXF1ZXN0LmV4dHJhUXVlcnlQYXJhbWV0ZXJzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBwYXJhbWV0ZXJCdWlsZGVyLmNyZWF0ZVF1ZXJ5U3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIEFQSSB2YWxpZGF0ZXMgdGhlIGBFbmRTZXNzaW9uUmVxdWVzdGAgYW5kIGNyZWF0ZXMgYSBVUkxcclxuICAgICAqIEBwYXJhbSByZXF1ZXN0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY3JlYXRlTG9nb3V0VXJsUXVlcnlTdHJpbmcocmVxdWVzdDogQ29tbW9uRW5kU2Vzc2lvblJlcXVlc3QpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlckJ1aWxkZXIgPSBuZXcgUmVxdWVzdFBhcmFtZXRlckJ1aWxkZXIoKTtcclxuXHJcbiAgICAgICAgaWYgKHJlcXVlc3QucG9zdExvZ291dFJlZGlyZWN0VXJpKSB7XHJcbiAgICAgICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkUG9zdExvZ291dFJlZGlyZWN0VXJpKHJlcXVlc3QucG9zdExvZ291dFJlZGlyZWN0VXJpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXF1ZXN0LmNvcnJlbGF0aW9uSWQpIHtcclxuICAgICAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRDb3JyZWxhdGlvbklkKHJlcXVlc3QuY29ycmVsYXRpb25JZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVxdWVzdC5pZFRva2VuSGludCkge1xyXG4gICAgICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZElkVG9rZW5IaW50KHJlcXVlc3QuaWRUb2tlbkhpbnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHBhcmFtZXRlckJ1aWxkZXIuY3JlYXRlUXVlcnlTdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciB0byBnZXQgc2lkIGZyb20gYWNjb3VudC4gUmV0dXJucyBudWxsIGlmIGlkVG9rZW5DbGFpbXMgYXJlIG5vdCBwcmVzZW50IG9yIHNpZCBpcyBub3QgcHJlc2VudC5cclxuICAgICAqIEBwYXJhbSBhY2NvdW50IFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGV4dHJhY3RBY2NvdW50U2lkKGFjY291bnQ6IEFjY291bnRJbmZvKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKGFjY291bnQuaWRUb2tlbkNsYWltcykge1xyXG4gICAgICAgICAgICBjb25zdCB0b2tlbkNsYWltcyA9IGFjY291bnQuaWRUb2tlbkNsYWltcyBhcyBUb2tlbkNsYWltcztcclxuICAgICAgICAgICAgcmV0dXJuIHRva2VuQ2xhaW1zLnNpZCB8fCBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IERldmljZUNvZGVSZXNwb25zZSwgU2VydmVyRGV2aWNlQ29kZVJlc3BvbnNlIH0gZnJvbSBcIi4uL3Jlc3BvbnNlL0RldmljZUNvZGVSZXNwb25zZVwiO1xyXG5pbXBvcnQgeyBCYXNlQ2xpZW50IH0gZnJvbSBcIi4vQmFzZUNsaWVudFwiO1xyXG5pbXBvcnQgeyBDb21tb25EZXZpY2VDb2RlUmVxdWVzdCB9IGZyb20gXCIuLi9yZXF1ZXN0L0NvbW1vbkRldmljZUNvZGVSZXF1ZXN0XCI7XHJcbmltcG9ydCB7IENsaWVudEF1dGhFcnJvciB9IGZyb20gXCIuLi9lcnJvci9DbGllbnRBdXRoRXJyb3JcIjtcclxuaW1wb3J0IHsgUmVxdWVzdFBhcmFtZXRlckJ1aWxkZXIgfSBmcm9tIFwiLi4vcmVxdWVzdC9SZXF1ZXN0UGFyYW1ldGVyQnVpbGRlclwiO1xyXG5pbXBvcnQgeyBDb25zdGFudHMsIEdyYW50VHlwZSB9IGZyb20gXCIuLi91dGlscy9Db25zdGFudHNcIjtcclxuaW1wb3J0IHsgQ2xpZW50Q29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi9jb25maWcvQ2xpZW50Q29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBUaW1lVXRpbHMgfSBmcm9tIFwiLi4vdXRpbHMvVGltZVV0aWxzXCI7XHJcbmltcG9ydCB7IFNlcnZlckF1dGhvcml6YXRpb25Ub2tlblJlc3BvbnNlIH0gZnJvbSBcIi4uL3Jlc3BvbnNlL1NlcnZlckF1dGhvcml6YXRpb25Ub2tlblJlc3BvbnNlXCI7XHJcbmltcG9ydCB7IFJlc3BvbnNlSGFuZGxlciB9IGZyb20gXCIuLi9yZXNwb25zZS9SZXNwb25zZUhhbmRsZXJcIjtcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25SZXN1bHQgfSBmcm9tIFwiLi4vcmVzcG9uc2UvQXV0aGVudGljYXRpb25SZXN1bHRcIjtcclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tIFwiLi4vdXRpbHMvU3RyaW5nVXRpbHNcIjtcclxuaW1wb3J0IHsgUmVxdWVzdFRodW1icHJpbnQgfSBmcm9tIFwiLi4vbmV0d29yay9SZXF1ZXN0VGh1bWJwcmludFwiO1xyXG5cclxuLyoqXHJcbiAqIE9BdXRoMi4wIERldmljZSBjb2RlIGNsaWVudFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERldmljZUNvZGVDbGllbnQgZXh0ZW5kcyBCYXNlQ2xpZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uOiBDbGllbnRDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgICAgc3VwZXIoY29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGRldmljZSBjb2RlIGZyb20gZGV2aWNlIGNvZGUgZW5kcG9pbnQsIGNhbGxzIGJhY2sgdG8gd2l0aCBkZXZpY2UgY29kZSByZXNwb25zZSwgYW5kXHJcbiAgICAgKiBwb2xscyB0b2tlbiBlbmRwb2ludCB0byBleGNoYW5nZSBkZXZpY2UgY29kZSBmb3IgdG9rZW5zXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXN5bmMgYWNxdWlyZVRva2VuKHJlcXVlc3Q6IENvbW1vbkRldmljZUNvZGVSZXF1ZXN0KTogUHJvbWlzZTxBdXRoZW50aWNhdGlvblJlc3VsdCB8IG51bGw+IHtcclxuICAgICAgICBjb25zdCBkZXZpY2VDb2RlUmVzcG9uc2U6IERldmljZUNvZGVSZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0RGV2aWNlQ29kZShyZXF1ZXN0KTtcclxuICAgICAgICByZXF1ZXN0LmRldmljZUNvZGVDYWxsYmFjayhkZXZpY2VDb2RlUmVzcG9uc2UpO1xyXG4gICAgICAgIGNvbnN0IHJlcVRpbWVzdGFtcCA9IFRpbWVVdGlscy5ub3dTZWNvbmRzKCk7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2U6IFNlcnZlckF1dGhvcml6YXRpb25Ub2tlblJlc3BvbnNlID0gYXdhaXQgdGhpcy5hY3F1aXJlVG9rZW5XaXRoRGV2aWNlQ29kZShcclxuICAgICAgICAgICAgcmVxdWVzdCxcclxuICAgICAgICAgICAgZGV2aWNlQ29kZVJlc3BvbnNlKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2VIYW5kbGVyID0gbmV3IFJlc3BvbnNlSGFuZGxlcihcclxuICAgICAgICAgICAgdGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50SWQsXHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVNYW5hZ2VyLFxyXG4gICAgICAgICAgICB0aGlzLmNyeXB0b1V0aWxzLFxyXG4gICAgICAgICAgICB0aGlzLmxvZ2dlcixcclxuICAgICAgICAgICAgdGhpcy5jb25maWcuc2VyaWFsaXphYmxlQ2FjaGUsXHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnBlcnNpc3RlbmNlUGx1Z2luXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgLy8gVmFsaWRhdGUgcmVzcG9uc2UuIFRoaXMgZnVuY3Rpb24gdGhyb3dzIGEgc2VydmVyIGVycm9yIGlmIGFuIGVycm9yIGlzIHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXIuXHJcbiAgICAgICAgcmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlVG9rZW5SZXNwb25zZShyZXNwb25zZSk7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlSGFuZGxlci5oYW5kbGVTZXJ2ZXJUb2tlblJlc3BvbnNlKFxyXG4gICAgICAgICAgICByZXNwb25zZSxcclxuICAgICAgICAgICAgdGhpcy5hdXRob3JpdHksXHJcbiAgICAgICAgICAgIHJlcVRpbWVzdGFtcCxcclxuICAgICAgICAgICAgcmVxdWVzdFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGRldmljZSBjb2RlIHJlcXVlc3QgYW5kIGV4ZWN1dGVzIGh0dHAgR0VUXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGFzeW5jIGdldERldmljZUNvZGUocmVxdWVzdDogQ29tbW9uRGV2aWNlQ29kZVJlcXVlc3QpOiBQcm9taXNlPERldmljZUNvZGVSZXNwb25zZT4ge1xyXG4gICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gdGhpcy5jcmVhdGVRdWVyeVN0cmluZyhyZXF1ZXN0KTtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5jcmVhdGVEZWZhdWx0VG9rZW5SZXF1ZXN0SGVhZGVycygpO1xyXG4gICAgICAgIGNvbnN0IHRodW1icHJpbnQ6IFJlcXVlc3RUaHVtYnByaW50ID0ge1xyXG4gICAgICAgICAgICBjbGllbnRJZDogdGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50SWQsXHJcbiAgICAgICAgICAgIGF1dGhvcml0eTogcmVxdWVzdC5hdXRob3JpdHksXHJcbiAgICAgICAgICAgIHNjb3BlczogcmVxdWVzdC5zY29wZXNcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5leGVjdXRlUG9zdFJlcXVlc3RUb0RldmljZUNvZGVFbmRwb2ludCh0aGlzLmF1dGhvcml0eS5kZXZpY2VDb2RlRW5kcG9pbnQsIHF1ZXJ5U3RyaW5nLCBoZWFkZXJzLCB0aHVtYnByaW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV4ZWN1dGVzIFBPU1QgcmVxdWVzdCB0byBkZXZpY2UgY29kZSBlbmRwb2ludFxyXG4gICAgICogQHBhcmFtIGRldmljZUNvZGVFbmRwb2ludFxyXG4gICAgICogQHBhcmFtIHF1ZXJ5U3RyaW5nXHJcbiAgICAgKiBAcGFyYW0gaGVhZGVyc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVQb3N0UmVxdWVzdFRvRGV2aWNlQ29kZUVuZHBvaW50KFxyXG4gICAgICAgIGRldmljZUNvZGVFbmRwb2ludDogc3RyaW5nLFxyXG4gICAgICAgIHF1ZXJ5U3RyaW5nOiBzdHJpbmcsXHJcbiAgICAgICAgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcclxuICAgICAgICB0aHVtYnByaW50OiBSZXF1ZXN0VGh1bWJwcmludCk6IFByb21pc2U8RGV2aWNlQ29kZVJlc3BvbnNlPiB7XHJcblxyXG4gICAgICAgIGNvbnN0IHtcclxuICAgICAgICAgICAgYm9keToge1xyXG4gICAgICAgICAgICAgICAgdXNlcl9jb2RlOiB1c2VyQ29kZSxcclxuICAgICAgICAgICAgICAgIGRldmljZV9jb2RlOiBkZXZpY2VDb2RlLFxyXG4gICAgICAgICAgICAgICAgdmVyaWZpY2F0aW9uX3VyaTogdmVyaWZpY2F0aW9uVXJpLFxyXG4gICAgICAgICAgICAgICAgZXhwaXJlc19pbjogZXhwaXJlc0luLFxyXG4gICAgICAgICAgICAgICAgaW50ZXJ2YWwsXHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ID0gYXdhaXQgdGhpcy5uZXR3b3JrTWFuYWdlci5zZW5kUG9zdFJlcXVlc3Q8U2VydmVyRGV2aWNlQ29kZVJlc3BvbnNlPihcclxuICAgICAgICAgICAgdGh1bWJwcmludCxcclxuICAgICAgICAgICAgZGV2aWNlQ29kZUVuZHBvaW50LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBib2R5OiBxdWVyeVN0cmluZyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnNcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHVzZXJDb2RlLFxyXG4gICAgICAgICAgICBkZXZpY2VDb2RlLFxyXG4gICAgICAgICAgICB2ZXJpZmljYXRpb25VcmksXHJcbiAgICAgICAgICAgIGV4cGlyZXNJbixcclxuICAgICAgICAgICAgaW50ZXJ2YWwsXHJcbiAgICAgICAgICAgIG1lc3NhZ2VcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlIGRldmljZSBjb2RlIGVuZHBvaW50IHF1ZXJ5IHBhcmFtZXRlcnMgYW5kIHJldHVybnMgc3RyaW5nXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY3JlYXRlUXVlcnlTdHJpbmcocmVxdWVzdDogQ29tbW9uRGV2aWNlQ29kZVJlcXVlc3QpOiBzdHJpbmcge1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJCdWlsZGVyOiBSZXF1ZXN0UGFyYW1ldGVyQnVpbGRlciA9IG5ldyBSZXF1ZXN0UGFyYW1ldGVyQnVpbGRlcigpO1xyXG5cclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZFNjb3BlcyhyZXF1ZXN0LnNjb3Blcyk7XHJcbiAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRDbGllbnRJZCh0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRJZCk7XHJcblxyXG4gICAgICAgIGlmICghU3RyaW5nVXRpbHMuaXNFbXB0eShyZXF1ZXN0LmNsYWltcykgfHwgdGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzICYmIHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkQ2xhaW1zKHJlcXVlc3QuY2xhaW1zLCB0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHBhcmFtZXRlckJ1aWxkZXIuY3JlYXRlUXVlcnlTdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdG9rZW4gcmVxdWVzdCB3aXRoIGRldmljZSBjb2RlIHJlc3BvbnNlIGFuZCBwb2xscyB0b2tlbiBlbmRwb2ludCBhdCBpbnRlcnZhbCBzZXQgYnkgdGhlIGRldmljZSBjb2RlXHJcbiAgICAgKiByZXNwb25zZVxyXG4gICAgICogQHBhcmFtIHJlcXVlc3RcclxuICAgICAqIEBwYXJhbSBkZXZpY2VDb2RlUmVzcG9uc2VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhc3luYyBhY3F1aXJlVG9rZW5XaXRoRGV2aWNlQ29kZShcclxuICAgICAgICByZXF1ZXN0OiBDb21tb25EZXZpY2VDb2RlUmVxdWVzdCxcclxuICAgICAgICBkZXZpY2VDb2RlUmVzcG9uc2U6IERldmljZUNvZGVSZXNwb25zZSk6IFByb21pc2U8U2VydmVyQXV0aG9yaXphdGlvblRva2VuUmVzcG9uc2U+IHtcclxuXHJcbiAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSB0aGlzLmNyZWF0ZVRva2VuUmVxdWVzdEJvZHkocmVxdWVzdCwgZGV2aWNlQ29kZVJlc3BvbnNlKTtcclxuICAgICAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gdGhpcy5jcmVhdGVEZWZhdWx0VG9rZW5SZXF1ZXN0SGVhZGVycygpO1xyXG5cclxuICAgICAgICBjb25zdCB1c2VyU3BlY2lmaWVkVGltZW91dCA9IHJlcXVlc3QudGltZW91dCA/IFRpbWVVdGlscy5ub3dTZWNvbmRzKCkgKyByZXF1ZXN0LnRpbWVvdXQgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgY29uc3QgZGV2aWNlQ29kZUV4cGlyYXRpb25UaW1lID0gVGltZVV0aWxzLm5vd1NlY29uZHMoKSArIGRldmljZUNvZGVSZXNwb25zZS5leHBpcmVzSW47XHJcbiAgICAgICAgY29uc3QgcG9sbGluZ0ludGVydmFsTWlsbGkgPSBkZXZpY2VDb2RlUmVzcG9uc2UuaW50ZXJ2YWwgKiAxMDAwO1xyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgICAqIFBvbGwgdG9rZW4gZW5kcG9pbnQgd2hpbGUgKGRldmljZSBjb2RlIGlzIG5vdCBleHBpcmVkIEFORCBvcGVyYXRpb24gaGFzIG5vdCBiZWVuIGNhbmNlbGxlZCBieVxyXG4gICAgICAgICAqIHNldHRpbmcgQ2FuY2VsbGF0aW9uVG9rZW4uY2FuY2VsID0gdHJ1ZSkuIFBPU1QgcmVxdWVzdCBpcyBzZW50IGF0IGludGVydmFsIHNldCBieSBwb2xsaW5nSW50ZXJ2YWxNaWxsaVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxTZXJ2ZXJBdXRob3JpemF0aW9uVG9rZW5SZXNwb25zZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaW50ZXJ2YWxJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gPSBzZXRJbnRlcnZhbChhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0LmNhbmNlbCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXCJUb2tlbiByZXF1ZXN0IGNhbmNlbGxlZCBieSBzZXR0aW5nIERldmljZUNvZGVSZXF1ZXN0LmNhbmNlbCA9IHRydWVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChDbGllbnRBdXRoRXJyb3IuY3JlYXRlRGV2aWNlQ29kZUNhbmNlbGxlZEVycm9yKCkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHVzZXJTcGVjaWZpZWRUaW1lb3V0ICYmIHVzZXJTcGVjaWZpZWRUaW1lb3V0IDwgZGV2aWNlQ29kZUV4cGlyYXRpb25UaW1lICYmIFRpbWVVdGlscy5ub3dTZWNvbmRzKCkgPiB1c2VyU3BlY2lmaWVkVGltZW91dCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoYFVzZXIgZGVmaW5lZCB0aW1lb3V0IGZvciBkZXZpY2UgY29kZSBwb2xsaW5nIHJlYWNoZWQuIFRoZSB0aW1lb3V0IHdhcyBzZXQgZm9yICR7dXNlclNwZWNpZmllZFRpbWVvdXR9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChDbGllbnRBdXRoRXJyb3IuY3JlYXRlVXNlclRpbWVvdXRSZWFjaGVkRXJyb3IoKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoVGltZVV0aWxzLm5vd1NlY29uZHMoKSA+IGRldmljZUNvZGVFeHBpcmF0aW9uVGltZSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJTcGVjaWZpZWRUaW1lb3V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci52ZXJib3NlKGBVc2VyIHNwZWNpZmllZCB0aW1lb3V0IGlnbm9yZWQgYXMgdGhlIGRldmljZSBjb2RlIGhhcyBleHBpcmVkIGJlZm9yZSB0aGUgdGltZW91dCBlbGFwc2VkLiBUaGUgdXNlciBzcGVjaWZpZWQgdGltZW91dCB3YXMgc2V0IGZvciAke3VzZXJTcGVjaWZpZWRUaW1lb3V0fWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgRGV2aWNlIGNvZGUgZXhwaXJlZC4gRXhwaXJhdGlvbiB0aW1lIG9mIGRldmljZSBjb2RlIHdhcyAke2RldmljZUNvZGVFeHBpcmF0aW9uVGltZX1gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KENsaWVudEF1dGhFcnJvci5jcmVhdGVEZXZpY2VDb2RlRXhwaXJlZEVycm9yKCkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0aHVtYnByaW50OiBSZXF1ZXN0VGh1bWJwcmludCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElkOiB0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eTogcmVxdWVzdC5hdXRob3JpdHksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZXM6IHJlcXVlc3Quc2NvcGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlUG9zdFRvVG9rZW5FbmRwb2ludChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aG9yaXR5LnRva2VuRW5kcG9pbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHVtYnByaW50KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5ib2R5ICYmIHJlc3BvbnNlLmJvZHkuZXJyb3IgPT09IENvbnN0YW50cy5BVVRIT1JJWkFUSU9OX1BFTkRJTkcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZXIgYXV0aG9yaXphdGlvbiBpcyBwZW5kaW5nLiBTbGVlcCBmb3IgcG9sbGluZyBpbnRlcnZhbCBhbmQgdHJ5IGFnYWluXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKHJlc3BvbnNlLmJvZHkuZXJyb3JfZGVzY3JpcHRpb24gfHwgXCJub19lcnJvcl9kZXNjcmlwdGlvblwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIHBvbGxpbmdJbnRlcnZhbE1pbGxpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgcXVlcnkgcGFyYW1ldGVycyBhbmQgY29udmVydHMgdG8gc3RyaW5nLlxyXG4gICAgICogQHBhcmFtIHJlcXVlc3RcclxuICAgICAqIEBwYXJhbSBkZXZpY2VDb2RlUmVzcG9uc2VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjcmVhdGVUb2tlblJlcXVlc3RCb2R5KHJlcXVlc3Q6IENvbW1vbkRldmljZUNvZGVSZXF1ZXN0LCBkZXZpY2VDb2RlUmVzcG9uc2U6IERldmljZUNvZGVSZXNwb25zZSk6IHN0cmluZyB7XHJcblxyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RQYXJhbWV0ZXJzOiBSZXF1ZXN0UGFyYW1ldGVyQnVpbGRlciA9IG5ldyBSZXF1ZXN0UGFyYW1ldGVyQnVpbGRlcigpO1xyXG5cclxuICAgICAgICByZXF1ZXN0UGFyYW1ldGVycy5hZGRTY29wZXMocmVxdWVzdC5zY29wZXMpO1xyXG4gICAgICAgIHJlcXVlc3RQYXJhbWV0ZXJzLmFkZENsaWVudElkKHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudElkKTtcclxuICAgICAgICByZXF1ZXN0UGFyYW1ldGVycy5hZGRHcmFudFR5cGUoR3JhbnRUeXBlLkRFVklDRV9DT0RFX0dSQU5UKTtcclxuICAgICAgICByZXF1ZXN0UGFyYW1ldGVycy5hZGREZXZpY2VDb2RlKGRldmljZUNvZGVSZXNwb25zZS5kZXZpY2VDb2RlKTtcclxuICAgICAgICBjb25zdCBjb3JyZWxhdGlvbklkID0gcmVxdWVzdC5jb3JyZWxhdGlvbklkIHx8IHRoaXMuY29uZmlnLmNyeXB0b0ludGVyZmFjZS5jcmVhdGVOZXdHdWlkKCk7XHJcbiAgICAgICAgcmVxdWVzdFBhcmFtZXRlcnMuYWRkQ29ycmVsYXRpb25JZChjb3JyZWxhdGlvbklkKTtcclxuICAgICAgICByZXF1ZXN0UGFyYW1ldGVycy5hZGRDbGllbnRJbmZvKCk7XHJcblxyXG4gICAgICAgIGlmICghU3RyaW5nVXRpbHMuaXNFbXB0eShyZXF1ZXN0LmNsYWltcykgfHwgdGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzICYmIHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJlcXVlc3RQYXJhbWV0ZXJzLmFkZENsYWltcyhyZXF1ZXN0LmNsYWltcywgdGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcXVlc3RQYXJhbWV0ZXJzLmNyZWF0ZVF1ZXJ5U3RyaW5nKCk7XHJcbiAgICB9XHJcbn1cclxuIiwiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBDbGllbnRDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uL2NvbmZpZy9DbGllbnRDb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IEJhc2VDbGllbnQgfSBmcm9tIFwiLi9CYXNlQ2xpZW50XCI7XHJcbmltcG9ydCB7IENvbW1vblJlZnJlc2hUb2tlblJlcXVlc3QgfSBmcm9tIFwiLi4vcmVxdWVzdC9Db21tb25SZWZyZXNoVG9rZW5SZXF1ZXN0XCI7XHJcbmltcG9ydCB7IEF1dGhvcml0eSB9IGZyb20gXCIuLi9hdXRob3JpdHkvQXV0aG9yaXR5XCI7XHJcbmltcG9ydCB7IFNlcnZlckF1dGhvcml6YXRpb25Ub2tlblJlc3BvbnNlIH0gZnJvbSBcIi4uL3Jlc3BvbnNlL1NlcnZlckF1dGhvcml6YXRpb25Ub2tlblJlc3BvbnNlXCI7XHJcbmltcG9ydCB7IFJlcXVlc3RQYXJhbWV0ZXJCdWlsZGVyIH0gZnJvbSBcIi4uL3JlcXVlc3QvUmVxdWVzdFBhcmFtZXRlckJ1aWxkZXJcIjtcclxuaW1wb3J0IHsgR3JhbnRUeXBlLCBBdXRoZW50aWNhdGlvblNjaGVtZSwgRXJyb3JzICB9IGZyb20gXCIuLi91dGlscy9Db25zdGFudHNcIjtcclxuaW1wb3J0IHsgUmVzcG9uc2VIYW5kbGVyIH0gZnJvbSBcIi4uL3Jlc3BvbnNlL1Jlc3BvbnNlSGFuZGxlclwiO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblJlc3VsdCB9IGZyb20gXCIuLi9yZXNwb25zZS9BdXRoZW50aWNhdGlvblJlc3VsdFwiO1xyXG5pbXBvcnQgeyBQb3BUb2tlbkdlbmVyYXRvciB9IGZyb20gXCIuLi9jcnlwdG8vUG9wVG9rZW5HZW5lcmF0b3JcIjtcclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tIFwiLi4vdXRpbHMvU3RyaW5nVXRpbHNcIjtcclxuaW1wb3J0IHsgUmVxdWVzdFRodW1icHJpbnQgfSBmcm9tIFwiLi4vbmV0d29yay9SZXF1ZXN0VGh1bWJwcmludFwiO1xyXG5pbXBvcnQgeyBOZXR3b3JrUmVzcG9uc2UgfSBmcm9tIFwiLi4vbmV0d29yay9OZXR3b3JrTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBDb21tb25TaWxlbnRGbG93UmVxdWVzdCB9IGZyb20gXCIuLi9yZXF1ZXN0L0NvbW1vblNpbGVudEZsb3dSZXF1ZXN0XCI7XHJcbmltcG9ydCB7IENsaWVudENvbmZpZ3VyYXRpb25FcnJvciB9IGZyb20gXCIuLi9lcnJvci9DbGllbnRDb25maWd1cmF0aW9uRXJyb3JcIjtcclxuaW1wb3J0IHsgQ2xpZW50QXV0aEVycm9yLCBDbGllbnRBdXRoRXJyb3JNZXNzYWdlIH0gZnJvbSBcIi4uL2Vycm9yL0NsaWVudEF1dGhFcnJvclwiO1xyXG5pbXBvcnQgeyBTZXJ2ZXJFcnJvciB9IGZyb20gXCIuLi9lcnJvci9TZXJ2ZXJFcnJvclwiO1xyXG5pbXBvcnQgeyBUaW1lVXRpbHMgfSBmcm9tIFwiLi4vdXRpbHMvVGltZVV0aWxzXCI7XHJcblxyXG4vKipcclxuICogT0F1dGgyLjAgcmVmcmVzaCB0b2tlbiBjbGllbnRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBSZWZyZXNoVG9rZW5DbGllbnQgZXh0ZW5kcyBCYXNlQ2xpZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uOiBDbGllbnRDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgICAgc3VwZXIoY29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGFjcXVpcmVUb2tlbihyZXF1ZXN0OiBDb21tb25SZWZyZXNoVG9rZW5SZXF1ZXN0KTogUHJvbWlzZTxBdXRoZW50aWNhdGlvblJlc3VsdD57XHJcbiAgICAgICAgY29uc3QgcmVxVGltZXN0YW1wID0gVGltZVV0aWxzLm5vd1NlY29uZHMoKTtcclxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZVRva2VuUmVxdWVzdChyZXF1ZXN0LCB0aGlzLmF1dGhvcml0eSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlSGFuZGxlciA9IG5ldyBSZXNwb25zZUhhbmRsZXIoXHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudElkLFxyXG4gICAgICAgICAgICB0aGlzLmNhY2hlTWFuYWdlcixcclxuICAgICAgICAgICAgdGhpcy5jcnlwdG9VdGlscyxcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIsXHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnNlcmlhbGl6YWJsZUNhY2hlLFxyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5wZXJzaXN0ZW5jZVBsdWdpblxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVRva2VuUmVzcG9uc2UocmVzcG9uc2UuYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlSGFuZGxlci5oYW5kbGVTZXJ2ZXJUb2tlblJlc3BvbnNlKFxyXG4gICAgICAgICAgICByZXNwb25zZS5ib2R5LFxyXG4gICAgICAgICAgICB0aGlzLmF1dGhvcml0eSxcclxuICAgICAgICAgICAgcmVxVGltZXN0YW1wLFxyXG4gICAgICAgICAgICByZXF1ZXN0LFxyXG4gICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGNhY2hlZCByZWZyZXNoIHRva2VuIGFuZCBhdHRhY2hlcyB0byByZXF1ZXN0LCB0aGVuIGNhbGxzIGFjcXVpcmVUb2tlbiBBUElcclxuICAgICAqIEBwYXJhbSByZXF1ZXN0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhc3luYyBhY3F1aXJlVG9rZW5CeVJlZnJlc2hUb2tlbihyZXF1ZXN0OiBDb21tb25TaWxlbnRGbG93UmVxdWVzdCk6IFByb21pc2U8QXV0aGVudGljYXRpb25SZXN1bHQ+IHtcclxuICAgICAgICAvLyBDYW5ub3QgcmVuZXcgdG9rZW4gaWYgbm8gcmVxdWVzdCBvYmplY3QgaXMgZ2l2ZW4uXHJcbiAgICAgICAgaWYgKCFyZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudENvbmZpZ3VyYXRpb25FcnJvci5jcmVhdGVFbXB0eVRva2VuUmVxdWVzdEVycm9yKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBXZSBjdXJyZW50bHkgZG8gbm90IHN1cHBvcnQgc2lsZW50IGZsb3cgZm9yIGFjY291bnQgPT09IG51bGwgdXNlIGNhc2VzOyBUaGlzIHdpbGwgYmUgcmV2aXNpdGVkIGZvciBjb25maWRlbnRpYWwgZmxvdyB1c2VjYXNlc1xyXG4gICAgICAgIGlmICghcmVxdWVzdC5hY2NvdW50KSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVOb0FjY291bnRJblNpbGVudFJlcXVlc3RFcnJvcigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdHJ5IGNoZWNraW5nIGlmIEZPQ0kgaXMgZW5hYmxlZCBmb3IgdGhlIGdpdmVuIGFwcGxpY2F0aW9uXHJcbiAgICAgICAgY29uc3QgaXNGT0NJID0gdGhpcy5jYWNoZU1hbmFnZXIuaXNBcHBNZXRhZGF0YUZPQ0kocmVxdWVzdC5hY2NvdW50LmVudmlyb25tZW50LCB0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRJZCk7XHJcblxyXG4gICAgICAgIC8vIGlmIHRoZSBhcHAgaXMgcGFydCBvZiB0aGUgZmFtaWx5LCByZXRyaXZlIGEgRmFtaWx5IHJlZnJlc2ggdG9rZW4gaWYgcHJlc2VudCBhbmQgbWFrZSBhIHJlZnJlc2hUb2tlblJlcXVlc3RcclxuICAgICAgICBpZiAoaXNGT0NJKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hY3F1aXJlVG9rZW5XaXRoQ2FjaGVkUmVmcmVzaFRva2VuKHJlcXVlc3QsIHRydWUpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub0ZhbWlseVJUSW5DYWNoZSA9IGUgaW5zdGFuY2VvZiBDbGllbnRBdXRoRXJyb3IgJiYgZS5lcnJvckNvZGUgPT09IENsaWVudEF1dGhFcnJvck1lc3NhZ2Uubm9Ub2tlbnNGb3VuZEVycm9yLmNvZGU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbGllbnRNaXNtYXRjaEVycm9yV2l0aEZhbWlseVJUID0gZSBpbnN0YW5jZW9mIFNlcnZlckVycm9yICYmIGUuZXJyb3JDb2RlID09PSBFcnJvcnMuSU5WQUxJRF9HUkFOVF9FUlJPUiAmJiBlLnN1YkVycm9yID09PSBFcnJvcnMuQ0xJRU5UX01JU01BVENIX0VSUk9SO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGlmIGZhbWlseSBSZWZyZXNoIFRva2VuIChGUlQpIGNhY2hlIGFjcXVpc2l0aW9uIGZhaWxzIG9yIGlmIGNsaWVudF9taXNtYXRjaCBlcnJvciBpcyBzZWVuIHdpdGggRlJULCByZWF0dGVtcHQgd2l0aCBhcHBsaWNhdGlvbiBSZWZyZXNoIFRva2VuIChBUlQpXHJcbiAgICAgICAgICAgICAgICBpZiAobm9GYW1pbHlSVEluQ2FjaGUgfHwgY2xpZW50TWlzbWF0Y2hFcnJvcldpdGhGYW1pbHlSVCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFjcXVpcmVUb2tlbldpdGhDYWNoZWRSZWZyZXNoVG9rZW4ocmVxdWVzdCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhyb3cgaW4gYWxsIG90aGVyIGNhc2VzXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGZhbGwgYmFjayB0byBhcHBsaWNhdGlvbiByZWZyZXNoIHRva2VuIGFjcXVpc2l0aW9uXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWNxdWlyZVRva2VuV2l0aENhY2hlZFJlZnJlc2hUb2tlbihyZXF1ZXN0LCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBtYWtlcyBhIG5ldHdvcmsgY2FsbCB0byBhY3F1aXJlIHRva2VucyBieSBleGNoYW5naW5nIFJlZnJlc2hUb2tlbiBhdmFpbGFibGUgaW4gdXNlckNhY2hlOyB0aHJvd3MgaWYgcmVmcmVzaCB0b2tlbiBpcyBub3QgY2FjaGVkXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGFzeW5jIGFjcXVpcmVUb2tlbldpdGhDYWNoZWRSZWZyZXNoVG9rZW4ocmVxdWVzdDogQ29tbW9uU2lsZW50Rmxvd1JlcXVlc3QsIGZvY2k6IGJvb2xlYW4pIHtcclxuICAgICAgICAvLyBmZXRjaGVzIGZhbWlseSBSVCBvciBhcHBsaWNhdGlvbiBSVCBiYXNlZCBvbiBGT0NJIHZhbHVlXHJcbiAgICAgICAgY29uc3QgcmVmcmVzaFRva2VuID0gdGhpcy5jYWNoZU1hbmFnZXIucmVhZFJlZnJlc2hUb2tlbkZyb21DYWNoZSh0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRJZCwgcmVxdWVzdC5hY2NvdW50LCBmb2NpKTtcclxuXHJcbiAgICAgICAgLy8gbm8gcmVmcmVzaCBUb2tlblxyXG4gICAgICAgIGlmICghcmVmcmVzaFRva2VuKSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVOb1Rva2Vuc0ZvdW5kRXJyb3IoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHJlZnJlc2hUb2tlblJlcXVlc3Q6IENvbW1vblJlZnJlc2hUb2tlblJlcXVlc3QgPSB7XHJcbiAgICAgICAgICAgIC4uLnJlcXVlc3QsXHJcbiAgICAgICAgICAgIHJlZnJlc2hUb2tlbjogcmVmcmVzaFRva2VuLnNlY3JldCxcclxuICAgICAgICAgICAgYXV0aGVudGljYXRpb25TY2hlbWU6IEF1dGhlbnRpY2F0aW9uU2NoZW1lLkJFQVJFUlxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmFjcXVpcmVUb2tlbihyZWZyZXNoVG9rZW5SZXF1ZXN0KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdHMgdGhlIG5ldHdvcmsgbWVzc2FnZSBhbmQgbWFrZXMgYSBOVyBjYWxsIHRvIHRoZSB1bmRlcmx5aW5nIHNlY3VyZSB0b2tlbiBzZXJ2aWNlXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFxyXG4gICAgICogQHBhcmFtIGF1dGhvcml0eVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVUb2tlblJlcXVlc3QocmVxdWVzdDogQ29tbW9uUmVmcmVzaFRva2VuUmVxdWVzdCwgYXV0aG9yaXR5OiBBdXRob3JpdHkpXHJcbiAgICAgICAgOiBQcm9taXNlPE5ldHdvcmtSZXNwb25zZTxTZXJ2ZXJBdXRob3JpemF0aW9uVG9rZW5SZXNwb25zZT4+IHtcclxuXHJcbiAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSBhd2FpdCB0aGlzLmNyZWF0ZVRva2VuUmVxdWVzdEJvZHkocmVxdWVzdCk7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHRoaXMuY3JlYXRlRGVmYXVsdFRva2VuUmVxdWVzdEhlYWRlcnMoKTtcclxuICAgICAgICBjb25zdCB0aHVtYnByaW50OiBSZXF1ZXN0VGh1bWJwcmludCA9IHtcclxuICAgICAgICAgICAgY2xpZW50SWQ6IHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudElkLFxyXG4gICAgICAgICAgICBhdXRob3JpdHk6IGF1dGhvcml0eS5jYW5vbmljYWxBdXRob3JpdHksXHJcbiAgICAgICAgICAgIHNjb3BlczogcmVxdWVzdC5zY29wZXNcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5leGVjdXRlUG9zdFRvVG9rZW5FbmRwb2ludChhdXRob3JpdHkudG9rZW5FbmRwb2ludCwgcmVxdWVzdEJvZHksIGhlYWRlcnMsIHRodW1icHJpbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUgdG9rZW4gcmVxdWVzdCBib2R5XHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGFzeW5jIGNyZWF0ZVRva2VuUmVxdWVzdEJvZHkocmVxdWVzdDogQ29tbW9uUmVmcmVzaFRva2VuUmVxdWVzdCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyQnVpbGRlciA9IG5ldyBSZXF1ZXN0UGFyYW1ldGVyQnVpbGRlcigpO1xyXG5cclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZENsaWVudElkKHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudElkKTtcclxuXHJcbiAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRTY29wZXMocmVxdWVzdC5zY29wZXMpO1xyXG5cclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZEdyYW50VHlwZShHcmFudFR5cGUuUkVGUkVTSF9UT0tFTl9HUkFOVCk7XHJcblxyXG4gICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkQ2xpZW50SW5mbygpO1xyXG5cclxuICAgICAgICBjb25zdCBjb3JyZWxhdGlvbklkID0gcmVxdWVzdC5jb3JyZWxhdGlvbklkIHx8IHRoaXMuY29uZmlnLmNyeXB0b0ludGVyZmFjZS5jcmVhdGVOZXdHdWlkKCk7XHJcbiAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRDb3JyZWxhdGlvbklkKGNvcnJlbGF0aW9uSWQpO1xyXG5cclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZFJlZnJlc2hUb2tlbihyZXF1ZXN0LnJlZnJlc2hUb2tlbik7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5jbGllbnRDcmVkZW50aWFscy5jbGllbnRTZWNyZXQpIHtcclxuICAgICAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRDbGllbnRTZWNyZXQodGhpcy5jb25maWcuY2xpZW50Q3JlZGVudGlhbHMuY2xpZW50U2VjcmV0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5jbGllbnRDcmVkZW50aWFscy5jbGllbnRBc3NlcnRpb24pIHtcclxuICAgICAgICAgICAgY29uc3QgY2xpZW50QXNzZXJ0aW9uID0gdGhpcy5jb25maWcuY2xpZW50Q3JlZGVudGlhbHMuY2xpZW50QXNzZXJ0aW9uO1xyXG4gICAgICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZENsaWVudEFzc2VydGlvbihjbGllbnRBc3NlcnRpb24uYXNzZXJ0aW9uKTtcclxuICAgICAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRDbGllbnRBc3NlcnRpb25UeXBlKGNsaWVudEFzc2VydGlvbi5hc3NlcnRpb25UeXBlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXF1ZXN0LmF1dGhlbnRpY2F0aW9uU2NoZW1lID09PSBBdXRoZW50aWNhdGlvblNjaGVtZS5QT1ApIHtcclxuICAgICAgICAgICAgY29uc3QgcG9wVG9rZW5HZW5lcmF0b3IgPSBuZXcgUG9wVG9rZW5HZW5lcmF0b3IodGhpcy5jcnlwdG9VdGlscyk7XHJcbiAgICAgICAgICAgIGlmICghcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3RNZXRob2QgfHwgIXJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0VXJpKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBDbGllbnRDb25maWd1cmF0aW9uRXJyb3IuY3JlYXRlUmVzb3VyY2VSZXF1ZXN0UGFyYW1ldGVyc1JlcXVpcmVkRXJyb3IoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRQb3BUb2tlbihhd2FpdCBwb3BUb2tlbkdlbmVyYXRvci5nZW5lcmF0ZUNuZihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdE1ldGhvZCwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3RVcmkpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghU3RyaW5nVXRpbHMuaXNFbXB0eShyZXF1ZXN0LmNsYWltcykgfHwgdGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzICYmIHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkQ2xhaW1zKHJlcXVlc3QuY2xhaW1zLCB0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHBhcmFtZXRlckJ1aWxkZXIuY3JlYXRlUXVlcnlTdHJpbmcoKTtcclxuICAgIH1cclxufVxyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENsaWVudENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vY29uZmlnL0NsaWVudENvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgQmFzZUNsaWVudCB9IGZyb20gXCIuL0Jhc2VDbGllbnRcIjtcclxuaW1wb3J0IHsgQXV0aG9yaXR5IH0gZnJvbSBcIi4uL2F1dGhvcml0eS9BdXRob3JpdHlcIjtcclxuaW1wb3J0IHsgUmVxdWVzdFBhcmFtZXRlckJ1aWxkZXIgfSBmcm9tIFwiLi4vcmVxdWVzdC9SZXF1ZXN0UGFyYW1ldGVyQnVpbGRlclwiO1xyXG5pbXBvcnQgeyBTY29wZVNldCB9IGZyb20gXCIuLi9yZXF1ZXN0L1Njb3BlU2V0XCI7XHJcbmltcG9ydCB7IEdyYW50VHlwZSAsIENyZWRlbnRpYWxUeXBlIH0gZnJvbSBcIi4uL3V0aWxzL0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBSZXNwb25zZUhhbmRsZXIgfSBmcm9tIFwiLi4vcmVzcG9uc2UvUmVzcG9uc2VIYW5kbGVyXCI7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uUmVzdWx0IH0gZnJvbSBcIi4uL3Jlc3BvbnNlL0F1dGhlbnRpY2F0aW9uUmVzdWx0XCI7XHJcbmltcG9ydCB7IENvbW1vbkNsaWVudENyZWRlbnRpYWxSZXF1ZXN0IH0gZnJvbSBcIi4uL3JlcXVlc3QvQ29tbW9uQ2xpZW50Q3JlZGVudGlhbFJlcXVlc3RcIjtcclxuaW1wb3J0IHsgQ3JlZGVudGlhbEZpbHRlciwgQ3JlZGVudGlhbENhY2hlIH0gZnJvbSBcIi4uL2NhY2hlL3V0aWxzL0NhY2hlVHlwZXNcIjtcclxuaW1wb3J0IHsgQWNjZXNzVG9rZW5FbnRpdHkgfSBmcm9tIFwiLi4vY2FjaGUvZW50aXRpZXMvQWNjZXNzVG9rZW5FbnRpdHlcIjtcclxuaW1wb3J0IHsgVGltZVV0aWxzIH0gZnJvbSBcIi4uL3V0aWxzL1RpbWVVdGlsc1wiO1xyXG5pbXBvcnQgeyBTdHJpbmdVdGlscyB9IGZyb20gXCIuLi91dGlscy9TdHJpbmdVdGlsc1wiO1xyXG5pbXBvcnQgeyBSZXF1ZXN0VGh1bWJwcmludCB9IGZyb20gXCIuLi9uZXR3b3JrL1JlcXVlc3RUaHVtYnByaW50XCI7XHJcbmltcG9ydCB7IENsaWVudEF1dGhFcnJvciB9IGZyb20gXCIuLi9lcnJvci9DbGllbnRBdXRoRXJyb3JcIjtcclxuXHJcbi8qKlxyXG4gKiBPQXV0aDIuMCBjbGllbnQgY3JlZGVudGlhbCBncmFudFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENsaWVudENyZWRlbnRpYWxDbGllbnQgZXh0ZW5kcyBCYXNlQ2xpZW50IHtcclxuXHJcbiAgICBwcml2YXRlIHNjb3BlU2V0OiBTY29wZVNldDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uOiBDbGllbnRDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgICAgc3VwZXIoY29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQdWJsaWMgQVBJIHRvIGFjcXVpcmUgYSB0b2tlbiB3aXRoIENsaWVudENyZWRlbnRpYWwgRmxvdyBmb3IgQ29uZmlkZW50aWFsIGNsaWVudHNcclxuICAgICAqIEBwYXJhbSByZXF1ZXN0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhc3luYyBhY3F1aXJlVG9rZW4ocmVxdWVzdDogQ29tbW9uQ2xpZW50Q3JlZGVudGlhbFJlcXVlc3QpOiBQcm9taXNlPEF1dGhlbnRpY2F0aW9uUmVzdWx0IHwgbnVsbD4ge1xyXG5cclxuICAgICAgICB0aGlzLnNjb3BlU2V0ID0gbmV3IFNjb3BlU2V0KHJlcXVlc3Quc2NvcGVzIHx8IFtdKTtcclxuXHJcbiAgICAgICAgaWYgKHJlcXVlc3Quc2tpcENhY2hlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVUb2tlblJlcXVlc3QocmVxdWVzdCwgdGhpcy5hdXRob3JpdHkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY2FjaGVkQXV0aGVudGljYXRpb25SZXN1bHQgPSBhd2FpdCB0aGlzLmdldENhY2hlZEF1dGhlbnRpY2F0aW9uUmVzdWx0KHJlcXVlc3QpO1xyXG4gICAgICAgIGlmIChjYWNoZWRBdXRoZW50aWNhdGlvblJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQXV0aGVudGljYXRpb25SZXN1bHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZVRva2VuUmVxdWVzdChyZXF1ZXN0LCB0aGlzLmF1dGhvcml0eSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogbG9va3MgdXAgY2FjaGUgaWYgdGhlIHRva2VucyBhcmUgY2FjaGVkIGFscmVhZHlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRDYWNoZWRBdXRoZW50aWNhdGlvblJlc3VsdChyZXF1ZXN0OiBDb21tb25DbGllbnRDcmVkZW50aWFsUmVxdWVzdCk6IFByb21pc2U8QXV0aGVudGljYXRpb25SZXN1bHQgfCBudWxsPiB7XHJcbiAgICAgICAgY29uc3QgY2FjaGVkQWNjZXNzVG9rZW4gPSB0aGlzLnJlYWRBY2Nlc3NUb2tlbkZyb21DYWNoZSgpO1xyXG4gICAgICAgIGlmICghY2FjaGVkQWNjZXNzVG9rZW4gfHxcclxuICAgICAgICAgICAgVGltZVV0aWxzLmlzVG9rZW5FeHBpcmVkKGNhY2hlZEFjY2Vzc1Rva2VuLmV4cGlyZXNPbiwgdGhpcy5jb25maWcuc3lzdGVtT3B0aW9ucy50b2tlblJlbmV3YWxPZmZzZXRTZWNvbmRzKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBhd2FpdCBSZXNwb25zZUhhbmRsZXIuZ2VuZXJhdGVBdXRoZW50aWNhdGlvblJlc3VsdChcclxuICAgICAgICAgICAgdGhpcy5jcnlwdG9VdGlscyxcclxuICAgICAgICAgICAgdGhpcy5hdXRob3JpdHksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGFjY291bnQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBpZFRva2VuOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgYWNjZXNzVG9rZW46IGNhY2hlZEFjY2Vzc1Rva2VuLFxyXG4gICAgICAgICAgICAgICAgcmVmcmVzaFRva2VuOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgYXBwTWV0YWRhdGE6IG51bGxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgICAgcmVxdWVzdFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWFkcyBhY2Nlc3MgdG9rZW4gZnJvbSB0aGUgY2FjaGVcclxuICAgICAqIFRPRE86IE1vdmUgdGhpcyBjYWxsIHRvIGNhY2hlTWFuYWdlciBpbnN0ZWFkXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZEFjY2Vzc1Rva2VuRnJvbUNhY2hlKCk6IEFjY2Vzc1Rva2VuRW50aXR5IHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3QgYWNjZXNzVG9rZW5GaWx0ZXI6IENyZWRlbnRpYWxGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgIGhvbWVBY2NvdW50SWQ6IFwiXCIsXHJcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB0aGlzLmF1dGhvcml0eS5jYW5vbmljYWxBdXRob3JpdHlVcmxDb21wb25lbnRzLkhvc3ROYW1lQW5kUG9ydCxcclxuICAgICAgICAgICAgY3JlZGVudGlhbFR5cGU6IENyZWRlbnRpYWxUeXBlLkFDQ0VTU19UT0tFTixcclxuICAgICAgICAgICAgY2xpZW50SWQ6IHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudElkLFxyXG4gICAgICAgICAgICByZWFsbTogdGhpcy5hdXRob3JpdHkudGVuYW50LFxyXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMuc2NvcGVTZXQucHJpbnRTY29wZXNMb3dlckNhc2UoKVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgY3JlZGVudGlhbENhY2hlOiBDcmVkZW50aWFsQ2FjaGUgPSB0aGlzLmNhY2hlTWFuYWdlci5nZXRDcmVkZW50aWFsc0ZpbHRlcmVkQnkoYWNjZXNzVG9rZW5GaWx0ZXIpO1xyXG4gICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VucyA9IE9iamVjdC5rZXlzKGNyZWRlbnRpYWxDYWNoZS5hY2Nlc3NUb2tlbnMpLm1hcChrZXkgPT4gY3JlZGVudGlhbENhY2hlLmFjY2Vzc1Rva2Vuc1trZXldKTtcclxuICAgICAgICBpZiAoYWNjZXNzVG9rZW5zLmxlbmd0aCA8IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChhY2Nlc3NUb2tlbnMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRBdXRoRXJyb3IuY3JlYXRlTXVsdGlwbGVNYXRjaGluZ1Rva2Vuc0luQ2FjaGVFcnJvcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYWNjZXNzVG9rZW5zWzBdIGFzIEFjY2Vzc1Rva2VuRW50aXR5O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWFrZXMgYSBuZXR3b3JrIGNhbGwgdG8gcmVxdWVzdCB0aGUgdG9rZW4gZnJvbSB0aGUgc2VydmljZVxyXG4gICAgICogQHBhcmFtIHJlcXVlc3RcclxuICAgICAqIEBwYXJhbSBhdXRob3JpdHlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhc3luYyBleGVjdXRlVG9rZW5SZXF1ZXN0KHJlcXVlc3Q6IENvbW1vbkNsaWVudENyZWRlbnRpYWxSZXF1ZXN0LCBhdXRob3JpdHk6IEF1dGhvcml0eSlcclxuICAgICAgICA6IFByb21pc2U8QXV0aGVudGljYXRpb25SZXN1bHQgfCBudWxsPiB7XHJcblxyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0gdGhpcy5jcmVhdGVUb2tlblJlcXVlc3RCb2R5KHJlcXVlc3QpO1xyXG4gICAgICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB0aGlzLmNyZWF0ZURlZmF1bHRUb2tlblJlcXVlc3RIZWFkZXJzKCk7XHJcbiAgICAgICAgY29uc3QgdGh1bWJwcmludDogUmVxdWVzdFRodW1icHJpbnQgPSB7XHJcbiAgICAgICAgICAgIGNsaWVudElkOiB0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRJZCxcclxuICAgICAgICAgICAgYXV0aG9yaXR5OiByZXF1ZXN0LmF1dGhvcml0eSxcclxuICAgICAgICAgICAgc2NvcGVzOiByZXF1ZXN0LnNjb3Blc1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IHJlcVRpbWVzdGFtcCA9IFRpbWVVdGlscy5ub3dTZWNvbmRzKCk7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVQb3N0VG9Ub2tlbkVuZHBvaW50KGF1dGhvcml0eS50b2tlbkVuZHBvaW50LCByZXF1ZXN0Qm9keSwgaGVhZGVycywgdGh1bWJwcmludCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlSGFuZGxlciA9IG5ldyBSZXNwb25zZUhhbmRsZXIoXHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudElkLFxyXG4gICAgICAgICAgICB0aGlzLmNhY2hlTWFuYWdlcixcclxuICAgICAgICAgICAgdGhpcy5jcnlwdG9VdGlscyxcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIsXHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnNlcmlhbGl6YWJsZUNhY2hlLFxyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5wZXJzaXN0ZW5jZVBsdWdpblxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVRva2VuUmVzcG9uc2UocmVzcG9uc2UuYm9keSk7XHJcbiAgICAgICAgY29uc3QgdG9rZW5SZXNwb25zZSA9IGF3YWl0IHJlc3BvbnNlSGFuZGxlci5oYW5kbGVTZXJ2ZXJUb2tlblJlc3BvbnNlKFxyXG4gICAgICAgICAgICByZXNwb25zZS5ib2R5LFxyXG4gICAgICAgICAgICB0aGlzLmF1dGhvcml0eSxcclxuICAgICAgICAgICAgcmVxVGltZXN0YW1wLFxyXG4gICAgICAgICAgICByZXF1ZXN0XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRva2VuUmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBnZW5lcmF0ZSB0aGUgcmVxdWVzdCB0byB0aGUgc2VydmVyIGluIHRoZSBhY2NlcHRhYmxlIGZvcm1hdFxyXG4gICAgICogQHBhcmFtIHJlcXVlc3RcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjcmVhdGVUb2tlblJlcXVlc3RCb2R5KHJlcXVlc3Q6IENvbW1vbkNsaWVudENyZWRlbnRpYWxSZXF1ZXN0KTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJCdWlsZGVyID0gbmV3IFJlcXVlc3RQYXJhbWV0ZXJCdWlsZGVyKCk7XHJcblxyXG4gICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkQ2xpZW50SWQodGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50SWQpO1xyXG5cclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZFNjb3BlcyhyZXF1ZXN0LnNjb3BlcywgZmFsc2UpO1xyXG5cclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZEdyYW50VHlwZShHcmFudFR5cGUuQ0xJRU5UX0NSRURFTlRJQUxTX0dSQU5UKTtcclxuXHJcbiAgICAgICAgY29uc3QgY29ycmVsYXRpb25JZCA9IHJlcXVlc3QuY29ycmVsYXRpb25JZCB8fCB0aGlzLmNvbmZpZy5jcnlwdG9JbnRlcmZhY2UuY3JlYXRlTmV3R3VpZCgpO1xyXG4gICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkQ29ycmVsYXRpb25JZChjb3JyZWxhdGlvbklkKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmNsaWVudENyZWRlbnRpYWxzLmNsaWVudFNlY3JldCkge1xyXG4gICAgICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZENsaWVudFNlY3JldCh0aGlzLmNvbmZpZy5jbGllbnRDcmVkZW50aWFscy5jbGllbnRTZWNyZXQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmNsaWVudENyZWRlbnRpYWxzLmNsaWVudEFzc2VydGlvbikge1xyXG4gICAgICAgICAgICBjb25zdCBjbGllbnRBc3NlcnRpb24gPSB0aGlzLmNvbmZpZy5jbGllbnRDcmVkZW50aWFscy5jbGllbnRBc3NlcnRpb247XHJcbiAgICAgICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkQ2xpZW50QXNzZXJ0aW9uKGNsaWVudEFzc2VydGlvbi5hc3NlcnRpb24pO1xyXG4gICAgICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZENsaWVudEFzc2VydGlvblR5cGUoY2xpZW50QXNzZXJ0aW9uLmFzc2VydGlvblR5cGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFTdHJpbmdVdGlscy5pc0VtcHR5KHJlcXVlc3QuY2xhaW1zKSB8fCB0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMgJiYgdGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRDbGFpbXMocmVxdWVzdC5jbGFpbXMsIHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcGFyYW1ldGVyQnVpbGRlci5jcmVhdGVRdWVyeVN0cmluZygpO1xyXG4gICAgfVxyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ2xpZW50Q29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi9jb25maWcvQ2xpZW50Q29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBCYXNlQ2xpZW50IH0gZnJvbSBcIi4vQmFzZUNsaWVudFwiO1xyXG5pbXBvcnQgeyBBdXRob3JpdHkgfSBmcm9tIFwiLi4vYXV0aG9yaXR5L0F1dGhvcml0eVwiO1xyXG5pbXBvcnQgeyBSZXF1ZXN0UGFyYW1ldGVyQnVpbGRlciB9IGZyb20gXCIuLi9yZXF1ZXN0L1JlcXVlc3RQYXJhbWV0ZXJCdWlsZGVyXCI7XHJcbmltcG9ydCB7IFNjb3BlU2V0IH0gZnJvbSBcIi4uL3JlcXVlc3QvU2NvcGVTZXRcIjtcclxuaW1wb3J0IHsgR3JhbnRUeXBlLCBBQURTZXJ2ZXJQYXJhbUtleXMgLCBDcmVkZW50aWFsVHlwZSwgQ29uc3RhbnRzIH0gZnJvbSBcIi4uL3V0aWxzL0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBSZXNwb25zZUhhbmRsZXIgfSBmcm9tIFwiLi4vcmVzcG9uc2UvUmVzcG9uc2VIYW5kbGVyXCI7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uUmVzdWx0IH0gZnJvbSBcIi4uL3Jlc3BvbnNlL0F1dGhlbnRpY2F0aW9uUmVzdWx0XCI7XHJcbmltcG9ydCB7IENvbW1vbk9uQmVoYWxmT2ZSZXF1ZXN0IH0gZnJvbSBcIi4uL3JlcXVlc3QvQ29tbW9uT25CZWhhbGZPZlJlcXVlc3RcIjtcclxuaW1wb3J0IHsgVGltZVV0aWxzIH0gZnJvbSBcIi4uL3V0aWxzL1RpbWVVdGlsc1wiO1xyXG5pbXBvcnQgeyBDcmVkZW50aWFsRmlsdGVyLCBDcmVkZW50aWFsQ2FjaGUgfSBmcm9tIFwiLi4vY2FjaGUvdXRpbHMvQ2FjaGVUeXBlc1wiO1xyXG5pbXBvcnQgeyBBY2Nlc3NUb2tlbkVudGl0eSB9IGZyb20gXCIuLi9jYWNoZS9lbnRpdGllcy9BY2Nlc3NUb2tlbkVudGl0eVwiO1xyXG5pbXBvcnQgeyBJZFRva2VuRW50aXR5IH0gZnJvbSBcIi4uL2NhY2hlL2VudGl0aWVzL0lkVG9rZW5FbnRpdHlcIjtcclxuaW1wb3J0IHsgQWNjb3VudEVudGl0eSB9IGZyb20gXCIuLi9jYWNoZS9lbnRpdGllcy9BY2NvdW50RW50aXR5XCI7XHJcbmltcG9ydCB7IEF1dGhUb2tlbiB9IGZyb20gXCIuLi9hY2NvdW50L0F1dGhUb2tlblwiO1xyXG5pbXBvcnQgeyBDbGllbnRBdXRoRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvQ2xpZW50QXV0aEVycm9yXCI7XHJcbmltcG9ydCB7IFJlcXVlc3RUaHVtYnByaW50IH0gZnJvbSBcIi4uL25ldHdvcmsvUmVxdWVzdFRodW1icHJpbnRcIjtcclxuaW1wb3J0IHsgQWNjb3VudEluZm8gfSBmcm9tIFwiLi4vYWNjb3VudC9BY2NvdW50SW5mb1wiO1xyXG5cclxuLyoqXHJcbiAqIE9uLUJlaGFsZi1PZiBjbGllbnRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBPbkJlaGFsZk9mQ2xpZW50IGV4dGVuZHMgQmFzZUNsaWVudCB7XHJcblxyXG4gICAgcHJpdmF0ZSBzY29wZVNldDogU2NvcGVTZXQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoY29uZmlndXJhdGlvbjogQ2xpZW50Q29uZmlndXJhdGlvbikge1xyXG4gICAgICAgIHN1cGVyKGNvbmZpZ3VyYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHVibGljIEFQSSB0byBhY3F1aXJlIHRva2VucyB3aXRoIG9uIGJlaGFsZiBvZiBmbG93XHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXN5bmMgYWNxdWlyZVRva2VuKHJlcXVlc3Q6IENvbW1vbk9uQmVoYWxmT2ZSZXF1ZXN0KTogUHJvbWlzZTxBdXRoZW50aWNhdGlvblJlc3VsdCB8IG51bGw+IHtcclxuICAgICAgICB0aGlzLnNjb3BlU2V0ID0gbmV3IFNjb3BlU2V0KHJlcXVlc3Quc2NvcGVzIHx8IFtdKTtcclxuXHJcbiAgICAgICAgaWYgKHJlcXVlc3Quc2tpcENhY2hlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVUb2tlblJlcXVlc3QocmVxdWVzdCwgdGhpcy5hdXRob3JpdHkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY2FjaGVkQXV0aGVudGljYXRpb25SZXN1bHQgPSBhd2FpdCB0aGlzLmdldENhY2hlZEF1dGhlbnRpY2F0aW9uUmVzdWx0KHJlcXVlc3QpO1xyXG4gICAgICAgIGlmIChjYWNoZWRBdXRoZW50aWNhdGlvblJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQXV0aGVudGljYXRpb25SZXN1bHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZVRva2VuUmVxdWVzdChyZXF1ZXN0LCB0aGlzLmF1dGhvcml0eSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogbG9vayB1cCBjYWNoZSBmb3IgdG9rZW5zXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGFzeW5jIGdldENhY2hlZEF1dGhlbnRpY2F0aW9uUmVzdWx0KHJlcXVlc3Q6IENvbW1vbk9uQmVoYWxmT2ZSZXF1ZXN0KTogUHJvbWlzZTxBdXRoZW50aWNhdGlvblJlc3VsdCB8IG51bGw+IHtcclxuICAgICAgICBjb25zdCBjYWNoZWRBY2Nlc3NUb2tlbiA9IHRoaXMucmVhZEFjY2Vzc1Rva2VuRnJvbUNhY2hlKHJlcXVlc3QpO1xyXG4gICAgICAgIGlmICghY2FjaGVkQWNjZXNzVG9rZW4gfHxcclxuICAgICAgICAgICAgVGltZVV0aWxzLmlzVG9rZW5FeHBpcmVkKGNhY2hlZEFjY2Vzc1Rva2VuLmV4cGlyZXNPbiwgdGhpcy5jb25maWcuc3lzdGVtT3B0aW9ucy50b2tlblJlbmV3YWxPZmZzZXRTZWNvbmRzKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNhY2hlZElkVG9rZW4gPSB0aGlzLnJlYWRJZFRva2VuRnJvbUNhY2hlKHJlcXVlc3QpO1xyXG4gICAgICAgIGxldCBpZFRva2VuT2JqZWN0OiBBdXRoVG9rZW4gfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgbGV0IGNhY2hlZEFjY291bnQ6IEFjY291bnRFbnRpdHkgfCBudWxsID0gbnVsbDtcclxuICAgICAgICBpZiAoY2FjaGVkSWRUb2tlbikge1xyXG4gICAgICAgICAgICBpZFRva2VuT2JqZWN0ID0gbmV3IEF1dGhUb2tlbihjYWNoZWRJZFRva2VuLnNlY3JldCwgdGhpcy5jb25maWcuY3J5cHRvSW50ZXJmYWNlKTtcclxuICAgICAgICAgICAgY29uc3QgbG9jYWxBY2NvdW50SWQgPSBpZFRva2VuT2JqZWN0LmNsYWltcy5vaWQgPyBpZFRva2VuT2JqZWN0LmNsYWltcy5vaWQgOiBpZFRva2VuT2JqZWN0LmNsYWltcy5zdWI7XHJcbiAgICAgICAgICAgIGNvbnN0IGFjY291bnRJbmZvOiBBY2NvdW50SW5mbyA9IHtcclxuICAgICAgICAgICAgICAgIGhvbWVBY2NvdW50SWQ6IGNhY2hlZElkVG9rZW4uaG9tZUFjY291bnRJZCxcclxuICAgICAgICAgICAgICAgIGVudmlyb25tZW50OiBjYWNoZWRJZFRva2VuLmVudmlyb25tZW50LFxyXG4gICAgICAgICAgICAgICAgdGVuYW50SWQ6IGNhY2hlZElkVG9rZW4ucmVhbG0sXHJcbiAgICAgICAgICAgICAgICB1c2VybmFtZTogQ29uc3RhbnRzLkVNUFRZX1NUUklORyxcclxuICAgICAgICAgICAgICAgIGxvY2FsQWNjb3VudElkOiBsb2NhbEFjY291bnRJZCB8fCBcIlwiXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjYWNoZWRBY2NvdW50ID0gdGhpcy5yZWFkQWNjb3VudEZyb21DYWNoZShhY2NvdW50SW5mbyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYXdhaXQgUmVzcG9uc2VIYW5kbGVyLmdlbmVyYXRlQXV0aGVudGljYXRpb25SZXN1bHQoXHJcbiAgICAgICAgICAgIHRoaXMuY3J5cHRvVXRpbHMsXHJcbiAgICAgICAgICAgIHRoaXMuYXV0aG9yaXR5LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBhY2NvdW50OiBjYWNoZWRBY2NvdW50LFxyXG4gICAgICAgICAgICAgICAgYWNjZXNzVG9rZW46IGNhY2hlZEFjY2Vzc1Rva2VuLFxyXG4gICAgICAgICAgICAgICAgaWRUb2tlbjogY2FjaGVkSWRUb2tlbixcclxuICAgICAgICAgICAgICAgIHJlZnJlc2hUb2tlbjogbnVsbCxcclxuICAgICAgICAgICAgICAgIGFwcE1ldGFkYXRhOiBudWxsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRydWUsXHJcbiAgICAgICAgICAgIHJlcXVlc3QsXHJcbiAgICAgICAgICAgIGlkVG9rZW5PYmplY3QpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmVhZCBhY2Nlc3MgdG9rZW4gZnJvbSBjYWNoZSBUT0RPOiBDYWNoZU1hbmFnZXIgQVBJIHNob3VsZCBiZSB1c2VkIGhlcmVcclxuICAgICAqIEBwYXJhbSByZXF1ZXN0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZEFjY2Vzc1Rva2VuRnJvbUNhY2hlKHJlcXVlc3Q6IENvbW1vbk9uQmVoYWxmT2ZSZXF1ZXN0KTogQWNjZXNzVG9rZW5FbnRpdHkgfCBudWxsIHtcclxuICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbkZpbHRlcjogQ3JlZGVudGlhbEZpbHRlciA9IHtcclxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuYXV0aG9yaXR5LmNhbm9uaWNhbEF1dGhvcml0eVVybENvbXBvbmVudHMuSG9zdE5hbWVBbmRQb3J0LFxyXG4gICAgICAgICAgICBjcmVkZW50aWFsVHlwZTogQ3JlZGVudGlhbFR5cGUuQUNDRVNTX1RPS0VOLFxyXG4gICAgICAgICAgICBjbGllbnRJZDogdGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50SWQsXHJcbiAgICAgICAgICAgIHJlYWxtOiB0aGlzLmF1dGhvcml0eS50ZW5hbnQsXHJcbiAgICAgICAgICAgIHRhcmdldDogdGhpcy5zY29wZVNldC5wcmludFNjb3Blc0xvd2VyQ2FzZSgpLFxyXG4gICAgICAgICAgICBvYm9Bc3NlcnRpb246IHJlcXVlc3Qub2JvQXNzZXJ0aW9uXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3QgY3JlZGVudGlhbENhY2hlOiBDcmVkZW50aWFsQ2FjaGUgPSB0aGlzLmNhY2hlTWFuYWdlci5nZXRDcmVkZW50aWFsc0ZpbHRlcmVkQnkoYWNjZXNzVG9rZW5GaWx0ZXIpO1xyXG4gICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VucyA9IE9iamVjdC5rZXlzKGNyZWRlbnRpYWxDYWNoZS5hY2Nlc3NUb2tlbnMpLm1hcChrZXkgPT4gY3JlZGVudGlhbENhY2hlLmFjY2Vzc1Rva2Vuc1trZXldKTtcclxuXHJcbiAgICAgICAgY29uc3QgbnVtQWNjZXNzVG9rZW5zID0gYWNjZXNzVG9rZW5zLmxlbmd0aDtcclxuICAgICAgICBpZiAobnVtQWNjZXNzVG9rZW5zIDwgMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKG51bUFjY2Vzc1Rva2VucyA+IDEpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZU11bHRpcGxlTWF0Y2hpbmdUb2tlbnNJbkNhY2hlRXJyb3IoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFjY2Vzc1Rva2Vuc1swXSBhcyBBY2Nlc3NUb2tlbkVudGl0eTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHJlYWQgaWR0b2tlbiBmcm9tIGNhY2hlIFRPRE86IENhY2hlTWFuYWdlciBBUEkgc2hvdWxkIGJlIHVzZWQgaGVyZSBpbnN0ZWFkXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlYWRJZFRva2VuRnJvbUNhY2hlKHJlcXVlc3Q6IENvbW1vbk9uQmVoYWxmT2ZSZXF1ZXN0KTogSWRUb2tlbkVudGl0eSB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGlkVG9rZW5GaWx0ZXI6IENyZWRlbnRpYWxGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB0aGlzLmF1dGhvcml0eS5jYW5vbmljYWxBdXRob3JpdHlVcmxDb21wb25lbnRzLkhvc3ROYW1lQW5kUG9ydCxcclxuICAgICAgICAgICAgY3JlZGVudGlhbFR5cGU6IENyZWRlbnRpYWxUeXBlLklEX1RPS0VOLFxyXG4gICAgICAgICAgICBjbGllbnRJZDogdGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50SWQsXHJcbiAgICAgICAgICAgIHJlYWxtOiB0aGlzLmF1dGhvcml0eS50ZW5hbnQsXHJcbiAgICAgICAgICAgIG9ib0Fzc2VydGlvbjogcmVxdWVzdC5vYm9Bc3NlcnRpb25cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCBjcmVkZW50aWFsQ2FjaGU6IENyZWRlbnRpYWxDYWNoZSA9IHRoaXMuY2FjaGVNYW5hZ2VyLmdldENyZWRlbnRpYWxzRmlsdGVyZWRCeShpZFRva2VuRmlsdGVyKTtcclxuICAgICAgICBjb25zdCBpZFRva2VucyA9IE9iamVjdC5rZXlzKGNyZWRlbnRpYWxDYWNoZS5pZFRva2VucykubWFwKGtleSA9PiBjcmVkZW50aWFsQ2FjaGUuaWRUb2tlbnNba2V5XSk7XHJcbiAgICAgICAgLy8gV2hlbiBhY3F1aXJpbmcgYSB0b2tlbiBvbiBiZWhhbGYgb2YgYW4gYXBwbGljYXRpb24sIHRoZXJlIG1pZ2h0IG5vdCBiZSBhbiBpZCB0b2tlbiBpbiB0aGUgY2FjaGVcclxuICAgICAgICBpZiAoaWRUb2tlbnMubGVuZ3RoIDwgMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGlkVG9rZW5zWzBdIGFzIElkVG9rZW5FbnRpdHk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiByZWFkIGFjY291bnQgZnJvbSBjYWNoZSwgVE9ETzogQ2FjaGVNYW5hZ2VyIEFQSSBzaG91bGQgYmUgdXNlZCBoZXJlIGluc3RlYWRcclxuICAgICAqIEBwYXJhbSBhY2NvdW50XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZEFjY291bnRGcm9tQ2FjaGUoYWNjb3VudDogQWNjb3VudEluZm8pOiBBY2NvdW50RW50aXR5IHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVNYW5hZ2VyLnJlYWRBY2NvdW50RnJvbUNhY2hlKGFjY291bnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWFrZSBhIG5ldHdvcmsgY2FsbCB0byB0aGUgc2VydmVyIHJlcXVlc3RpbmcgY3JlZGVudGlhbHNcclxuICAgICAqIEBwYXJhbSByZXF1ZXN0XHJcbiAgICAgKiBAcGFyYW0gYXV0aG9yaXR5XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYXN5bmMgZXhlY3V0ZVRva2VuUmVxdWVzdChyZXF1ZXN0OiBDb21tb25PbkJlaGFsZk9mUmVxdWVzdCwgYXV0aG9yaXR5OiBBdXRob3JpdHkpXHJcbiAgICAgICAgOiBQcm9taXNlPEF1dGhlbnRpY2F0aW9uUmVzdWx0IHwgbnVsbD4ge1xyXG5cclxuICAgICAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHRoaXMuY3JlYXRlVG9rZW5SZXF1ZXN0Qm9keShyZXF1ZXN0KTtcclxuICAgICAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gdGhpcy5jcmVhdGVEZWZhdWx0VG9rZW5SZXF1ZXN0SGVhZGVycygpO1xyXG4gICAgICAgIGNvbnN0IHRodW1icHJpbnQ6IFJlcXVlc3RUaHVtYnByaW50ID0ge1xyXG4gICAgICAgICAgICBjbGllbnRJZDogdGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50SWQsXHJcbiAgICAgICAgICAgIGF1dGhvcml0eTogcmVxdWVzdC5hdXRob3JpdHksXHJcbiAgICAgICAgICAgIHNjb3BlczogcmVxdWVzdC5zY29wZXNcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCByZXFUaW1lc3RhbXAgPSBUaW1lVXRpbHMubm93U2Vjb25kcygpO1xyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlUG9zdFRvVG9rZW5FbmRwb2ludChhdXRob3JpdHkudG9rZW5FbmRwb2ludCwgcmVxdWVzdEJvZHksIGhlYWRlcnMsIHRodW1icHJpbnQpO1xyXG5cclxuICAgICAgICBjb25zdCByZXNwb25zZUhhbmRsZXIgPSBuZXcgUmVzcG9uc2VIYW5kbGVyKFxyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRJZCxcclxuICAgICAgICAgICAgdGhpcy5jYWNoZU1hbmFnZXIsXHJcbiAgICAgICAgICAgIHRoaXMuY3J5cHRvVXRpbHMsXHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLFxyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5zZXJpYWxpemFibGVDYWNoZSxcclxuICAgICAgICAgICAgdGhpcy5jb25maWcucGVyc2lzdGVuY2VQbHVnaW5cclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByZXNwb25zZUhhbmRsZXIudmFsaWRhdGVUb2tlblJlc3BvbnNlKHJlc3BvbnNlLmJvZHkpO1xyXG4gICAgICAgIGNvbnN0IHRva2VuUmVzcG9uc2UgPSBhd2FpdCByZXNwb25zZUhhbmRsZXIuaGFuZGxlU2VydmVyVG9rZW5SZXNwb25zZShcclxuICAgICAgICAgICAgcmVzcG9uc2UuYm9keSxcclxuICAgICAgICAgICAgdGhpcy5hdXRob3JpdHksXHJcbiAgICAgICAgICAgIHJlcVRpbWVzdGFtcCxcclxuICAgICAgICAgICAgcmVxdWVzdFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiB0b2tlblJlc3BvbnNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZ2VuZXJhdGUgYSBzZXJ2ZXIgcmVxdWVzdCBpbiBhY2NlcGFibGUgZm9ybWF0XHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNyZWF0ZVRva2VuUmVxdWVzdEJvZHkocmVxdWVzdDogQ29tbW9uT25CZWhhbGZPZlJlcXVlc3QpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlckJ1aWxkZXIgPSBuZXcgUmVxdWVzdFBhcmFtZXRlckJ1aWxkZXIoKTtcclxuXHJcbiAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRDbGllbnRJZCh0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRJZCk7XHJcblxyXG4gICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkU2NvcGVzKHJlcXVlc3Quc2NvcGVzKTtcclxuXHJcbiAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRHcmFudFR5cGUoR3JhbnRUeXBlLkpXVF9CRUFSRVIpO1xyXG5cclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZENsaWVudEluZm8oKTtcclxuXHJcbiAgICAgICAgY29uc3QgY29ycmVsYXRpb25JZCA9IHJlcXVlc3QuY29ycmVsYXRpb25JZCB8fCB0aGlzLmNvbmZpZy5jcnlwdG9JbnRlcmZhY2UuY3JlYXRlTmV3R3VpZCgpO1xyXG4gICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkQ29ycmVsYXRpb25JZChjb3JyZWxhdGlvbklkKTtcclxuXHJcbiAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRSZXF1ZXN0VG9rZW5Vc2UoQUFEU2VydmVyUGFyYW1LZXlzLk9OX0JFSEFMRl9PRik7XHJcblxyXG4gICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkT2JvQXNzZXJ0aW9uKHJlcXVlc3Qub2JvQXNzZXJ0aW9uKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmNsaWVudENyZWRlbnRpYWxzLmNsaWVudFNlY3JldCkge1xyXG4gICAgICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZENsaWVudFNlY3JldCh0aGlzLmNvbmZpZy5jbGllbnRDcmVkZW50aWFscy5jbGllbnRTZWNyZXQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmNsaWVudENyZWRlbnRpYWxzLmNsaWVudEFzc2VydGlvbikge1xyXG4gICAgICAgICAgICBjb25zdCBjbGllbnRBc3NlcnRpb24gPSB0aGlzLmNvbmZpZy5jbGllbnRDcmVkZW50aWFscy5jbGllbnRBc3NlcnRpb247XHJcbiAgICAgICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkQ2xpZW50QXNzZXJ0aW9uKGNsaWVudEFzc2VydGlvbi5hc3NlcnRpb24pO1xyXG4gICAgICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZENsaWVudEFzc2VydGlvblR5cGUoY2xpZW50QXNzZXJ0aW9uLmFzc2VydGlvblR5cGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHBhcmFtZXRlckJ1aWxkZXIuY3JlYXRlUXVlcnlTdHJpbmcoKTtcclxuICAgIH1cclxufVxyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEJhc2VDbGllbnQgfSBmcm9tIFwiLi9CYXNlQ2xpZW50XCI7XHJcbmltcG9ydCB7IENsaWVudENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vY29uZmlnL0NsaWVudENvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgQ29tbW9uU2lsZW50Rmxvd1JlcXVlc3QgfSBmcm9tIFwiLi4vcmVxdWVzdC9Db21tb25TaWxlbnRGbG93UmVxdWVzdFwiO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblJlc3VsdCB9IGZyb20gXCIuLi9yZXNwb25zZS9BdXRoZW50aWNhdGlvblJlc3VsdFwiO1xyXG5pbXBvcnQgeyBBY2Nlc3NUb2tlbkVudGl0eSB9IGZyb20gXCIuLi9jYWNoZS9lbnRpdGllcy9BY2Nlc3NUb2tlbkVudGl0eVwiO1xyXG5pbXBvcnQgeyBTY29wZVNldCB9IGZyb20gXCIuLi9yZXF1ZXN0L1Njb3BlU2V0XCI7XHJcbmltcG9ydCB7IEF1dGhUb2tlbiB9IGZyb20gXCIuLi9hY2NvdW50L0F1dGhUb2tlblwiO1xyXG5pbXBvcnQgeyBUaW1lVXRpbHMgfSBmcm9tIFwiLi4vdXRpbHMvVGltZVV0aWxzXCI7XHJcbmltcG9ydCB7IFJlZnJlc2hUb2tlbkNsaWVudCB9IGZyb20gXCIuL1JlZnJlc2hUb2tlbkNsaWVudFwiO1xyXG5pbXBvcnQgeyBDbGllbnRBdXRoRXJyb3IsIENsaWVudEF1dGhFcnJvck1lc3NhZ2UgfSBmcm9tIFwiLi4vZXJyb3IvQ2xpZW50QXV0aEVycm9yXCI7XHJcbmltcG9ydCB7IENsaWVudENvbmZpZ3VyYXRpb25FcnJvciB9IGZyb20gXCIuLi9lcnJvci9DbGllbnRDb25maWd1cmF0aW9uRXJyb3JcIjtcclxuaW1wb3J0IHsgUmVzcG9uc2VIYW5kbGVyIH0gZnJvbSBcIi4uL3Jlc3BvbnNlL1Jlc3BvbnNlSGFuZGxlclwiO1xyXG5pbXBvcnQgeyBDYWNoZVJlY29yZCB9IGZyb20gXCIuLi9jYWNoZS9lbnRpdGllcy9DYWNoZVJlY29yZFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNpbGVudEZsb3dDbGllbnQgZXh0ZW5kcyBCYXNlQ2xpZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uOiBDbGllbnRDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgICAgc3VwZXIoY29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgYSB0b2tlbiBmcm9tIGNhY2hlIGlmIGl0IGlzIHN0aWxsIHZhbGlkLCBvciB1c2VzIHRoZSBjYWNoZWQgcmVmcmVzaCB0b2tlbiB0byByZW5ld1xyXG4gICAgICogdGhlIGdpdmVuIHRva2VuIGFuZCByZXR1cm5zIHRoZSByZW5ld2VkIHRva2VuXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFxyXG4gICAgICovXHJcbiAgICBhc3luYyBhY3F1aXJlVG9rZW4ocmVxdWVzdDogQ29tbW9uU2lsZW50Rmxvd1JlcXVlc3QpOiBQcm9taXNlPEF1dGhlbnRpY2F0aW9uUmVzdWx0PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWNxdWlyZUNhY2hlZFRva2VuKHJlcXVlc3QpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBDbGllbnRBdXRoRXJyb3IgJiYgZS5lcnJvckNvZGUgPT09IENsaWVudEF1dGhFcnJvck1lc3NhZ2UudG9rZW5SZWZyZXNoUmVxdWlyZWQuY29kZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVmcmVzaFRva2VuQ2xpZW50ID0gbmV3IFJlZnJlc2hUb2tlbkNsaWVudCh0aGlzLmNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmcmVzaFRva2VuQ2xpZW50LmFjcXVpcmVUb2tlbkJ5UmVmcmVzaFRva2VuKHJlcXVlc3QpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyB0b2tlbiBmcm9tIGNhY2hlIG9yIHRocm93cyBhbiBlcnJvciBpZiBpdCBtdXN0IGJlIHJlZnJlc2hlZC5cclxuICAgICAqIEBwYXJhbSByZXF1ZXN0XHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGFjcXVpcmVDYWNoZWRUb2tlbihyZXF1ZXN0OiBDb21tb25TaWxlbnRGbG93UmVxdWVzdCk6IFByb21pc2U8QXV0aGVudGljYXRpb25SZXN1bHQ+IHtcclxuICAgICAgICAvLyBDYW5ub3QgcmVuZXcgdG9rZW4gaWYgbm8gcmVxdWVzdCBvYmplY3QgaXMgZ2l2ZW4uXHJcbiAgICAgICAgaWYgKCFyZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudENvbmZpZ3VyYXRpb25FcnJvci5jcmVhdGVFbXB0eVRva2VuUmVxdWVzdEVycm9yKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBXZSBjdXJyZW50bHkgZG8gbm90IHN1cHBvcnQgc2lsZW50IGZsb3cgZm9yIGFjY291bnQgPT09IG51bGwgdXNlIGNhc2VzOyBUaGlzIHdpbGwgYmUgcmV2aXNpdGVkIGZvciBjb25maWRlbnRpYWwgZmxvdyB1c2VjYXNlc1xyXG4gICAgICAgIGlmICghcmVxdWVzdC5hY2NvdW50KSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVOb0FjY291bnRJblNpbGVudFJlcXVlc3RFcnJvcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZXF1ZXN0U2NvcGVzID0gbmV3IFNjb3BlU2V0KHJlcXVlc3Quc2NvcGVzIHx8IFtdKTtcclxuICAgICAgICBjb25zdCBlbnZpcm9ubWVudCA9IHJlcXVlc3QuYXV0aG9yaXR5IHx8IHRoaXMuYXV0aG9yaXR5LmdldFByZWZlcnJlZENhY2hlKCk7XHJcbiAgICAgICAgY29uc3QgY2FjaGVSZWNvcmQgPSB0aGlzLmNhY2hlTWFuYWdlci5yZWFkQ2FjaGVSZWNvcmQocmVxdWVzdC5hY2NvdW50LCB0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRJZCwgcmVxdWVzdFNjb3BlcywgZW52aXJvbm1lbnQpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc1JlZnJlc2hSZXF1aXJlZChyZXF1ZXN0LCBjYWNoZVJlY29yZC5hY2Nlc3NUb2tlbikpIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZVJlZnJlc2hSZXF1aXJlZEVycm9yKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLnNlcnZlclRlbGVtZXRyeU1hbmFnZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLnNlcnZlclRlbGVtZXRyeU1hbmFnZXIuaW5jcmVtZW50Q2FjaGVIaXRzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2VuZXJhdGVSZXN1bHRGcm9tQ2FjaGVSZWNvcmQoY2FjaGVSZWNvcmQsIHJlcXVlc3QpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBmdW5jdGlvbiB0byBidWlsZCByZXNwb25zZSBvYmplY3QgZnJvbSB0aGUgQ2FjaGVSZWNvcmRcclxuICAgICAqIEBwYXJhbSBjYWNoZVJlY29yZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGFzeW5jIGdlbmVyYXRlUmVzdWx0RnJvbUNhY2hlUmVjb3JkKGNhY2hlUmVjb3JkOiBDYWNoZVJlY29yZCwgcmVxdWVzdDogQ29tbW9uU2lsZW50Rmxvd1JlcXVlc3QpOiBQcm9taXNlPEF1dGhlbnRpY2F0aW9uUmVzdWx0PiB7XHJcbiAgICAgICAgbGV0IGlkVG9rZW5PYmo6IEF1dGhUb2tlbiB8IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoY2FjaGVSZWNvcmQuaWRUb2tlbikge1xyXG4gICAgICAgICAgICBpZFRva2VuT2JqID0gbmV3IEF1dGhUb2tlbihjYWNoZVJlY29yZC5pZFRva2VuLnNlY3JldCwgdGhpcy5jb25maWcuY3J5cHRvSW50ZXJmYWNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IFJlc3BvbnNlSGFuZGxlci5nZW5lcmF0ZUF1dGhlbnRpY2F0aW9uUmVzdWx0KFxyXG4gICAgICAgICAgICB0aGlzLmNyeXB0b1V0aWxzLFxyXG4gICAgICAgICAgICB0aGlzLmF1dGhvcml0eSxcclxuICAgICAgICAgICAgY2FjaGVSZWNvcmQsXHJcbiAgICAgICAgICAgIHRydWUsXHJcbiAgICAgICAgICAgIHJlcXVlc3QsXHJcbiAgICAgICAgICAgIGlkVG9rZW5PYmpcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2l2ZW4gYSByZXF1ZXN0IG9iamVjdCBhbmQgYW4gYWNjZXNzVG9rZW5FbnRpdHkgZGV0ZXJtaW5lIGlmIHRoZSBhY2Nlc3NUb2tlbiBuZWVkcyB0byBiZSByZWZyZXNoZWRcclxuICAgICAqIEBwYXJhbSByZXF1ZXN0XHJcbiAgICAgKiBAcGFyYW0gY2FjaGVkQWNjZXNzVG9rZW5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc1JlZnJlc2hSZXF1aXJlZChyZXF1ZXN0OiBDb21tb25TaWxlbnRGbG93UmVxdWVzdCwgY2FjaGVkQWNjZXNzVG9rZW46IEFjY2Vzc1Rva2VuRW50aXR5fG51bGwpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAocmVxdWVzdC5mb3JjZVJlZnJlc2ggfHwgcmVxdWVzdC5jbGFpbXMpIHtcclxuICAgICAgICAgICAgLy8gTXVzdCByZWZyZXNoIGR1ZSB0byByZXF1ZXN0IHBhcmFtZXRlcnNcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICghY2FjaGVkQWNjZXNzVG9rZW4gfHwgVGltZVV0aWxzLmlzVG9rZW5FeHBpcmVkKGNhY2hlZEFjY2Vzc1Rva2VuLmV4cGlyZXNPbiwgdGhpcy5jb25maWcuc3lzdGVtT3B0aW9ucy50b2tlblJlbmV3YWxPZmZzZXRTZWNvbmRzKSkge1xyXG4gICAgICAgICAgICAvLyBNdXN0IHJlZnJlc2ggZHVlIHRvIGV4cGlyZWQgb3Igbm9uLWV4aXN0ZW50IGFjY2Vzc190b2tlblxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEJhc2VDbGllbnQgfSBmcm9tIFwiLi9CYXNlQ2xpZW50XCI7XHJcbmltcG9ydCB7IENsaWVudENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vY29uZmlnL0NsaWVudENvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgQ29tbW9uVXNlcm5hbWVQYXNzd29yZFJlcXVlc3QgfSBmcm9tIFwiLi4vcmVxdWVzdC9Db21tb25Vc2VybmFtZVBhc3N3b3JkUmVxdWVzdFwiO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblJlc3VsdCB9IGZyb20gXCIuLi9yZXNwb25zZS9BdXRoZW50aWNhdGlvblJlc3VsdFwiO1xyXG5pbXBvcnQgeyBSZXNwb25zZUhhbmRsZXIgfSBmcm9tIFwiLi4vcmVzcG9uc2UvUmVzcG9uc2VIYW5kbGVyXCI7XHJcbmltcG9ydCB7IEF1dGhvcml0eSB9IGZyb20gXCIuLi9hdXRob3JpdHkvQXV0aG9yaXR5XCI7XHJcbmltcG9ydCB7IE5ldHdvcmtSZXNwb25zZSB9IGZyb20gXCIuLi9uZXR3b3JrL05ldHdvcmtNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IFNlcnZlckF1dGhvcml6YXRpb25Ub2tlblJlc3BvbnNlIH0gZnJvbSBcIi4uL3Jlc3BvbnNlL1NlcnZlckF1dGhvcml6YXRpb25Ub2tlblJlc3BvbnNlXCI7XHJcbmltcG9ydCB7IFJlcXVlc3RQYXJhbWV0ZXJCdWlsZGVyIH0gZnJvbSBcIi4uL3JlcXVlc3QvUmVxdWVzdFBhcmFtZXRlckJ1aWxkZXJcIjtcclxuaW1wb3J0IHsgR3JhbnRUeXBlIH0gZnJvbSBcIi4uL3V0aWxzL0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBTdHJpbmdVdGlscyB9IGZyb20gXCIuLi91dGlscy9TdHJpbmdVdGlsc1wiO1xyXG5pbXBvcnQgeyBSZXF1ZXN0VGh1bWJwcmludCB9IGZyb20gXCIuLi9uZXR3b3JrL1JlcXVlc3RUaHVtYnByaW50XCI7XHJcbmltcG9ydCB7IFRpbWVVdGlscyB9IGZyb20gXCIuLi91dGlscy9UaW1lVXRpbHNcIjtcclxuXHJcbi8qKlxyXG4gKiBPYXV0aDIuMCBQYXNzd29yZCBncmFudCBjbGllbnRcclxuICogTm90ZTogV2UgYXJlIG9ubHkgc3VwcG9ydGluZyBwdWJsaWMgY2xpZW50cyBmb3IgcGFzc3dvcmQgZ3JhbnQgYW5kIGZvciBwdXJlbHkgdGVzdGluZyBwdXJwb3Nlc1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFVzZXJuYW1lUGFzc3dvcmRDbGllbnQgZXh0ZW5kcyBCYXNlQ2xpZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uOiBDbGllbnRDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgICAgc3VwZXIoY29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBUEkgdG8gYWNxdWlyZSBhIHRva2VuIGJ5IHBhc3NpbmcgdGhlIHVzZXJuYW1lIGFuZCBwYXNzd29yZCB0byB0aGUgc2VydmljZSBpbiBleGNoYWdlIG9mIGNyZWRlbnRpYWxzXHJcbiAgICAgKiBwYXNzd29yZF9ncmFudFxyXG4gICAgICogQHBhcmFtIHJlcXVlc3RcclxuICAgICAqL1xyXG4gICAgYXN5bmMgYWNxdWlyZVRva2VuKHJlcXVlc3Q6IENvbW1vblVzZXJuYW1lUGFzc3dvcmRSZXF1ZXN0KTogUHJvbWlzZTxBdXRoZW50aWNhdGlvblJlc3VsdCB8IG51bGw+IHtcclxuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFwiaW4gYWNxdWlyZVRva2VuIGNhbGxcIik7XHJcblxyXG4gICAgICAgIGNvbnN0IHJlcVRpbWVzdGFtcCA9IFRpbWVVdGlscy5ub3dTZWNvbmRzKCk7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVUb2tlblJlcXVlc3QodGhpcy5hdXRob3JpdHksIHJlcXVlc3QpO1xyXG5cclxuICAgICAgICBjb25zdCByZXNwb25zZUhhbmRsZXIgPSBuZXcgUmVzcG9uc2VIYW5kbGVyKFxyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRJZCxcclxuICAgICAgICAgICAgdGhpcy5jYWNoZU1hbmFnZXIsXHJcbiAgICAgICAgICAgIHRoaXMuY3J5cHRvVXRpbHMsXHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLFxyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5zZXJpYWxpemFibGVDYWNoZSxcclxuICAgICAgICAgICAgdGhpcy5jb25maWcucGVyc2lzdGVuY2VQbHVnaW5cclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyBWYWxpZGF0ZSByZXNwb25zZS4gVGhpcyBmdW5jdGlvbiB0aHJvd3MgYSBzZXJ2ZXIgZXJyb3IgaWYgYW4gZXJyb3IgaXMgcmV0dXJuZWQgYnkgdGhlIHNlcnZlci5cclxuICAgICAgICByZXNwb25zZUhhbmRsZXIudmFsaWRhdGVUb2tlblJlc3BvbnNlKHJlc3BvbnNlLmJvZHkpO1xyXG4gICAgICAgIGNvbnN0IHRva2VuUmVzcG9uc2UgPSByZXNwb25zZUhhbmRsZXIuaGFuZGxlU2VydmVyVG9rZW5SZXNwb25zZShyZXNwb25zZS5ib2R5LCB0aGlzLmF1dGhvcml0eSwgcmVxVGltZXN0YW1wLCByZXF1ZXN0KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRva2VuUmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFeGVjdXRlcyBQT1NUIHJlcXVlc3QgdG8gdG9rZW4gZW5kcG9pbnRcclxuICAgICAqIEBwYXJhbSBhdXRob3JpdHlcclxuICAgICAqIEBwYXJhbSByZXF1ZXN0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYXN5bmMgZXhlY3V0ZVRva2VuUmVxdWVzdChhdXRob3JpdHk6IEF1dGhvcml0eSwgcmVxdWVzdDogQ29tbW9uVXNlcm5hbWVQYXNzd29yZFJlcXVlc3QpOiBQcm9taXNlPE5ldHdvcmtSZXNwb25zZTxTZXJ2ZXJBdXRob3JpemF0aW9uVG9rZW5SZXNwb25zZT4+IHtcclxuICAgICAgICBjb25zdCB0aHVtYnByaW50OiBSZXF1ZXN0VGh1bWJwcmludCA9IHtcclxuICAgICAgICAgICAgY2xpZW50SWQ6IHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudElkLFxyXG4gICAgICAgICAgICBhdXRob3JpdHk6IGF1dGhvcml0eS5jYW5vbmljYWxBdXRob3JpdHksXHJcbiAgICAgICAgICAgIHNjb3BlczogcmVxdWVzdC5zY29wZXNcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0gdGhpcy5jcmVhdGVUb2tlblJlcXVlc3RCb2R5KHJlcXVlc3QpO1xyXG4gICAgICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB0aGlzLmNyZWF0ZURlZmF1bHRUb2tlblJlcXVlc3RIZWFkZXJzKCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGVQb3N0VG9Ub2tlbkVuZHBvaW50KGF1dGhvcml0eS50b2tlbkVuZHBvaW50LCByZXF1ZXN0Qm9keSwgaGVhZGVycywgdGh1bWJwcmludCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZW5lcmF0ZXMgYSBtYXAgZm9yIGFsbCB0aGUgcGFyYW1zIHRvIGJlIHNlbnQgdG8gdGhlIHNlcnZpY2VcclxuICAgICAqIEBwYXJhbSByZXF1ZXN0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY3JlYXRlVG9rZW5SZXF1ZXN0Qm9keShyZXF1ZXN0OiBDb21tb25Vc2VybmFtZVBhc3N3b3JkUmVxdWVzdCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyQnVpbGRlciA9IG5ldyBSZXF1ZXN0UGFyYW1ldGVyQnVpbGRlcigpO1xyXG5cclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZENsaWVudElkKHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudElkKTtcclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZFVzZXJuYW1lKHJlcXVlc3QudXNlcm5hbWUpO1xyXG4gICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkUGFzc3dvcmQocmVxdWVzdC5wYXNzd29yZCk7XHJcblxyXG4gICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkU2NvcGVzKHJlcXVlc3Quc2NvcGVzKTtcclxuXHJcbiAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRHcmFudFR5cGUoR3JhbnRUeXBlLlJFU09VUkNFX09XTkVSX1BBU1NXT1JEX0dSQU5UKTtcclxuICAgICAgICBwYXJhbWV0ZXJCdWlsZGVyLmFkZENsaWVudEluZm8oKTtcclxuXHJcbiAgICAgICAgY29uc3QgY29ycmVsYXRpb25JZCA9IHJlcXVlc3QuY29ycmVsYXRpb25JZCB8fCB0aGlzLmNvbmZpZy5jcnlwdG9JbnRlcmZhY2UuY3JlYXRlTmV3R3VpZCgpO1xyXG4gICAgICAgIHBhcmFtZXRlckJ1aWxkZXIuYWRkQ29ycmVsYXRpb25JZChjb3JyZWxhdGlvbklkKTtcclxuXHJcbiAgICAgICAgaWYgKCFTdHJpbmdVdGlscy5pc0VtcHR5KHJlcXVlc3QuY2xhaW1zKSB8fCB0aGlzLmNvbmZpZy5hdXRoT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMgJiYgdGhpcy5jb25maWcuYXV0aE9wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcGFyYW1ldGVyQnVpbGRlci5hZGRDbGFpbXMocmVxdWVzdC5jbGFpbXMsIHRoaXMuY29uZmlnLmF1dGhPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcGFyYW1ldGVyQnVpbGRlci5jcmVhdGVRdWVyeVN0cmluZygpO1xyXG4gICAgfVxyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIFRlbmFudCBEaXNjb3ZlcnkgUmVzcG9uc2Ugd2hpY2ggY29udGFpbnMgdGhlIHJlbGV2YW50IE9BdXRoIGVuZHBvaW50cyBhbmQgZGF0YSBuZWVkZWQgZm9yIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uLlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgT3BlbklkQ29uZmlnUmVzcG9uc2UgPSB7XHJcbiAgICBhdXRob3JpemF0aW9uX2VuZHBvaW50OiBzdHJpbmc7XHJcbiAgICB0b2tlbl9lbmRwb2ludDogc3RyaW5nO1xyXG4gICAgZW5kX3Nlc3Npb25fZW5kcG9pbnQ6IHN0cmluZztcclxuICAgIGlzc3Vlcjogc3RyaW5nO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzT3BlbklkQ29uZmlnUmVzcG9uc2UocmVzcG9uc2U6IG9iamVjdCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgICByZXNwb25zZS5oYXNPd25Qcm9wZXJ0eShcImF1dGhvcml6YXRpb25fZW5kcG9pbnRcIikgJiZcclxuICAgICAgICByZXNwb25zZS5oYXNPd25Qcm9wZXJ0eShcInRva2VuX2VuZHBvaW50XCIpICYmIFxyXG4gICAgICAgIHJlc3BvbnNlLmhhc093blByb3BlcnR5KFwiZW5kX3Nlc3Npb25fZW5kcG9pbnRcIikgJiZcclxuICAgICAgICByZXNwb25zZS5oYXNPd25Qcm9wZXJ0eShcImlzc3VlclwiKVxyXG4gICAgKTtcclxufVxyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBQcm90b2NvbCBtb2RlcyBzdXBwb3J0ZWQgYnkgTVNBTC5cclxuICovXHJcbmV4cG9ydCBlbnVtIFByb3RvY29sTW9kZSB7XHJcbiAgICBBQUQgPSBcIkFBRFwiLFxyXG4gICAgT0lEQyA9IFwiT0lEQ1wiXHJcbn1cclxuIiwiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBDbG91ZERpc2NvdmVyeU1ldGFkYXRhIH0gZnJvbSBcIi4uLy4uL2F1dGhvcml0eS9DbG91ZERpc2NvdmVyeU1ldGFkYXRhXCI7XHJcbmltcG9ydCB7IE9wZW5JZENvbmZpZ1Jlc3BvbnNlIH0gZnJvbSBcIi4uLy4uL2F1dGhvcml0eS9PcGVuSWRDb25maWdSZXNwb25zZVwiO1xyXG5pbXBvcnQgeyBBVVRIT1JJVFlfTUVUQURBVEFfQ09OU1RBTlRTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBUaW1lVXRpbHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvVGltZVV0aWxzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQXV0aG9yaXR5TWV0YWRhdGFFbnRpdHkge1xyXG4gICAgYWxpYXNlczogQXJyYXk8c3RyaW5nPjtcclxuICAgIHByZWZlcnJlZF9jYWNoZTogc3RyaW5nO1xyXG4gICAgcHJlZmVycmVkX25ldHdvcms6IHN0cmluZztcclxuICAgIGNhbm9uaWNhbF9hdXRob3JpdHk6IHN0cmluZztcclxuICAgIGF1dGhvcml6YXRpb25fZW5kcG9pbnQ6IHN0cmluZztcclxuICAgIHRva2VuX2VuZHBvaW50OiBzdHJpbmc7XHJcbiAgICBlbmRfc2Vzc2lvbl9lbmRwb2ludDogc3RyaW5nO1xyXG4gICAgaXNzdWVyOiBzdHJpbmc7XHJcbiAgICBhbGlhc2VzRnJvbU5ldHdvcms6IGJvb2xlYW47XHJcbiAgICBlbmRwb2ludHNGcm9tTmV0d29yazogYm9vbGVhbjtcclxuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuZXhwaXJlc0F0ID0gVGltZVV0aWxzLm5vd1NlY29uZHMoKSArIEFVVEhPUklUWV9NRVRBREFUQV9DT05TVEFOVFMuUkVGUkVTSF9USU1FX1NFQ09ORFM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgdGhlIGVudGl0eSB3aXRoIG5ldyBhbGlhc2VzLCBwcmVmZXJyZWRfY2FjaGUgYW5kIHByZWZlcnJlZF9uZXR3b3JrIHZhbHVlc1xyXG4gICAgICogQHBhcmFtIG1ldGFkYXRhIFxyXG4gICAgICogQHBhcmFtIGZyb21OZXR3b3JrIFxyXG4gICAgICovXHJcbiAgICB1cGRhdGVDbG91ZERpc2NvdmVyeU1ldGFkYXRhKG1ldGFkYXRhOiBDbG91ZERpc2NvdmVyeU1ldGFkYXRhLCBmcm9tTmV0d29yazogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuYWxpYXNlcyA9IG1ldGFkYXRhLmFsaWFzZXM7XHJcbiAgICAgICAgdGhpcy5wcmVmZXJyZWRfY2FjaGUgPSBtZXRhZGF0YS5wcmVmZXJyZWRfY2FjaGU7XHJcbiAgICAgICAgdGhpcy5wcmVmZXJyZWRfbmV0d29yayA9IG1ldGFkYXRhLnByZWZlcnJlZF9uZXR3b3JrO1xyXG4gICAgICAgIHRoaXMuYWxpYXNlc0Zyb21OZXR3b3JrID0gZnJvbU5ldHdvcms7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgdGhlIGVudGl0eSB3aXRoIG5ldyBlbmRwb2ludHNcclxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSBcclxuICAgICAqIEBwYXJhbSBmcm9tTmV0d29yayBcclxuICAgICAqL1xyXG4gICAgdXBkYXRlRW5kcG9pbnRNZXRhZGF0YShtZXRhZGF0YTogT3BlbklkQ29uZmlnUmVzcG9uc2UsIGZyb21OZXR3b3JrOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5hdXRob3JpemF0aW9uX2VuZHBvaW50ID0gbWV0YWRhdGEuYXV0aG9yaXphdGlvbl9lbmRwb2ludDtcclxuICAgICAgICB0aGlzLnRva2VuX2VuZHBvaW50ID0gbWV0YWRhdGEudG9rZW5fZW5kcG9pbnQ7XHJcbiAgICAgICAgdGhpcy5lbmRfc2Vzc2lvbl9lbmRwb2ludCA9IG1ldGFkYXRhLmVuZF9zZXNzaW9uX2VuZHBvaW50O1xyXG4gICAgICAgIHRoaXMuaXNzdWVyID0gbWV0YWRhdGEuaXNzdWVyO1xyXG4gICAgICAgIHRoaXMuZW5kcG9pbnRzRnJvbU5ldHdvcmsgPSBmcm9tTmV0d29yaztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNhdmUgdGhlIGF1dGhvcml0eSB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGlzIGNhY2hlIGVudHJ5XHJcbiAgICAgKiBAcGFyYW0gYXV0aG9yaXR5IFxyXG4gICAgICovXHJcbiAgICB1cGRhdGVDYW5vbmljYWxBdXRob3JpdHkoYXV0aG9yaXR5OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmNhbm9uaWNhbF9hdXRob3JpdHkgPSBhdXRob3JpdHk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXNldCB0aGUgZXhpcmVzQXQgdmFsdWVcclxuICAgICAqL1xyXG4gICAgcmVzZXRFeHBpcmVzQXQoKSB7XHJcbiAgICAgICAgdGhpcy5leHBpcmVzQXQgPSBUaW1lVXRpbHMubm93U2Vjb25kcygpICsgQVVUSE9SSVRZX01FVEFEQVRBX0NPTlNUQU5UUy5SRUZSRVNIX1RJTUVfU0VDT05EUztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGRhdGEgbmVlZHMgdG8gYmUgcmVmcmVzaGVkXHJcbiAgICAgKi9cclxuICAgIGlzRXhwaXJlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5leHBpcmVzQXQgPD0gVGltZVV0aWxzLm5vd1NlY29uZHMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRlcyBhbiBlbnRpdHk6IGNoZWNrcyBmb3IgYWxsIGV4cGVjdGVkIHBhcmFtc1xyXG4gICAgICogQHBhcmFtIGVudGl0eVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNBdXRob3JpdHlNZXRhZGF0YUVudGl0eShrZXk6IHN0cmluZywgZW50aXR5OiBvYmplY3QpOiBib29sZWFuIHtcclxuXHJcbiAgICAgICAgaWYgKCFlbnRpdHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAga2V5LmluZGV4T2YoQVVUSE9SSVRZX01FVEFEQVRBX0NPTlNUQU5UUy5DQUNIRV9LRVkpID09PSAwICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImFsaWFzZXNcIikgJiZcclxuICAgICAgICAgICAgZW50aXR5Lmhhc093blByb3BlcnR5KFwicHJlZmVycmVkX2NhY2hlXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcInByZWZlcnJlZF9uZXR3b3JrXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImNhbm9uaWNhbF9hdXRob3JpdHlcIikgJiZcclxuICAgICAgICAgICAgZW50aXR5Lmhhc093blByb3BlcnR5KFwiYXV0aG9yaXphdGlvbl9lbmRwb2ludFwiKSAmJlxyXG4gICAgICAgICAgICBlbnRpdHkuaGFzT3duUHJvcGVydHkoXCJ0b2tlbl9lbmRwb2ludFwiKSAmJlxyXG4gICAgICAgICAgICBlbnRpdHkuaGFzT3duUHJvcGVydHkoXCJlbmRfc2Vzc2lvbl9lbmRwb2ludFwiKSAmJlxyXG4gICAgICAgICAgICBlbnRpdHkuaGFzT3duUHJvcGVydHkoXCJpc3N1ZXJcIikgJiZcclxuICAgICAgICAgICAgZW50aXR5Lmhhc093blByb3BlcnR5KFwiYWxpYXNlc0Zyb21OZXR3b3JrXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImVuZHBvaW50c0Zyb21OZXR3b3JrXCIpICYmXHJcbiAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImV4cGlyZXNBdFwiKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIiwiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBDbG91ZERpc2NvdmVyeU1ldGFkYXRhIH0gZnJvbSBcIi4vQ2xvdWREaXNjb3ZlcnlNZXRhZGF0YVwiO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBPcGVuSUQgQ29uZmlndXJhdGlvbiBFbmRwb2ludCBSZXNwb25zZSB0eXBlLiBVc2VkIGJ5IHRoZSBhdXRob3JpdHkgY2xhc3MgdG8gZ2V0IHJlbGV2YW50IE9BdXRoIGVuZHBvaW50cy5cclxuICovXHJcbmV4cG9ydCB0eXBlIENsb3VkSW5zdGFuY2VEaXNjb3ZlcnlSZXNwb25zZSA9IHtcclxuICAgIHRlbmFudF9kaXNjb3ZlcnlfZW5kcG9pbnQ6IHN0cmluZztcclxuICAgIG1ldGFkYXRhOiBBcnJheTxDbG91ZERpc2NvdmVyeU1ldGFkYXRhPjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0Nsb3VkSW5zdGFuY2VEaXNjb3ZlcnlSZXNwb25zZShyZXNwb25zZTogb2JqZWN0KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIHJlc3BvbnNlLmhhc093blByb3BlcnR5KFwidGVuYW50X2Rpc2NvdmVyeV9lbmRwb2ludFwiKSAmJlxyXG4gICAgICAgIHJlc3BvbnNlLmhhc093blByb3BlcnR5KFwibWV0YWRhdGFcIilcclxuICAgICk7XHJcbn1cclxuIiwiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBBdXRob3JpdHlUeXBlIH0gZnJvbSBcIi4vQXV0aG9yaXR5VHlwZVwiO1xyXG5pbXBvcnQgeyBpc09wZW5JZENvbmZpZ1Jlc3BvbnNlLCBPcGVuSWRDb25maWdSZXNwb25zZSB9IGZyb20gXCIuL09wZW5JZENvbmZpZ1Jlc3BvbnNlXCI7XHJcbmltcG9ydCB7IFVybFN0cmluZyB9IGZyb20gXCIuLi91cmwvVXJsU3RyaW5nXCI7XHJcbmltcG9ydCB7IElVcmkgfSBmcm9tIFwiLi4vdXJsL0lVcmlcIjtcclxuaW1wb3J0IHsgQ2xpZW50QXV0aEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0NsaWVudEF1dGhFcnJvclwiO1xyXG5pbXBvcnQgeyBJTmV0d29ya01vZHVsZSB9IGZyb20gXCIuLi9uZXR3b3JrL0lOZXR3b3JrTW9kdWxlXCI7XHJcbmltcG9ydCB7IEF1dGhvcml0eU1ldGFkYXRhU291cmNlLCBDb25zdGFudHMgfSBmcm9tIFwiLi4vdXRpbHMvQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IENsaWVudENvbmZpZ3VyYXRpb25FcnJvciB9IGZyb20gXCIuLi9lcnJvci9DbGllbnRDb25maWd1cmF0aW9uRXJyb3JcIjtcclxuaW1wb3J0IHsgUHJvdG9jb2xNb2RlIH0gZnJvbSBcIi4vUHJvdG9jb2xNb2RlXCI7XHJcbmltcG9ydCB7IElDYWNoZU1hbmFnZXIgfSBmcm9tIFwiLi4vY2FjaGUvaW50ZXJmYWNlL0lDYWNoZU1hbmFnZXJcIjtcclxuaW1wb3J0IHsgQXV0aG9yaXR5TWV0YWRhdGFFbnRpdHkgfSBmcm9tIFwiLi4vY2FjaGUvZW50aXRpZXMvQXV0aG9yaXR5TWV0YWRhdGFFbnRpdHlcIjtcclxuaW1wb3J0IHsgQXV0aG9yaXR5T3B0aW9ucyB9IGZyb20gXCIuL0F1dGhvcml0eU9wdGlvbnNcIjtcclxuaW1wb3J0IHsgQ2xvdWRJbnN0YW5jZURpc2NvdmVyeVJlc3BvbnNlLCBpc0Nsb3VkSW5zdGFuY2VEaXNjb3ZlcnlSZXNwb25zZSB9IGZyb20gXCIuL0Nsb3VkSW5zdGFuY2VEaXNjb3ZlcnlSZXNwb25zZVwiO1xyXG5pbXBvcnQgeyBDbG91ZERpc2NvdmVyeU1ldGFkYXRhIH0gZnJvbSBcIi4vQ2xvdWREaXNjb3ZlcnlNZXRhZGF0YVwiO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBhdXRob3JpdHkgY2xhc3MgdmFsaWRhdGVzIHRoZSBhdXRob3JpdHkgVVJJcyB1c2VkIGJ5IHRoZSB1c2VyLCBhbmQgcmV0cmlldmVzIHRoZSBPcGVuSUQgQ29uZmlndXJhdGlvbiBEYXRhIGZyb20gdGhlXHJcbiAqIGVuZHBvaW50LiBJdCB3aWxsIHN0b3JlIHRoZSBwZXJ0aW5lbnQgY29uZmlnIGRhdGEgaW4gdGhpcyBvYmplY3QgZm9yIHVzZSBkdXJpbmcgdG9rZW4gY2FsbHMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXV0aG9yaXR5IHtcclxuXHJcbiAgICAvLyBDYW5vbmljYWwgYXV0aG9yaXR5IHVybCBzdHJpbmdcclxuICAgIHByaXZhdGUgX2Nhbm9uaWNhbEF1dGhvcml0eTogVXJsU3RyaW5nO1xyXG4gICAgLy8gQ2Fub25pY2FseSBhdXRob3JpdHkgdXJsIGNvbXBvbmVudHNcclxuICAgIHByaXZhdGUgX2Nhbm9uaWNhbEF1dGhvcml0eVVybENvbXBvbmVudHM6IElVcmkgfCBudWxsO1xyXG4gICAgLy8gTmV0d29yayBpbnRlcmZhY2UgdG8gbWFrZSByZXF1ZXN0cyB3aXRoLlxyXG4gICAgcHJvdGVjdGVkIG5ldHdvcmtJbnRlcmZhY2U6IElOZXR3b3JrTW9kdWxlO1xyXG4gICAgLy8gQ2FjaGUgTWFuYWdlciB0byBjYWNoZSBuZXR3b3JrIHJlc3BvbnNlc1xyXG4gICAgcHJvdGVjdGVkIGNhY2hlTWFuYWdlcjogSUNhY2hlTWFuYWdlcjtcclxuICAgIC8vIFByb3RvY29sIG1vZGUgdG8gY29uc3RydWN0IGVuZHBvaW50c1xyXG4gICAgcHJpdmF0ZSBhdXRob3JpdHlPcHRpb25zOiBBdXRob3JpdHlPcHRpb25zO1xyXG4gICAgLy8gQXV0aG9yaXR5IG1ldGFkYXRhXHJcbiAgICBwcml2YXRlIG1ldGFkYXRhOiBBdXRob3JpdHlNZXRhZGF0YUVudGl0eTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihhdXRob3JpdHk6IHN0cmluZywgbmV0d29ya0ludGVyZmFjZTogSU5ldHdvcmtNb2R1bGUsIGNhY2hlTWFuYWdlcjogSUNhY2hlTWFuYWdlciwgYXV0aG9yaXR5T3B0aW9uczogQXV0aG9yaXR5T3B0aW9ucykge1xyXG4gICAgICAgIHRoaXMuY2Fub25pY2FsQXV0aG9yaXR5ID0gYXV0aG9yaXR5O1xyXG4gICAgICAgIHRoaXMuX2Nhbm9uaWNhbEF1dGhvcml0eS52YWxpZGF0ZUFzVXJpKCk7XHJcbiAgICAgICAgdGhpcy5uZXR3b3JrSW50ZXJmYWNlID0gbmV0d29ya0ludGVyZmFjZTtcclxuICAgICAgICB0aGlzLmNhY2hlTWFuYWdlciA9IGNhY2hlTWFuYWdlcjtcclxuICAgICAgICB0aGlzLmF1dGhvcml0eU9wdGlvbnMgPSBhdXRob3JpdHlPcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNlZSBhYm92ZSBmb3IgQXV0aG9yaXR5VHlwZVxyXG4gICAgcHVibGljIGdldCBhdXRob3JpdHlUeXBlKCk6IEF1dGhvcml0eVR5cGUge1xyXG4gICAgICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IHRoaXMuY2Fub25pY2FsQXV0aG9yaXR5VXJsQ29tcG9uZW50cy5QYXRoU2VnbWVudHM7XHJcblxyXG4gICAgICAgIGlmIChwYXRoU2VnbWVudHMubGVuZ3RoICYmIHBhdGhTZWdtZW50c1swXS50b0xvd2VyQ2FzZSgpID09PSBDb25zdGFudHMuQURGUykge1xyXG4gICAgICAgICAgICByZXR1cm4gQXV0aG9yaXR5VHlwZS5BZGZzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIEF1dGhvcml0eVR5cGUuRGVmYXVsdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3RvY29sTW9kZSBlbnVtIHJlcHJlc2VudGluZyB0aGUgd2F5IGVuZHBvaW50cyBhcmUgY29uc3RydWN0ZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgcHJvdG9jb2xNb2RlKCk6IFByb3RvY29sTW9kZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0aG9yaXR5T3B0aW9ucy5wcm90b2NvbE1vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGF1dGhvcml0eU9wdGlvbnMgd2hpY2ggY2FuIGJlIHVzZWQgdG8gcmVpbnN0YW50aWF0ZSBhIG5ldyBhdXRob3JpdHkgaW5zdGFuY2VcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBvcHRpb25zKCk6IEF1dGhvcml0eU9wdGlvbnMge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmF1dGhvcml0eU9wdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIFVSTCB0aGF0IGlzIHRoZSBhdXRob3JpdHkgc2V0IGJ5IHRoZSBkZXZlbG9wZXJcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBjYW5vbmljYWxBdXRob3JpdHkoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY2Fub25pY2FsQXV0aG9yaXR5LnVybFN0cmluZztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgY2Fub25pY2FsIGF1dGhvcml0eS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldCBjYW5vbmljYWxBdXRob3JpdHkodXJsOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9jYW5vbmljYWxBdXRob3JpdHkgPSBuZXcgVXJsU3RyaW5nKHVybCk7XHJcbiAgICAgICAgdGhpcy5fY2Fub25pY2FsQXV0aG9yaXR5LnZhbGlkYXRlQXNVcmkoKTtcclxuICAgICAgICB0aGlzLl9jYW5vbmljYWxBdXRob3JpdHlVcmxDb21wb25lbnRzID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBhdXRob3JpdHkgY29tcG9uZW50cy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBjYW5vbmljYWxBdXRob3JpdHlVcmxDb21wb25lbnRzKCk6IElVcmkge1xyXG4gICAgICAgIGlmICghdGhpcy5fY2Fub25pY2FsQXV0aG9yaXR5VXJsQ29tcG9uZW50cykge1xyXG4gICAgICAgICAgICB0aGlzLl9jYW5vbmljYWxBdXRob3JpdHlVcmxDb21wb25lbnRzID0gdGhpcy5fY2Fub25pY2FsQXV0aG9yaXR5LmdldFVybENvbXBvbmVudHMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9jYW5vbmljYWxBdXRob3JpdHlVcmxDb21wb25lbnRzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGhvc3RuYW1lIGFuZCBwb3J0IGkuZS4gbG9naW4ubWljcm9zb2Z0b25saW5lLmNvbVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGhvc3RuYW1lQW5kUG9ydCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhbm9uaWNhbEF1dGhvcml0eVVybENvbXBvbmVudHMuSG9zdE5hbWVBbmRQb3J0LnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgdGVuYW50IGZvciBhdXRob3JpdHkuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgdGVuYW50KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2Fub25pY2FsQXV0aG9yaXR5VXJsQ29tcG9uZW50cy5QYXRoU2VnbWVudHNbMF07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPQXV0aCAvYXV0aG9yaXplIGVuZHBvaW50IGZvciByZXF1ZXN0c1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGF1dGhvcml6YXRpb25FbmRwb2ludCgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmKHRoaXMuZGlzY292ZXJ5Q29tcGxldGUoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMucmVwbGFjZVBhdGgodGhpcy5tZXRhZGF0YS5hdXRob3JpemF0aW9uX2VuZHBvaW50KTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVwbGFjZVRlbmFudChlbmRwb2ludCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZUVuZHBvaW50RGlzY292ZXJ5SW5jb21wbGV0ZUVycm9yKFwiRGlzY292ZXJ5IGluY29tcGxldGUuXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9BdXRoIC90b2tlbiBlbmRwb2ludCBmb3IgcmVxdWVzdHNcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCB0b2tlbkVuZHBvaW50KCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYodGhpcy5kaXNjb3ZlcnlDb21wbGV0ZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5yZXBsYWNlUGF0aCh0aGlzLm1ldGFkYXRhLnRva2VuX2VuZHBvaW50KTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVwbGFjZVRlbmFudChlbmRwb2ludCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZUVuZHBvaW50RGlzY292ZXJ5SW5jb21wbGV0ZUVycm9yKFwiRGlzY292ZXJ5IGluY29tcGxldGUuXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGRldmljZUNvZGVFbmRwb2ludCgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmKHRoaXMuZGlzY292ZXJ5Q29tcGxldGUoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMucmVwbGFjZVBhdGgodGhpcy5tZXRhZGF0YS50b2tlbl9lbmRwb2ludC5yZXBsYWNlKFwiL3Rva2VuXCIsIFwiL2RldmljZWNvZGVcIikpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXBsYWNlVGVuYW50KGVuZHBvaW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRBdXRoRXJyb3IuY3JlYXRlRW5kcG9pbnREaXNjb3ZlcnlJbmNvbXBsZXRlRXJyb3IoXCJEaXNjb3ZlcnkgaW5jb21wbGV0ZS5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT0F1dGggbG9nb3V0IGVuZHBvaW50IGZvciByZXF1ZXN0c1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGVuZFNlc3Npb25FbmRwb2ludCgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmKHRoaXMuZGlzY292ZXJ5Q29tcGxldGUoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMucmVwbGFjZVBhdGgodGhpcy5tZXRhZGF0YS5lbmRfc2Vzc2lvbl9lbmRwb2ludCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcGxhY2VUZW5hbnQoZW5kcG9pbnQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVFbmRwb2ludERpc2NvdmVyeUluY29tcGxldGVFcnJvcihcIkRpc2NvdmVyeSBpbmNvbXBsZXRlLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPQXV0aCBpc3N1ZXIgZm9yIHJlcXVlc3RzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgc2VsZlNpZ25lZEp3dEF1ZGllbmNlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYodGhpcy5kaXNjb3ZlcnlDb21wbGV0ZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5yZXBsYWNlUGF0aCh0aGlzLm1ldGFkYXRhLmlzc3Vlcik7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcGxhY2VUZW5hbnQoZW5kcG9pbnQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVFbmRwb2ludERpc2NvdmVyeUluY29tcGxldGVFcnJvcihcIkRpc2NvdmVyeSBpbmNvbXBsZXRlLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXBsYWNlcyB0ZW5hbnQgaW4gdXJsIHBhdGggd2l0aCBjdXJyZW50IHRlbmFudC4gRGVmYXVsdHMgdG8gY29tbW9uLlxyXG4gICAgICogQHBhcmFtIHVybFN0cmluZ1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlcGxhY2VUZW5hbnQodXJsU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB1cmxTdHJpbmcucmVwbGFjZSgve3RlbmFudH18e3RlbmFudGlkfS9nLCB0aGlzLnRlbmFudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXBsYWNlcyBwYXRoIHN1Y2ggYXMgdGVuYW50IG9yIHBvbGljeSB3aXRoIHRoZSBjdXJyZW50IHRlbmFudCBvciBwb2xpY3kuXHJcbiAgICAgKiBAcGFyYW0gdXJsU3RyaW5nIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlcGxhY2VQYXRoKHVybFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgZW5kcG9pbnQgPSB1cmxTdHJpbmc7XHJcbiAgICAgICAgY29uc3QgY2FjaGVkQXV0aG9yaXR5VXJsID0gbmV3IFVybFN0cmluZyh0aGlzLm1ldGFkYXRhLmNhbm9uaWNhbF9hdXRob3JpdHkpO1xyXG4gICAgICAgIGNvbnN0IGNhY2hlZEF1dGhvcml0eVBhcnRzID0gY2FjaGVkQXV0aG9yaXR5VXJsLmdldFVybENvbXBvbmVudHMoKS5QYXRoU2VnbWVudHM7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEF1dGhvcml0eVBhcnRzID0gdGhpcy5jYW5vbmljYWxBdXRob3JpdHlVcmxDb21wb25lbnRzLlBhdGhTZWdtZW50cztcclxuXHJcbiAgICAgICAgY3VycmVudEF1dGhvcml0eVBhcnRzLmZvckVhY2goKGN1cnJlbnRQYXJ0LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjYWNoZWRQYXJ0ID0gY2FjaGVkQXV0aG9yaXR5UGFydHNbaW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudFBhcnQgIT09IGNhY2hlZFBhcnQpIHtcclxuICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gZW5kcG9pbnQucmVwbGFjZShgLyR7Y2FjaGVkUGFydH0vYCwgYC8ke2N1cnJlbnRQYXJ0fS9gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gZW5kcG9pbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZGVmYXVsdCBvcGVuIGlkIGNvbmZpZ3VyYXRpb24gZW5kcG9pbnQgZm9yIGFueSBjYW5vbmljYWwgYXV0aG9yaXR5LlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IGRlZmF1bHRPcGVuSWRDb25maWd1cmF0aW9uRW5kcG9pbnQoKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodGhpcy5hdXRob3JpdHlUeXBlID09PSBBdXRob3JpdHlUeXBlLkFkZnMgfHwgdGhpcy5wcm90b2NvbE1vZGUgPT09IFByb3RvY29sTW9kZS5PSURDKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLmNhbm9uaWNhbEF1dGhvcml0eX0ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbmA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmNhbm9uaWNhbEF1dGhvcml0eX12Mi4wLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uYDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEJvb2xlYW4gdGhhdCByZXR1cm5zIHdoZXRociBvciBub3QgdGVuYW50IGRpc2NvdmVyeSBoYXMgYmVlbiBjb21wbGV0ZWQuXHJcbiAgICAgKi9cclxuICAgIGRpc2NvdmVyeUNvbXBsZXRlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMubWV0YWRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXJmb3JtIGVuZHBvaW50IGRpc2NvdmVyeSB0byBkaXNjb3ZlciBhbGlhc2VzLCBwcmVmZXJyZWRfY2FjaGUsIHByZWZlcnJlZF9uZXR3b3JrXHJcbiAgICAgKiBhbmQgdGhlIC9hdXRob3JpemUsIC90b2tlbiBhbmQgbG9nb3V0IGVuZHBvaW50cy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFzeW5jIHJlc29sdmVFbmRwb2ludHNBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBsZXQgbWV0YWRhdGFFbnRpdHkgPSB0aGlzLmNhY2hlTWFuYWdlci5nZXRBdXRob3JpdHlNZXRhZGF0YUJ5QWxpYXModGhpcy5ob3N0bmFtZUFuZFBvcnQpO1xyXG4gICAgICAgIGlmICghbWV0YWRhdGFFbnRpdHkpIHtcclxuICAgICAgICAgICAgbWV0YWRhdGFFbnRpdHkgPSBuZXcgQXV0aG9yaXR5TWV0YWRhdGFFbnRpdHkoKTtcclxuICAgICAgICAgICAgbWV0YWRhdGFFbnRpdHkudXBkYXRlQ2Fub25pY2FsQXV0aG9yaXR5KHRoaXMuY2Fub25pY2FsQXV0aG9yaXR5KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNsb3VkRGlzY292ZXJ5U291cmNlID0gYXdhaXQgdGhpcy51cGRhdGVDbG91ZERpc2NvdmVyeU1ldGFkYXRhKG1ldGFkYXRhRW50aXR5KTtcclxuICAgICAgICB0aGlzLmNhbm9uaWNhbEF1dGhvcml0eSA9IHRoaXMuY2Fub25pY2FsQXV0aG9yaXR5LnJlcGxhY2UodGhpcy5ob3N0bmFtZUFuZFBvcnQsIG1ldGFkYXRhRW50aXR5LnByZWZlcnJlZF9uZXR3b3JrKTtcclxuICAgICAgICBjb25zdCBlbmRwb2ludFNvdXJjZSA9IGF3YWl0IHRoaXMudXBkYXRlRW5kcG9pbnRNZXRhZGF0YShtZXRhZGF0YUVudGl0eSk7XHJcblxyXG4gICAgICAgIGlmIChjbG91ZERpc2NvdmVyeVNvdXJjZSAhPT0gQXV0aG9yaXR5TWV0YWRhdGFTb3VyY2UuQ0FDSEUgJiYgZW5kcG9pbnRTb3VyY2UgIT09IEF1dGhvcml0eU1ldGFkYXRhU291cmNlLkNBQ0hFKSB7XHJcbiAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBleHBpcmF0aW9uIHRpbWUgdW5sZXNzIGJvdGggdmFsdWVzIGNhbWUgZnJvbSBhIHN1Y2Nlc3NmdWwgY2FjaGUgbG9va3VwXHJcbiAgICAgICAgICAgIG1ldGFkYXRhRW50aXR5LnJlc2V0RXhwaXJlc0F0KCk7XHJcbiAgICAgICAgICAgIG1ldGFkYXRhRW50aXR5LnVwZGF0ZUNhbm9uaWNhbEF1dGhvcml0eSh0aGlzLmNhbm9uaWNhbEF1dGhvcml0eSk7XHJcbiAgICAgICAgfSBcclxuXHJcbiAgICAgICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLmNhY2hlTWFuYWdlci5nZW5lcmF0ZUF1dGhvcml0eU1ldGFkYXRhQ2FjaGVLZXkobWV0YWRhdGFFbnRpdHkucHJlZmVycmVkX2NhY2hlKTtcclxuICAgICAgICB0aGlzLmNhY2hlTWFuYWdlci5zZXRBdXRob3JpdHlNZXRhZGF0YShjYWNoZUtleSwgbWV0YWRhdGFFbnRpdHkpO1xyXG4gICAgICAgIHRoaXMubWV0YWRhdGEgPSBtZXRhZGF0YUVudGl0eTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZSBBdXRob3JpdHlNZXRhZGF0YUVudGl0eSB3aXRoIG5ldyBlbmRwb2ludHMgYW5kIHJldHVybiB3aGVyZSB0aGUgaW5mb3JtYXRpb24gY2FtZSBmcm9tXHJcbiAgICAgKiBAcGFyYW0gbWV0YWRhdGFFbnRpdHkgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYXN5bmMgdXBkYXRlRW5kcG9pbnRNZXRhZGF0YShtZXRhZGF0YUVudGl0eTogQXV0aG9yaXR5TWV0YWRhdGFFbnRpdHkpOiBQcm9taXNlPEF1dGhvcml0eU1ldGFkYXRhU291cmNlPiB7XHJcbiAgICAgICAgbGV0IG1ldGFkYXRhID0gdGhpcy5nZXRFbmRwb2ludE1ldGFkYXRhRnJvbUNvbmZpZygpO1xyXG4gICAgICAgIGlmIChtZXRhZGF0YSkge1xyXG4gICAgICAgICAgICBtZXRhZGF0YUVudGl0eS51cGRhdGVFbmRwb2ludE1ldGFkYXRhKG1ldGFkYXRhLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBBdXRob3JpdHlNZXRhZGF0YVNvdXJjZS5DT05GSUc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5pc0F1dGhvcml0eVNhbWVUeXBlKG1ldGFkYXRhRW50aXR5KSAmJiBtZXRhZGF0YUVudGl0eS5lbmRwb2ludHNGcm9tTmV0d29yayAmJiAhbWV0YWRhdGFFbnRpdHkuaXNFeHBpcmVkKCkpIHtcclxuICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1cGRhdGVcclxuICAgICAgICAgICAgcmV0dXJuIEF1dGhvcml0eU1ldGFkYXRhU291cmNlLkNBQ0hFO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbWV0YWRhdGEgPSBhd2FpdCB0aGlzLmdldEVuZHBvaW50TWV0YWRhdGFGcm9tTmV0d29yaygpO1xyXG4gICAgICAgIGlmIChtZXRhZGF0YSkge1xyXG4gICAgICAgICAgICBtZXRhZGF0YUVudGl0eS51cGRhdGVFbmRwb2ludE1ldGFkYXRhKG1ldGFkYXRhLCB0cnVlKTtcclxuICAgICAgICAgICAgcmV0dXJuIEF1dGhvcml0eU1ldGFkYXRhU291cmNlLk5FVFdPUks7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgQ2xpZW50QXV0aEVycm9yLmNyZWF0ZVVuYWJsZVRvR2V0T3BlbmlkQ29uZmlnRXJyb3IodGhpcy5kZWZhdWx0T3BlbklkQ29uZmlndXJhdGlvbkVuZHBvaW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb21wYXJlcyB0aGUgbnVtYmVyIG9mIHVybCBjb21wb25lbnRzIGFmdGVyIHRoZSBkb21haW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBjYWNoZWQgYXV0aG9yaXR5IG1ldGFkYXRhIGNhbiBiZSB1c2VkIGZvciB0aGUgcmVxdWVzdGVkIGF1dGhvcml0eVxyXG4gICAgICogUHJvdGVjdHMgYWdhaW5zdCBzYW1lIGRvbWFpbiBkaWZmZXJlbnQgYXV0aG9yaXR5IHN1Y2ggYXMgbG9naW4ubWljcm9zb2Z0b25saW5lLmNvbS90ZW5hbnQgYW5kIGxvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vdGZwL3RlbmFudC9wb2xpY3lcclxuICAgICAqIEBwYXJhbSBtZXRhZGF0YUVudGl0eVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGlzQXV0aG9yaXR5U2FtZVR5cGUobWV0YWRhdGFFbnRpdHk6IEF1dGhvcml0eU1ldGFkYXRhRW50aXR5KTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgY2FjaGVkQXV0aG9yaXR5VXJsID0gbmV3IFVybFN0cmluZyhtZXRhZGF0YUVudGl0eS5jYW5vbmljYWxfYXV0aG9yaXR5KTtcclxuICAgICAgICBjb25zdCBjYWNoZWRQYXJ0cyA9IGNhY2hlZEF1dGhvcml0eVVybC5nZXRVcmxDb21wb25lbnRzKCkuUGF0aFNlZ21lbnRzO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBjYWNoZWRQYXJ0cy5sZW5ndGggPT09IHRoaXMuY2Fub25pY2FsQXV0aG9yaXR5VXJsQ29tcG9uZW50cy5QYXRoU2VnbWVudHMubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGFyc2UgYXV0aG9yaXR5TWV0YWRhdGEgY29uZmlnIG9wdGlvblxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldEVuZHBvaW50TWV0YWRhdGFGcm9tQ29uZmlnKCk6IE9wZW5JZENvbmZpZ1Jlc3BvbnNlIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXV0aG9yaXR5T3B0aW9ucy5hdXRob3JpdHlNZXRhZGF0YSkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UodGhpcy5hdXRob3JpdHlPcHRpb25zLmF1dGhvcml0eU1ldGFkYXRhKSBhcyBPcGVuSWRDb25maWdSZXNwb25zZTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yLmNyZWF0ZUludmFsaWRBdXRob3JpdHlNZXRhZGF0YUVycm9yKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBPQXV0aCBlbmRwb2ludHMgZnJvbSB0aGUgZ2l2ZW4gT3BlbklEIGNvbmZpZ3VyYXRpb24gZW5kcG9pbnQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYXN5bmMgZ2V0RW5kcG9pbnRNZXRhZGF0YUZyb21OZXR3b3JrKCk6IFByb21pc2U8T3BlbklkQ29uZmlnUmVzcG9uc2UgfCBudWxsPiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLm5ldHdvcmtJbnRlcmZhY2Uuc2VuZEdldFJlcXVlc3RBc3luYzxPcGVuSWRDb25maWdSZXNwb25zZT4odGhpcy5kZWZhdWx0T3BlbklkQ29uZmlndXJhdGlvbkVuZHBvaW50KTtcclxuICAgICAgICAgICAgcmV0dXJuIGlzT3BlbklkQ29uZmlnUmVzcG9uc2UocmVzcG9uc2UuYm9keSkgPyByZXNwb25zZS5ib2R5IDogbnVsbDtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgdGhlIEF1dGhvcml0eU1ldGFkYXRhRW50aXR5IHdpdGggbmV3IGFsaWFzZXMsIHByZWZlcnJlZF9uZXR3b3JrIGFuZCBwcmVmZXJyZWRfY2FjaGUgYW5kIHJldHVybnMgd2hlcmUgdGhlIGluZm9ybWF0aW9uIHdhcyByZXRyaXZlZCBmcm9tXHJcbiAgICAgKiBAcGFyYW0gY2FjaGVkTWV0YWRhdGEgXHJcbiAgICAgKiBAcGFyYW0gbmV3TWV0YWRhdGEgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYXN5bmMgdXBkYXRlQ2xvdWREaXNjb3ZlcnlNZXRhZGF0YShtZXRhZGF0YUVudGl0eTogQXV0aG9yaXR5TWV0YWRhdGFFbnRpdHkpOiBQcm9taXNlPEF1dGhvcml0eU1ldGFkYXRhU291cmNlPiB7XHJcbiAgICAgICAgbGV0IG1ldGFkYXRhID0gdGhpcy5nZXRDbG91ZERpc2NvdmVyeU1ldGFkYXRhRnJvbUNvbmZpZygpO1xyXG4gICAgICAgIGlmIChtZXRhZGF0YSkge1xyXG4gICAgICAgICAgICBtZXRhZGF0YUVudGl0eS51cGRhdGVDbG91ZERpc2NvdmVyeU1ldGFkYXRhKG1ldGFkYXRhLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBBdXRob3JpdHlNZXRhZGF0YVNvdXJjZS5DT05GSUc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiBUaGUgY2FjaGVkIG1ldGFkYXRhIGNhbWUgZnJvbSBjb25maWcgYnV0IHRoYXQgY29uZmlnIHdhcyBub3QgcGFzc2VkIHRvIHRoaXMgaW5zdGFuY2UsIHdlIG11c3QgZ28gdG8gdGhlIG5ldHdvcmtcclxuICAgICAgICBpZiAodGhpcy5pc0F1dGhvcml0eVNhbWVUeXBlKG1ldGFkYXRhRW50aXR5KSAmJiBtZXRhZGF0YUVudGl0eS5hbGlhc2VzRnJvbU5ldHdvcmsgJiYgIW1ldGFkYXRhRW50aXR5LmlzRXhwaXJlZCgpKSB7XHJcbiAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdXBkYXRlXHJcbiAgICAgICAgICAgIHJldHVybiBBdXRob3JpdHlNZXRhZGF0YVNvdXJjZS5DQUNIRTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG1ldGFkYXRhID0gYXdhaXQgdGhpcy5nZXRDbG91ZERpc2NvdmVyeU1ldGFkYXRhRnJvbU5ldHdvcmsoKTtcclxuICAgICAgICBpZiAobWV0YWRhdGEpIHtcclxuICAgICAgICAgICAgbWV0YWRhdGFFbnRpdHkudXBkYXRlQ2xvdWREaXNjb3ZlcnlNZXRhZGF0YShtZXRhZGF0YSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBBdXRob3JpdHlNZXRhZGF0YVNvdXJjZS5ORVRXT1JLO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIE1ldGFkYXRhIGNvdWxkIG5vdCBiZSBvYnRhaW5lZCBmcm9tIGNvbmZpZywgY2FjaGUgb3IgbmV0d29ya1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRDb25maWd1cmF0aW9uRXJyb3IuY3JlYXRlVW50cnVzdGVkQXV0aG9yaXR5RXJyb3IoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXJzZSBjbG91ZERpc2NvdmVyeU1ldGFkYXRhIGNvbmZpZyBvciBjaGVjayBrbm93bkF1dGhvcml0aWVzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0Q2xvdWREaXNjb3ZlcnlNZXRhZGF0YUZyb21Db25maWcoKTogQ2xvdWREaXNjb3ZlcnlNZXRhZGF0YSB8IG51bGwge1xyXG4gICAgICAgIC8vIENoZWNrIGlmIG5ldHdvcmsgcmVzcG9uc2Ugd2FzIHByb3ZpZGVkIGluIGNvbmZpZ1xyXG4gICAgICAgIGlmICh0aGlzLmF1dGhvcml0eU9wdGlvbnMuY2xvdWREaXNjb3ZlcnlNZXRhZGF0YSkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkUmVzcG9uc2UgPSBKU09OLnBhcnNlKHRoaXMuYXV0aG9yaXR5T3B0aW9ucy5jbG91ZERpc2NvdmVyeU1ldGFkYXRhKSBhcyBDbG91ZEluc3RhbmNlRGlzY292ZXJ5UmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IEF1dGhvcml0eS5nZXRDbG91ZERpc2NvdmVyeU1ldGFkYXRhRnJvbU5ldHdvcmtSZXNwb25zZShwYXJzZWRSZXNwb25zZS5tZXRhZGF0YSwgdGhpcy5ob3N0bmFtZUFuZFBvcnQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBDbGllbnRDb25maWd1cmF0aW9uRXJyb3IuY3JlYXRlSW52YWxpZENsb3VkRGlzY292ZXJ5TWV0YWRhdGFFcnJvcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiBjbG91ZERpc2NvdmVyeU1ldGFkYXRhIGlzIGVtcHR5IG9yIGRvZXMgbm90IGNvbnRhaW4gdGhlIGhvc3QsIGNoZWNrIGtub3duQXV0aG9yaXRpZXNcclxuICAgICAgICBpZiAodGhpcy5pc0luS25vd25BdXRob3JpdGllcygpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBBdXRob3JpdHkuY3JlYXRlQ2xvdWREaXNjb3ZlcnlNZXRhZGF0YUZyb21Ib3N0KHRoaXMuaG9zdG5hbWVBbmRQb3J0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGVkIHRvIGdldCBtZXRhZGF0YSBmcm9tIG5ldHdvcmsgaWYgQ2xvdWREaXNjb3ZlcnlNZXRhZGF0YSB3YXMgbm90IHBvcHVsYXRlZCBieSBjb25maWdcclxuICAgICAqIEBwYXJhbSBuZXR3b3JrSW50ZXJmYWNlIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGFzeW5jIGdldENsb3VkRGlzY292ZXJ5TWV0YWRhdGFGcm9tTmV0d29yaygpOiBQcm9taXNlPENsb3VkRGlzY292ZXJ5TWV0YWRhdGEgfCBudWxsPiB7XHJcbiAgICAgICAgY29uc3QgaW5zdGFuY2VEaXNjb3ZlcnlFbmRwb2ludCA9IGAke0NvbnN0YW50cy5BQURfSU5TVEFOQ0VfRElTQ09WRVJZX0VORFBUfSR7dGhpcy5jYW5vbmljYWxBdXRob3JpdHl9b2F1dGgyL3YyLjAvYXV0aG9yaXplYDtcclxuICAgICAgICBsZXQgbWF0Y2ggPSBudWxsO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5uZXR3b3JrSW50ZXJmYWNlLnNlbmRHZXRSZXF1ZXN0QXN5bmM8Q2xvdWRJbnN0YW5jZURpc2NvdmVyeVJlc3BvbnNlPihpbnN0YW5jZURpc2NvdmVyeUVuZHBvaW50KTtcclxuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBpc0Nsb3VkSW5zdGFuY2VEaXNjb3ZlcnlSZXNwb25zZShyZXNwb25zZS5ib2R5KSA/IHJlc3BvbnNlLmJvZHkubWV0YWRhdGEgOiBbXTtcclxuICAgICAgICAgICAgbWF0Y2ggPSBBdXRob3JpdHkuZ2V0Q2xvdWREaXNjb3ZlcnlNZXRhZGF0YUZyb21OZXR3b3JrUmVzcG9uc2UobWV0YWRhdGEsIHRoaXMuaG9zdG5hbWVBbmRQb3J0KTtcclxuICAgICAgICB9IGNhdGNoKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIW1hdGNoKSB7XHJcbiAgICAgICAgICAgIC8vIEN1c3RvbSBEb21haW4gc2NlbmFyaW8sIGhvc3QgaXMgdHJ1c3RlZCBiZWNhdXNlIEluc3RhbmNlIERpc2NvdmVyeSBjYWxsIHN1Y2NlZWRlZCBcclxuICAgICAgICAgICAgbWF0Y2ggPSBBdXRob3JpdHkuY3JlYXRlQ2xvdWREaXNjb3ZlcnlNZXRhZGF0YUZyb21Ib3N0KHRoaXMuaG9zdG5hbWVBbmRQb3J0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1hdGNoO1xyXG4gICAgfSBcclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgdGhpcyBob3N0IGlzIGluY2x1ZGVkIGluIHRoZSBrbm93bkF1dGhvcml0aWVzIGNvbmZpZyBvcHRpb25cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc0luS25vd25BdXRob3JpdGllcygpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5hdXRob3JpdHlPcHRpb25zLmtub3duQXV0aG9yaXRpZXMuZmlsdGVyKChhdXRob3JpdHkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIFVybFN0cmluZy5nZXREb21haW5Gcm9tVXJsKGF1dGhvcml0eSkudG9Mb3dlckNhc2UoKSA9PT0gdGhpcy5ob3N0bmFtZUFuZFBvcnQ7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBtYXRjaGVzLmxlbmd0aCA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGNsb3VkIGRpc2NvdmVyeSBtZXRhZGF0YSBvYmplY3QgZnJvbSBhIGdpdmVuIGhvc3RcclxuICAgICAqIEBwYXJhbSBob3N0IFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlQ2xvdWREaXNjb3ZlcnlNZXRhZGF0YUZyb21Ib3N0KGhvc3Q6IHN0cmluZyk6IENsb3VkRGlzY292ZXJ5TWV0YWRhdGEge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHByZWZlcnJlZF9uZXR3b3JrOiBob3N0LFxyXG4gICAgICAgICAgICBwcmVmZXJyZWRfY2FjaGU6IGhvc3QsXHJcbiAgICAgICAgICAgIGFsaWFzZXM6IFtob3N0XVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZWFyY2hlcyBpbnN0YW5jZSBkaXNjb3ZlcnkgbmV0d29yayByZXNwb25zZSBmb3IgdGhlIGVudHJ5IHRoYXQgY29udGFpbnMgdGhlIGhvc3QgaW4gdGhlIGFsaWFzZXMgbGlzdFxyXG4gICAgICogQHBhcmFtIHJlc3BvbnNlIFxyXG4gICAgICogQHBhcmFtIGF1dGhvcml0eSBcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldENsb3VkRGlzY292ZXJ5TWV0YWRhdGFGcm9tTmV0d29ya1Jlc3BvbnNlKHJlc3BvbnNlOiBDbG91ZERpc2NvdmVyeU1ldGFkYXRhW10sIGF1dGhvcml0eTogc3RyaW5nKTogQ2xvdWREaXNjb3ZlcnlNZXRhZGF0YSB8IG51bGwge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzcG9uc2UubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSByZXNwb25zZVtpXTtcclxuICAgICAgICAgICAgaWYgKG1ldGFkYXRhLmFsaWFzZXMuaW5kZXhPZihhdXRob3JpdHkpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtZXRhZGF0YTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBoZWxwZXIgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgZW52aXJvbm1lbnQgZnJvbSBhdXRob3JpdHkgb2JqZWN0XHJcbiAgICAgKi9cclxuICAgIGdldFByZWZlcnJlZENhY2hlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYodGhpcy5kaXNjb3ZlcnlDb21wbGV0ZSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1ldGFkYXRhLnByZWZlcnJlZF9jYWNoZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBDbGllbnRBdXRoRXJyb3IuY3JlYXRlRW5kcG9pbnREaXNjb3ZlcnlJbmNvbXBsZXRlRXJyb3IoXCJEaXNjb3ZlcnkgaW5jb21wbGV0ZS5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgcHJvdmlkZWQgaG9zdCBpcyBhbiBhbGlhcyBvZiB0aGlzIGF1dGhvcml0eSBpbnN0YW5jZVxyXG4gICAgICogQHBhcmFtIGhvc3QgXHJcbiAgICAgKi9cclxuICAgIGlzQWxpYXMoaG9zdDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0YWRhdGEuYWxpYXNlcy5pbmRleE9mKGhvc3QpID4gLTE7XHJcbiAgICB9XHJcbn1cclxuIiwiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBBdXRob3JpdHkgfSBmcm9tIFwiLi9BdXRob3JpdHlcIjtcclxuaW1wb3J0IHsgQ2xpZW50Q29uZmlndXJhdGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0NsaWVudENvbmZpZ3VyYXRpb25FcnJvclwiO1xyXG5pbXBvcnQgeyBJTmV0d29ya01vZHVsZSB9IGZyb20gXCIuLi9uZXR3b3JrL0lOZXR3b3JrTW9kdWxlXCI7XHJcbmltcG9ydCB7IFN0cmluZ1V0aWxzIH0gZnJvbSBcIi4uL3V0aWxzL1N0cmluZ1V0aWxzXCI7XHJcbmltcG9ydCB7IENsaWVudEF1dGhFcnJvciB9IGZyb20gXCIuLi9lcnJvci9DbGllbnRBdXRoRXJyb3JcIjtcclxuaW1wb3J0IHsgSUNhY2hlTWFuYWdlciB9IGZyb20gXCIuLi9jYWNoZS9pbnRlcmZhY2UvSUNhY2hlTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBBdXRob3JpdHlPcHRpb25zIH0gZnJvbSBcIi4vQXV0aG9yaXR5T3B0aW9uc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEF1dGhvcml0eUZhY3Rvcnkge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlIGFuIGF1dGhvcml0eSBvYmplY3Qgb2YgdGhlIGNvcnJlY3QgdHlwZSBiYXNlZCBvbiB0aGUgdXJsXHJcbiAgICAgKiBQZXJmb3JtcyBiYXNpYyBhdXRob3JpdHkgdmFsaWRhdGlvbiAtIGNoZWNrcyB0byBzZWUgaWYgdGhlIGF1dGhvcml0eSBpcyBvZiBhIHZhbGlkIHR5cGUgKGkuZS4gYWFkLCBiMmMsIGFkZnMpXHJcbiAgICAgKlxyXG4gICAgICogQWxzbyBwZXJmb3JtcyBlbmRwb2ludCBkaXNjb3ZlcnkuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGF1dGhvcml0eVVyaVxyXG4gICAgICogQHBhcmFtIG5ldHdvcmtDbGllbnRcclxuICAgICAqIEBwYXJhbSBwcm90b2NvbE1vZGVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGFzeW5jIGNyZWF0ZURpc2NvdmVyZWRJbnN0YW5jZShhdXRob3JpdHlVcmk6IHN0cmluZywgbmV0d29ya0NsaWVudDogSU5ldHdvcmtNb2R1bGUsIGNhY2hlTWFuYWdlcjogSUNhY2hlTWFuYWdlciwgYXV0aG9yaXR5T3B0aW9uczogQXV0aG9yaXR5T3B0aW9ucyk6IFByb21pc2U8QXV0aG9yaXR5PiB7XHJcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBhdXRob3JpdHkgYW5kIHBlcmZvcm0gZGlzY292ZXJ5IGVuZHBvaW50IGNoZWNrLlxyXG4gICAgICAgIGNvbnN0IGFjcXVpcmVUb2tlbkF1dGhvcml0eTogQXV0aG9yaXR5ID0gQXV0aG9yaXR5RmFjdG9yeS5jcmVhdGVJbnN0YW5jZShhdXRob3JpdHlVcmksIG5ldHdvcmtDbGllbnQsIGNhY2hlTWFuYWdlciwgYXV0aG9yaXR5T3B0aW9ucyk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGFjcXVpcmVUb2tlbkF1dGhvcml0eS5yZXNvbHZlRW5kcG9pbnRzQXN5bmMoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGFjcXVpcmVUb2tlbkF1dGhvcml0eTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudEF1dGhFcnJvci5jcmVhdGVFbmRwb2ludERpc2NvdmVyeUluY29tcGxldGVFcnJvcihlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGUgYW4gYXV0aG9yaXR5IG9iamVjdCBvZiB0aGUgY29ycmVjdCB0eXBlIGJhc2VkIG9uIHRoZSB1cmxcclxuICAgICAqIFBlcmZvcm1zIGJhc2ljIGF1dGhvcml0eSB2YWxpZGF0aW9uIC0gY2hlY2tzIHRvIHNlZSBpZiB0aGUgYXV0aG9yaXR5IGlzIG9mIGEgdmFsaWQgdHlwZSAoaS5lLiBhYWQsIGIyYywgYWRmcylcclxuICAgICAqXHJcbiAgICAgKiBEb2VzIG5vdCBwZXJmb3JtIGVuZHBvaW50IGRpc2NvdmVyeS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gYXV0aG9yaXR5VXJsXHJcbiAgICAgKiBAcGFyYW0gbmV0d29ya0ludGVyZmFjZVxyXG4gICAgICogQHBhcmFtIHByb3RvY29sTW9kZVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYXV0aG9yaXR5VXJsOiBzdHJpbmcsIG5ldHdvcmtJbnRlcmZhY2U6IElOZXR3b3JrTW9kdWxlLCBjYWNoZU1hbmFnZXI6IElDYWNoZU1hbmFnZXIsIGF1dGhvcml0eU9wdGlvbnM6IEF1dGhvcml0eU9wdGlvbnMpOiBBdXRob3JpdHkge1xyXG4gICAgICAgIC8vIFRocm93IGVycm9yIGlmIGF1dGhvcml0eSB1cmwgaXMgZW1wdHlcclxuICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNFbXB0eShhdXRob3JpdHlVcmwpKSB7XHJcbiAgICAgICAgICAgIHRocm93IENsaWVudENvbmZpZ3VyYXRpb25FcnJvci5jcmVhdGVVcmxFbXB0eUVycm9yKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbmV3IEF1dGhvcml0eShhdXRob3JpdHlVcmwsIG5ldHdvcmtJbnRlcmZhY2UsIGNhY2hlTWFuYWdlciwgYXV0aG9yaXR5T3B0aW9ucyk7XHJcbiAgICB9XHJcbn1cclxuIiwiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBTRVJWRVJfVEVMRU1fQ09OU1RBTlRTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL0NvbnN0YW50c1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNlcnZlclRlbGVtZXRyeUVudGl0eSB7XHJcbiAgICBmYWlsZWRSZXF1ZXN0czogQXJyYXk8c3RyaW5nfG51bWJlcj47XHJcbiAgICBlcnJvcnM6IHN0cmluZ1tdO1xyXG4gICAgY2FjaGVIaXRzOiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5mYWlsZWRSZXF1ZXN0cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuZXJyb3JzID0gW107XHJcbiAgICAgICAgdGhpcy5jYWNoZUhpdHMgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogdmFsaWRhdGVzIGlmIGEgZ2l2ZW4gY2FjaGUgZW50cnkgaXMgXCJUZWxlbWV0cnlcIiwgcGFyc2VzIDxrZXksdmFsdWU+XHJcbiAgICAgKiBAcGFyYW0ga2V5XHJcbiAgICAgKiBAcGFyYW0gZW50aXR5XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc1NlcnZlclRlbGVtZXRyeUVudGl0eShrZXk6IHN0cmluZywgZW50aXR5Pzogb2JqZWN0KTogYm9vbGVhbiB7XHJcblxyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlS2V5OiBib29sZWFuID0ga2V5LmluZGV4T2YoU0VSVkVSX1RFTEVNX0NPTlNUQU5UUy5DQUNIRV9LRVkpID09PSAwO1xyXG4gICAgICAgIGxldCB2YWxpZGF0ZUVudGl0eTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmIChlbnRpdHkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdGVFbnRpdHkgPVxyXG4gICAgICAgICAgICAgICAgZW50aXR5Lmhhc093blByb3BlcnR5KFwiZmFpbGVkUmVxdWVzdHNcIikgJiZcclxuICAgICAgICAgICAgICAgIGVudGl0eS5oYXNPd25Qcm9wZXJ0eShcImVycm9yc1wiKSAmJlxyXG4gICAgICAgICAgICAgICAgZW50aXR5Lmhhc093blByb3BlcnR5KFwiY2FjaGVIaXRzXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlS2V5ICYmIHZhbGlkYXRlRW50aXR5O1xyXG4gICAgfVxyXG59XHJcbiIsIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgVGhyb3R0bGluZ0NvbnN0YW50cyB9IGZyb20gXCIuLi8uLi91dGlscy9Db25zdGFudHNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBUaHJvdHRsaW5nRW50aXR5IHtcclxuICAgIC8vIFVuaXgtdGltZSB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIGV4cGlyYXRpb24gb2YgdGhlIHRocm90dGxlXHJcbiAgICB0aHJvdHRsZVRpbWU6IG51bWJlcjtcclxuICAgIC8vIEluZm9ybWF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBzZXJ2ZXJcclxuICAgIGVycm9yPzogc3RyaW5nO1xyXG4gICAgZXJyb3JDb2Rlcz86IEFycmF5PHN0cmluZz47XHJcbiAgICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgICBzdWJFcnJvcj86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIHZhbGlkYXRlcyBpZiBhIGdpdmVuIGNhY2hlIGVudHJ5IGlzIFwiVGhyb3R0bGluZ1wiLCBwYXJzZXMgPGtleSx2YWx1ZT5cclxuICAgICAqIEBwYXJhbSBrZXlcclxuICAgICAqIEBwYXJhbSBlbnRpdHlcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzVGhyb3R0bGluZ0VudGl0eShrZXk6IHN0cmluZywgZW50aXR5Pzogb2JqZWN0KTogYm9vbGVhbiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IHZhbGlkYXRlS2V5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGtleSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0ZUtleSA9IGtleS5pbmRleE9mKFRocm90dGxpbmdDb25zdGFudHMuVEhST1RUTElOR19QUkVGSVgpID09PSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBsZXQgdmFsaWRhdGVFbnRpdHk6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgICAgIGlmIChlbnRpdHkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdGVFbnRpdHkgPSBlbnRpdHkuaGFzT3duUHJvcGVydHkoXCJ0aHJvdHRsZVRpbWVcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdmFsaWRhdGVLZXkgJiYgdmFsaWRhdGVFbnRpdHk7XHJcbiAgICB9XHJcbn1cclxuIiwiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBBdXRoRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvQXV0aEVycm9yXCI7XHJcbmltcG9ydCB7IE5ldHdvcmtSZXNwb25zZSB9IGZyb20gXCIuL05ldHdvcmtNYW5hZ2VyXCI7XHJcblxyXG4vKipcclxuICogT3B0aW9ucyBhbGxvd2VkIGJ5IG5ldHdvcmsgcmVxdWVzdCBBUElzLlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgTmV0d29ya1JlcXVlc3RPcHRpb25zID0ge1xyXG4gICAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXHJcbiAgICBib2R5Pzogc3RyaW5nO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIENsaWVudCBuZXR3b3JrIGludGVyZmFjZSB0byBzZW5kIGJhY2tlbmQgcmVxdWVzdHMuXHJcbiAqIEBpbnRlcmZhY2VcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU5ldHdvcmtNb2R1bGUge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW50ZXJmYWNlIGZ1bmN0aW9uIGZvciBhc3luYyBuZXR3b3JrIFwiR0VUXCIgcmVxdWVzdHMuIEJhc2VkIG9uIHRoZSBGZXRjaCBzdGFuZGFyZDogaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvXHJcbiAgICAgKiBAcGFyYW0gdXJsXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFBhcmFtc1xyXG4gICAgICogQHBhcmFtIGVuYWJsZUNhY2hpbmdcclxuICAgICAqL1xyXG4gICAgc2VuZEdldFJlcXVlc3RBc3luYzxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IE5ldHdvcmtSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8TmV0d29ya1Jlc3BvbnNlPFQ+PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEludGVyZmFjZSBmdW5jdGlvbiBmb3IgYXN5bmMgbmV0d29yayBcIlBPU1RcIiByZXF1ZXN0cy4gQmFzZWQgb24gdGhlIEZldGNoIHN0YW5kYXJkOiBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy9cclxuICAgICAqIEBwYXJhbSB1cmxcclxuICAgICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1zXHJcbiAgICAgKiBAcGFyYW0gZW5hYmxlQ2FjaGluZ1xyXG4gICAgICovXHJcbiAgICBzZW5kUG9zdFJlcXVlc3RBc3luYzxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IE5ldHdvcmtSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8TmV0d29ya1Jlc3BvbnNlPFQ+PjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFN0dWJiZWROZXR3b3JrTW9kdWxlOiBJTmV0d29ya01vZHVsZSA9IHtcclxuICAgIHNlbmRHZXRSZXF1ZXN0QXN5bmM6ICgpID0+IHtcclxuICAgICAgICBjb25zdCBub3RJbXBsRXJyID0gXCJOZXR3b3JrIGludGVyZmFjZSAtIHNlbmRHZXRSZXF1ZXN0QXN5bmMoKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHRoZSBOZXR3b3JrIGludGVyZmFjZS5cIjtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoQXV0aEVycm9yLmNyZWF0ZVVuZXhwZWN0ZWRFcnJvcihub3RJbXBsRXJyKSk7XHJcbiAgICB9LFxyXG4gICAgc2VuZFBvc3RSZXF1ZXN0QXN5bmM6ICgpID0+IHtcclxuICAgICAgICBjb25zdCBub3RJbXBsRXJyID0gXCJOZXR3b3JrIGludGVyZmFjZSAtIHNlbmRQb3N0UmVxdWVzdEFzeW5jKCkgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIGZvciB0aGUgTmV0d29yayBpbnRlcmZhY2UuXCI7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KEF1dGhFcnJvci5jcmVhdGVVbmV4cGVjdGVkRXJyb3Iobm90SW1wbEVycikpO1xyXG4gICAgfVxyXG59O1xyXG4iLCIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IFNFUlZFUl9URUxFTV9DT05TVEFOVFMsIFNlcGFyYXRvcnMsIENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi91dGlscy9Db25zdGFudHNcIjtcclxuaW1wb3J0IHsgQ2FjaGVNYW5hZ2VyIH0gZnJvbSBcIi4uLy4uL2NhY2hlL0NhY2hlTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBBdXRoRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3IvQXV0aEVycm9yXCI7XHJcbmltcG9ydCB7IFNlcnZlclRlbGVtZXRyeVJlcXVlc3QgfSBmcm9tIFwiLi9TZXJ2ZXJUZWxlbWV0cnlSZXF1ZXN0XCI7XHJcbmltcG9ydCB7IFNlcnZlclRlbGVtZXRyeUVudGl0eSB9IGZyb20gXCIuLi8uLi9jYWNoZS9lbnRpdGllcy9TZXJ2ZXJUZWxlbWV0cnlFbnRpdHlcIjtcclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvU3RyaW5nVXRpbHNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBTZXJ2ZXJUZWxlbWV0cnlNYW5hZ2VyIHtcclxuICAgIHByaXZhdGUgY2FjaGVNYW5hZ2VyOiBDYWNoZU1hbmFnZXI7XHJcbiAgICBwcml2YXRlIGFwaUlkOiBudW1iZXI7XHJcbiAgICBwcml2YXRlIGNvcnJlbGF0aW9uSWQ6IHN0cmluZztcclxuICAgIHByaXZhdGUgZm9yY2VSZWZyZXNoOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSB0ZWxlbWV0cnlDYWNoZUtleTogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSB3cmFwcGVyU0tVOiBTdHJpbmc7XHJcbiAgICBwcml2YXRlIHdyYXBwZXJWZXI6IFN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcih0ZWxlbWV0cnlSZXF1ZXN0OiBTZXJ2ZXJUZWxlbWV0cnlSZXF1ZXN0LCBjYWNoZU1hbmFnZXI6IENhY2hlTWFuYWdlcikge1xyXG4gICAgICAgIHRoaXMuY2FjaGVNYW5hZ2VyID0gY2FjaGVNYW5hZ2VyO1xyXG4gICAgICAgIHRoaXMuYXBpSWQgPSB0ZWxlbWV0cnlSZXF1ZXN0LmFwaUlkO1xyXG4gICAgICAgIHRoaXMuY29ycmVsYXRpb25JZCA9IHRlbGVtZXRyeVJlcXVlc3QuY29ycmVsYXRpb25JZDtcclxuICAgICAgICB0aGlzLmZvcmNlUmVmcmVzaCA9IHRlbGVtZXRyeVJlcXVlc3QuZm9yY2VSZWZyZXNoIHx8IGZhbHNlO1xyXG4gICAgICAgIHRoaXMud3JhcHBlclNLVSA9IHRlbGVtZXRyeVJlcXVlc3Qud3JhcHBlclNLVSB8fCBDb25zdGFudHMuRU1QVFlfU1RSSU5HO1xyXG4gICAgICAgIHRoaXMud3JhcHBlclZlciA9IHRlbGVtZXRyeVJlcXVlc3Qud3JhcHBlclZlciB8fCBDb25zdGFudHMuRU1QVFlfU1RSSU5HO1xyXG5cclxuICAgICAgICB0aGlzLnRlbGVtZXRyeUNhY2hlS2V5ID0gU0VSVkVSX1RFTEVNX0NPTlNUQU5UUy5DQUNIRV9LRVkgKyBTZXBhcmF0b3JzLkNBQ0hFX0tFWV9TRVBBUkFUT1IgKyB0ZWxlbWV0cnlSZXF1ZXN0LmNsaWVudElkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQVBJIHRvIGFkZCBNU0VSIFRlbGVtZXRyeSB0byByZXF1ZXN0XHJcbiAgICAgKi9cclxuICAgIGdlbmVyYXRlQ3VycmVudFJlcXVlc3RIZWFkZXJWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGZvcmNlUmVmcmVzaEludCA9IHRoaXMuZm9yY2VSZWZyZXNoID8gMSA6IDA7XHJcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IGAke3RoaXMuYXBpSWR9JHtTRVJWRVJfVEVMRU1fQ09OU1RBTlRTLlZBTFVFX1NFUEFSQVRPUn0ke2ZvcmNlUmVmcmVzaEludH1gO1xyXG4gICAgICAgIGNvbnN0IHBsYXRmb3JtRmllbGRzID0gW3RoaXMud3JhcHBlclNLVSwgdGhpcy53cmFwcGVyVmVyXS5qb2luKFNFUlZFUl9URUxFTV9DT05TVEFOVFMuVkFMVUVfU0VQQVJBVE9SKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIFtTRVJWRVJfVEVMRU1fQ09OU1RBTlRTLlNDSEVNQV9WRVJTSU9OLCByZXF1ZXN0LCBwbGF0Zm9ybUZpZWxkc10uam9pbihTRVJWRVJfVEVMRU1fQ09OU1RBTlRTLkNBVEVHT1JZX1NFUEFSQVRPUik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBUEkgdG8gYWRkIE1TRVIgVGVsZW1ldHJ5IGZvciB0aGUgbGFzdCBmYWlsZWQgcmVxdWVzdFxyXG4gICAgICovXHJcbiAgICBnZW5lcmF0ZUxhc3RSZXF1ZXN0SGVhZGVyVmFsdWUoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBsYXN0UmVxdWVzdHMgPSB0aGlzLmdldExhc3RSZXF1ZXN0cygpO1xyXG5cclxuICAgICAgICBjb25zdCBtYXhFcnJvcnMgPSBTZXJ2ZXJUZWxlbWV0cnlNYW5hZ2VyLm1heEVycm9yc1RvU2VuZChsYXN0UmVxdWVzdHMpO1xyXG4gICAgICAgIGNvbnN0IGZhaWxlZFJlcXVlc3RzID0gbGFzdFJlcXVlc3RzLmZhaWxlZFJlcXVlc3RzLnNsaWNlKDAsIDIqbWF4RXJyb3JzKS5qb2luKFNFUlZFUl9URUxFTV9DT05TVEFOVFMuVkFMVUVfU0VQQVJBVE9SKTtcclxuICAgICAgICBjb25zdCBlcnJvcnMgPSBsYXN0UmVxdWVzdHMuZXJyb3JzLnNsaWNlKDAsIG1heEVycm9ycykuam9pbihTRVJWRVJfVEVMRU1fQ09OU1RBTlRTLlZBTFVFX1NFUEFSQVRPUik7XHJcbiAgICAgICAgY29uc3QgZXJyb3JDb3VudCA9IGxhc3RSZXF1ZXN0cy5lcnJvcnMubGVuZ3RoO1xyXG5cclxuICAgICAgICAvLyBJbmRpY2F0ZSB3aGV0aGVyIHRoaXMgaGVhZGVyIGNvbnRhaW5zIGFsbCBkYXRhIG9yIHBhcnRpYWwgZGF0YVxyXG4gICAgICAgIGNvbnN0IG92ZXJmbG93ID0gbWF4RXJyb3JzIDwgZXJyb3JDb3VudCA/IFNFUlZFUl9URUxFTV9DT05TVEFOVFMuT1ZFUkZMT1dfVFJVRSA6IFNFUlZFUl9URUxFTV9DT05TVEFOVFMuT1ZFUkZMT1dfRkFMU0U7XHJcbiAgICAgICAgY29uc3QgcGxhdGZvcm1GaWVsZHMgPSBbZXJyb3JDb3VudCwgb3ZlcmZsb3ddLmpvaW4oU0VSVkVSX1RFTEVNX0NPTlNUQU5UUy5WQUxVRV9TRVBBUkFUT1IpO1xyXG5cclxuICAgICAgICByZXR1cm4gW1NFUlZFUl9URUxFTV9DT05TVEFOVFMuU0NIRU1BX1ZFUlNJT04sIGxhc3RSZXF1ZXN0cy5jYWNoZUhpdHMsIGZhaWxlZFJlcXVlc3RzLCBlcnJvcnMsIHBsYXRmb3JtRmllbGRzXS5qb2luKFNFUlZFUl9URUxFTV9DT05TVEFOVFMuQ0FURUdPUllfU0VQQVJBVE9SKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFQSSB0byBjYWNoZSB0b2tlbiBmYWlsdXJlcyBmb3IgTVNFUiBkYXRhIGNhcHR1cmVcclxuICAgICAqIEBwYXJhbSBlcnJvclxyXG4gICAgICovXHJcbiAgICBjYWNoZUZhaWxlZFJlcXVlc3QoZXJyb3I6IEF1dGhFcnJvcik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGxhc3RSZXF1ZXN0cyA9IHRoaXMuZ2V0TGFzdFJlcXVlc3RzKCk7XHJcbiAgICAgICAgbGFzdFJlcXVlc3RzLmZhaWxlZFJlcXVlc3RzLnB1c2godGhpcy5hcGlJZCwgdGhpcy5jb3JyZWxhdGlvbklkKTtcclxuXHJcbiAgICAgICAgaWYgKCFTdHJpbmdVdGlscy5pc0VtcHR5KGVycm9yLnN1YkVycm9yKSkge1xyXG4gICAgICAgICAgICBsYXN0UmVxdWVzdHMuZXJyb3JzLnB1c2goZXJyb3Iuc3ViRXJyb3IpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIVN0cmluZ1V0aWxzLmlzRW1wdHkoZXJyb3IuZXJyb3JDb2RlKSkge1xyXG4gICAgICAgICAgICBsYXN0UmVxdWVzdHMuZXJyb3JzLnB1c2goZXJyb3IuZXJyb3JDb2RlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKCEhZXJyb3IgJiYgZXJyb3IudG9TdHJpbmcoKSkge1xyXG4gICAgICAgICAgICBsYXN0UmVxdWVzdHMuZXJyb3JzLnB1c2goZXJyb3IudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGFzdFJlcXVlc3RzLmVycm9ycy5wdXNoKFNFUlZFUl9URUxFTV9DT05TVEFOVFMuVU5LTk9XTl9FUlJPUik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNhY2hlTWFuYWdlci5zZXRTZXJ2ZXJUZWxlbWV0cnkodGhpcy50ZWxlbWV0cnlDYWNoZUtleSwgbGFzdFJlcXVlc3RzKTtcclxuXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIHNlcnZlciB0ZWxlbWV0cnkgY2FjaGUgZW50cnkgYnkgaW5jcmVtZW50aW5nIGNhY2hlIGhpdCBjb3VudGVyXHJcbiAgICAgKi9cclxuICAgIGluY3JlbWVudENhY2hlSGl0cygpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IGxhc3RSZXF1ZXN0cyA9IHRoaXMuZ2V0TGFzdFJlcXVlc3RzKCk7XHJcbiAgICAgICAgbGFzdFJlcXVlc3RzLmNhY2hlSGl0cyArPSAxO1xyXG5cclxuICAgICAgICB0aGlzLmNhY2hlTWFuYWdlci5zZXRTZXJ2ZXJUZWxlbWV0cnkodGhpcy50ZWxlbWV0cnlDYWNoZUtleSwgbGFzdFJlcXVlc3RzKTtcclxuICAgICAgICByZXR1cm4gbGFzdFJlcXVlc3RzLmNhY2hlSGl0cztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCB0aGUgc2VydmVyIHRlbGVtZXRyeSBlbnRpdHkgZnJvbSBjYWNoZSBvciBpbml0aWFsaXplIGEgbmV3IG9uZVxyXG4gICAgICovXHJcbiAgICBnZXRMYXN0UmVxdWVzdHMoKTogU2VydmVyVGVsZW1ldHJ5RW50aXR5IHtcclxuICAgICAgICBjb25zdCBpbml0aWFsVmFsdWU6IFNlcnZlclRlbGVtZXRyeUVudGl0eSA9IG5ldyBTZXJ2ZXJUZWxlbWV0cnlFbnRpdHkoKTtcclxuICAgICAgICBjb25zdCBsYXN0UmVxdWVzdHMgPSB0aGlzLmNhY2hlTWFuYWdlci5nZXRTZXJ2ZXJUZWxlbWV0cnkodGhpcy50ZWxlbWV0cnlDYWNoZUtleSkgYXMgU2VydmVyVGVsZW1ldHJ5RW50aXR5O1xyXG5cclxuICAgICAgICByZXR1cm4gbGFzdFJlcXVlc3RzIHx8IGluaXRpYWxWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSBzZXJ2ZXIgdGVsZW1ldHJ5IGNhY2hlIGVudHJ5XHJcbiAgICAgKi9cclxuICAgIGNsZWFyVGVsZW1ldHJ5Q2FjaGUoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbGFzdFJlcXVlc3RzID0gdGhpcy5nZXRMYXN0UmVxdWVzdHMoKTtcclxuICAgICAgICBjb25zdCBudW1FcnJvcnNGbHVzaGVkID0gU2VydmVyVGVsZW1ldHJ5TWFuYWdlci5tYXhFcnJvcnNUb1NlbmQobGFzdFJlcXVlc3RzKTtcclxuICAgICAgICBjb25zdCBlcnJvckNvdW50ID0gbGFzdFJlcXVlc3RzLmVycm9ycy5sZW5ndGg7XHJcbiAgICAgICAgaWYgKG51bUVycm9yc0ZsdXNoZWQgPT09IGVycm9yQ291bnQpIHtcclxuICAgICAgICAgICAgLy8gQWxsIGVycm9ycyB3ZXJlIHNlbnQgb24gbGFzdCByZXF1ZXN0LCBjbGVhciBUZWxlbWV0cnkgY2FjaGVcclxuICAgICAgICAgICAgdGhpcy5jYWNoZU1hbmFnZXIucmVtb3ZlSXRlbSh0aGlzLnRlbGVtZXRyeUNhY2hlS2V5KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBQYXJ0aWFsIGRhdGEgd2FzIGZsdXNoZWQgdG8gc2VydmVyLCBjb25zdHJ1Y3QgYSBuZXcgdGVsZW1ldHJ5IGNhY2hlIGl0ZW0gd2l0aCBlcnJvcnMgdGhhdCB3ZXJlIG5vdCBmbHVzaGVkXHJcbiAgICAgICAgICAgIGNvbnN0IHNlcnZlclRlbGVtRW50aXR5ID0gbmV3IFNlcnZlclRlbGVtZXRyeUVudGl0eSgpO1xyXG4gICAgICAgICAgICBzZXJ2ZXJUZWxlbUVudGl0eS5mYWlsZWRSZXF1ZXN0cyA9IGxhc3RSZXF1ZXN0cy5mYWlsZWRSZXF1ZXN0cy5zbGljZShudW1FcnJvcnNGbHVzaGVkKjIpOyAvLyBmYWlsZWRSZXF1ZXN0cyBjb250YWlucyAyIGl0ZW1zIGZvciBlYWNoIGVycm9yXHJcbiAgICAgICAgICAgIHNlcnZlclRlbGVtRW50aXR5LmVycm9ycyA9IGxhc3RSZXF1ZXN0cy5lcnJvcnMuc2xpY2UobnVtRXJyb3JzRmx1c2hlZCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNhY2hlTWFuYWdlci5zZXRTZXJ2ZXJUZWxlbWV0cnkodGhpcy50ZWxlbWV0cnlDYWNoZUtleSwgc2VydmVyVGVsZW1FbnRpdHkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGVycm9ycyB0aGF0IGNhbiBiZSBmbHVzaGVkIHRvIHRoZSBzZXJ2ZXIgaW4gdGhlIG5leHQgbmV0d29yayByZXF1ZXN0XHJcbiAgICAgKiBAcGFyYW0gc2VydmVyVGVsZW1ldHJ5RW50aXR5XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBtYXhFcnJvcnNUb1NlbmQoc2VydmVyVGVsZW1ldHJ5RW50aXR5OiBTZXJ2ZXJUZWxlbWV0cnlFbnRpdHkpOiBudW1iZXIge1xyXG4gICAgICAgIGxldCBpO1xyXG4gICAgICAgIGxldCBtYXhFcnJvcnMgPSAwO1xyXG4gICAgICAgIGxldCBkYXRhU2l6ZSA9IDA7XHJcbiAgICAgICAgY29uc3QgZXJyb3JDb3VudCA9IHNlcnZlclRlbGVtZXRyeUVudGl0eS5lcnJvcnMubGVuZ3RoO1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBlcnJvckNvdW50OyBpKyspIHtcclxuICAgICAgICAgICAgLy8gZmFpbGVkUmVxdWVzdHMgcGFyYW1ldGVyIGNvbnRhaW5zIHBhaXJzIG9mIGFwaUlkIGFuZCBjb3JyZWxhdGlvbklkLCBtdWx0aXBseSBpbmRleCBieSAyIHRvIHByZXNlcnZlIHBhaXJzXHJcbiAgICAgICAgICAgIGNvbnN0IGFwaUlkID0gc2VydmVyVGVsZW1ldHJ5RW50aXR5LmZhaWxlZFJlcXVlc3RzWzIqaV0gfHwgQ29uc3RhbnRzLkVNUFRZX1NUUklORztcclxuICAgICAgICAgICAgY29uc3QgY29ycmVsYXRpb25JZCA9IHNlcnZlclRlbGVtZXRyeUVudGl0eS5mYWlsZWRSZXF1ZXN0c1syKmkgKyAxXSB8fCBDb25zdGFudHMuRU1QVFlfU1RSSU5HO1xyXG4gICAgICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBzZXJ2ZXJUZWxlbWV0cnlFbnRpdHkuZXJyb3JzW2ldIHx8IENvbnN0YW50cy5FTVBUWV9TVFJJTkc7XHJcblxyXG4gICAgICAgICAgICAvLyBDb3VudCBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IHdvdWxkIGJlIGFkZGVkIHRvIGhlYWRlciwgZWFjaCBjaGFyYWN0ZXIgaXMgMSBieXRlLiBBZGQgMyBhdCB0aGUgZW5kIHRvIGFjY291bnQgZm9yIHNlcGFyYXRvcnNcclxuICAgICAgICAgICAgZGF0YVNpemUgKz0gYXBpSWQudG9TdHJpbmcoKS5sZW5ndGggKyBjb3JyZWxhdGlvbklkLnRvU3RyaW5nKCkubGVuZ3RoICsgZXJyb3JDb2RlLmxlbmd0aCArIDM7XHJcblxyXG4gICAgICAgICAgICBpZiAoZGF0YVNpemUgPCBTRVJWRVJfVEVMRU1fQ09OU1RBTlRTLk1BWF9IRUFERVJfQllURVMpIHtcclxuICAgICAgICAgICAgICAgIC8vIEFkZGluZyB0aGlzIGVudHJ5IHRvIHRoZSBoZWFkZXIgd291bGQgc3RpbGwga2VlcCBoZWFkZXIgc2l6ZSBiZWxvdyB0aGUgbGltaXRcclxuICAgICAgICAgICAgICAgIG1heEVycm9ycyArPSAxO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtYXhFcnJvcnM7XHJcbiAgICB9XHJcbn1cclxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7OztJQUthLFNBQVMsR0FBRztJQUNyQixZQUFZLEVBQUUsU0FBUztJQUN2QixHQUFHLEVBQUUsZ0JBQWdCOztJQUVyQixZQUFZLEVBQUUsTUFBTTs7SUFFcEIsaUJBQWlCLEVBQUUsMkNBQTJDO0lBQzlELHNCQUFzQixFQUFFLDJCQUEyQjs7SUFFbkQsSUFBSSxFQUFFLE1BQU07O0lBRVosNEJBQTRCLEVBQUUscUdBQXFHOztJQUVuSSxjQUFjLEVBQUUsR0FBRzs7SUFFbkIsVUFBVSxFQUFFLFlBQVk7O0lBRXhCLE1BQU0sRUFBRSxRQUFROztJQUVoQixhQUFhLEVBQUUsc0NBQXNDOztJQUVyRCxZQUFZLEVBQUUsUUFBUTtJQUN0QixhQUFhLEVBQUUsU0FBUztJQUN4QixvQkFBb0IsRUFBRSxnQkFBZ0I7SUFDdEMsV0FBVyxFQUFFLE9BQU87O0lBRXBCLGtCQUFrQixFQUFFLE1BQU07SUFDMUIsZUFBZSxFQUFFLG9CQUFvQjtJQUNyQyxhQUFhLEVBQUUsZUFBZTtJQUM5QixzQkFBc0IsRUFBRSxVQUFVO0lBQ2xDLDBCQUEwQixFQUFFLE1BQU07SUFDbEMscUJBQXFCLEVBQUUsaURBQWlEO0lBQ3hFLHFCQUFxQixFQUFFLHVCQUF1QjtJQUM5QyxXQUFXLEVBQUUsYUFBYTtJQUMxQixZQUFZLEVBQUUsRUFBRTtJQUNoQixhQUFhLEVBQUUsR0FBRztFQUNwQjtJQUVXLG1CQUFtQixHQUFHO0lBQy9CLFNBQVMsQ0FBQyxZQUFZO0lBQ3RCLFNBQVMsQ0FBQyxhQUFhO0lBQ3ZCLFNBQVMsQ0FBQyxvQkFBb0I7RUFDaEM7QUFFSyxJQUFNLFdBQVcsa0JBQ2pCLG1CQUFtQjtJQUN0QixTQUFTLENBQUMsV0FBVztFQUN4QixDQUFDO0FBRUY7OztBQUdBLElBQVksV0FPWDtBQVBELFdBQVksV0FBVztJQUNuQiw0Q0FBNkIsQ0FBQTtJQUM3QixpRUFBa0QsQ0FBQTtJQUNsRCw4REFBK0MsQ0FBQTtJQUMvQywwQ0FBMkIsQ0FBQTtJQUMzQiwwREFBMkMsQ0FBQTtJQUMzQyw4REFBK0MsQ0FBQTtBQUNuRCxDQUFDLEVBUFcsV0FBVyxLQUFYLFdBQVcsUUFPdEI7QUFFRDs7O0lBR1k7QUFBWixXQUFZLG1CQUFtQjtJQUMzQiwyQ0FBb0IsQ0FBQTtJQUNwQixrREFBMkIsQ0FBQTtJQUMzQixxREFBOEIsQ0FBQTtJQUM5QixzQ0FBZSxDQUFBO0lBQ2YsdURBQWdDLENBQUE7QUFDcEMsQ0FBQyxFQU5XLG1CQUFtQixLQUFuQixtQkFBbUIsUUFNOUI7QUFFRDs7O0FBR0EsSUFBWSxxQkFJWDtBQUpELFdBQVkscUJBQXFCO0lBQzdCLDBDQUFpQixDQUFBO0lBQ2pCLHdEQUErQixDQUFBO0lBQy9CLGdEQUF1QixDQUFBO0FBQzNCLENBQUMsRUFKVyxxQkFBcUIsS0FBckIscUJBQXFCLFFBSWhDO0FBRUQ7OztBQUdBLElBQVksa0JBd0NYO0FBeENELFdBQVksa0JBQWtCO0lBQzFCLDZDQUF1QixDQUFBO0lBQ3ZCLG1EQUE2QixDQUFBO0lBQzdCLHFEQUErQixDQUFBO0lBQy9CLHFEQUErQixDQUFBO0lBQy9CLCtDQUF5QixDQUFBO0lBQ3pCLHVDQUFpQixDQUFBO0lBQ2pCLHFDQUFlLENBQUE7SUFDZixxQ0FBZSxDQUFBO0lBQ2YsNkRBQXVDLENBQUE7SUFDdkMsbURBQTZCLENBQUE7SUFDN0IsMkNBQXFCLENBQUE7SUFDckIscURBQStCLENBQUE7SUFDL0IsK0NBQXlCLENBQUE7SUFDekIscUNBQWUsQ0FBQTtJQUNmLHFDQUFlLENBQUE7SUFDZix1Q0FBaUIsQ0FBQTtJQUNqQixxREFBK0IsQ0FBQTtJQUMvQixpREFBMkIsQ0FBQTtJQUMzQixtQ0FBYSxDQUFBO0lBQ2IsdURBQWlDLENBQUE7SUFDakMscUVBQStDLENBQUE7SUFDL0MscURBQStCLENBQUE7SUFDL0IsNkRBQXVDLENBQUE7SUFDdkMsbURBQTZCLENBQUE7SUFDN0IsbURBQTZCLENBQUE7SUFDN0IsaURBQTJCLENBQUE7SUFDM0IsbURBQTZCLENBQUE7SUFDN0Isa0VBQTRDLENBQUE7SUFDNUMscURBQThCLENBQUE7SUFDOUIsaURBQTJCLENBQUE7SUFDM0IscURBQStCLENBQUE7SUFDL0IsMkRBQXFDLENBQUE7SUFDckMscUVBQStDLENBQUE7SUFDL0MsK0NBQXlCLENBQUE7SUFDekIseUNBQW1CLENBQUE7SUFDbkIsaURBQTJCLENBQUE7SUFDM0IsaUVBQTJDLENBQUE7SUFDM0MsbURBQTZCLENBQUE7SUFDN0IsbUNBQWEsQ0FBQTtBQUNqQixDQUFDLEVBeENXLGtCQUFrQixLQUFsQixrQkFBa0IsUUF3QzdCO0FBRUQ7OztBQUdBLElBQVksaUJBR1g7QUFIRCxXQUFZLGlCQUFpQjtJQUN6QixrREFBNkIsQ0FBQTtJQUM3QixzQ0FBaUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUc1QjtBQUVEOzs7OztJQUthLFdBQVcsR0FBRztJQUN2QixLQUFLLEVBQUUsT0FBTztJQUNkLGNBQWMsRUFBRSxnQkFBZ0I7SUFDaEMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsSUFBSSxFQUFFLE1BQU07RUFDZDtBQUVGOzs7QUFHQSxJQUFZLFFBVVg7QUFWRCxXQUFZLFFBQVE7SUFDaEIsK0JBQW1CLENBQUE7SUFDbkIsdUJBQVcsQ0FBQTtJQUNYLHFDQUF5QixDQUFBO0lBQ3pCLGlDQUFxQixDQUFBO0lBQ3JCLHVDQUEyQixDQUFBO0lBQzNCLDJDQUErQixDQUFBO0lBQy9CLG1DQUF1QixDQUFBO0lBQ3ZCLDRDQUFnQyxDQUFBO0lBQ2hDLG9EQUF3QyxDQUFBO0FBQzVDLENBQUMsRUFWVyxRQUFRLEtBQVIsUUFBUSxRQVVuQjtBQUVEOzs7QUFHTyxJQUFNLG1CQUFtQixHQUFHO0lBQy9CLFFBQVEsQ0FBQyxHQUFHO0lBQ1osUUFBUSxDQUFDLFVBQVU7Q0FDdEIsQ0FBQztBQUVGOzs7QUFHTyxJQUFNLHlCQUF5QixHQUFHO0lBQ3JDLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLE1BQU07Q0FDZixDQUFDO0FBWUY7OztJQUdZO0FBQVosV0FBWSxZQUFZO0lBQ3BCLCtCQUFlLENBQUE7SUFDZixxQ0FBcUIsQ0FBQTtJQUNyQix1Q0FBdUIsQ0FBQTtBQUMzQixDQUFDLEVBSlcsWUFBWSxLQUFaLFlBQVksUUFJdkI7QUFFRDs7O0FBR0EsSUFBWSxTQVFYO0FBUkQsV0FBWSxTQUFTO0lBQ2pCLHdDQUEyQixDQUFBO0lBQzNCLDREQUErQyxDQUFBO0lBQy9DLDREQUErQyxDQUFBO0lBQy9DLHVEQUEwQyxDQUFBO0lBQzFDLGtEQUFxQyxDQUFBO0lBQ3JDLDhDQUFpQyxDQUFBO0lBQ2pDLHVFQUEwRCxDQUFBO0FBQzlELENBQUMsRUFSVyxTQUFTLEtBQVQsU0FBUyxRQVFwQjtBQUVEOzs7SUFHWTtBQUFaLFdBQVksZ0JBQWdCO0lBQ3hCLGdEQUE0QixDQUFBO0lBQzVCLDhDQUEwQixDQUFBO0lBQzFCLDhDQUEwQixDQUFBO0lBQzFCLG9EQUFnQyxDQUFBO0FBQ3BDLENBQUMsRUFMVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSzNCO0FBRUQ7OztBQUdBLElBQVksVUFHWDtBQUhELFdBQVksVUFBVTtJQUNsQix1Q0FBeUIsQ0FBQTtJQUN6Qix5Q0FBMkIsQ0FBQTtBQUMvQixDQUFDLEVBSFcsVUFBVSxLQUFWLFVBQVUsUUFHckI7QUFFRDs7O0lBR1k7QUFBWixXQUFZLGNBQWM7SUFDdEIsc0NBQW9CLENBQUE7SUFDcEIsOENBQTRCLENBQUE7SUFDNUIsZ0RBQThCLENBQUE7QUFDbEMsQ0FBQyxFQUpXLGNBQWMsS0FBZCxjQUFjLFFBSXpCO0FBRUQ7OztJQUdZO0FBQVosV0FBWSxlQUFlO0lBQ3ZCLHNDQUFtQixDQUFBO0lBQ25CLDRDQUF5QixDQUFBO0lBQ3pCLHVDQUFvQixDQUFBO0lBQ3BCLCtDQUE0QixDQUFBO0lBQzVCLGlEQUE4QixDQUFBO0lBQzlCLCtDQUE0QixDQUFBO0lBQzVCLDBDQUF1QixDQUFBO0lBQ3ZCLDBDQUF1QixDQUFBO0lBQ3ZCLDBDQUF1QixDQUFBO0lBQ3ZCLDRDQUF5QixDQUFBO0FBQzdCLENBQUMsRUFYVyxlQUFlLEtBQWYsZUFBZSxRQVcxQjtBQUVEOzs7SUFHWTtBQUFaLFdBQVksU0FBUztJQUNqQiw0Q0FBVyxDQUFBO0lBQ1gsMENBQVUsQ0FBQTtJQUNWLDhDQUFZLENBQUE7SUFDWixrREFBYyxDQUFBO0lBQ2QsNERBQW1CLENBQUE7SUFDbkIsOERBQW9CLENBQUE7SUFDcEIsb0RBQWUsQ0FBQTtJQUNmLDREQUFtQixDQUFBO0lBQ25CLHNEQUFnQixDQUFBO0FBQ3BCLENBQUMsRUFWVyxTQUFTLEtBQVQsU0FBUyxRQVVwQjtBQUVEOzs7QUFHTyxJQUFNLFlBQVksR0FBRyxhQUFhLENBQUM7QUFDbkMsSUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDO0FBQ2pDLElBQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQztBQUUxQixJQUFNLDRCQUE0QixHQUFHO0lBQ3hDLFNBQVMsRUFBRSxvQkFBb0I7SUFDL0Isb0JBQW9CLEVBQUUsSUFBSSxHQUFHLEVBQUU7Q0FDbEMsQ0FBQztBQUVGLElBQVksdUJBSVg7QUFKRCxXQUFZLHVCQUF1QjtJQUMvQiw0Q0FBaUIsQ0FBQTtJQUNqQiwwQ0FBZSxDQUFBO0lBQ2YsOENBQW1CLENBQUE7QUFDdkIsQ0FBQyxFQUpXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFJbEM7QUFFTSxJQUFNLHNCQUFzQixHQUFHO0lBQ2xDLGNBQWMsRUFBRSxDQUFDO0lBQ2pCLGdCQUFnQixFQUFFLElBQUk7SUFDdEIsU0FBUyxFQUFFLGtCQUFrQjtJQUM3QixrQkFBa0IsRUFBRSxHQUFHO0lBQ3ZCLGVBQWUsRUFBRSxHQUFHO0lBQ3BCLGFBQWEsRUFBRSxHQUFHO0lBQ2xCLGNBQWMsRUFBRSxHQUFHO0lBQ25CLGFBQWEsRUFBRSxlQUFlO0NBQ2pDLENBQUM7QUFFRjs7O0lBR1k7QUFBWixXQUFZLG9CQUFvQjtJQUM1QixtQ0FBVyxDQUFBO0lBQ1gseUNBQWlCLENBQUE7QUFDckIsQ0FBQyxFQUhXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFHL0I7QUFFRDs7O0FBR08sSUFBTSxtQkFBbUIsR0FBRzs7SUFFL0IsNkJBQTZCLEVBQUUsRUFBRTs7SUFFakMsaUNBQWlDLEVBQUUsSUFBSTs7SUFFdkMsaUJBQWlCLEVBQUUsWUFBWTtDQUNsQyxDQUFDO0FBRUssSUFBTSxNQUFNLEdBQUc7SUFDbEIsbUJBQW1CLEVBQUUsZUFBZTtJQUNwQyxxQkFBcUIsRUFBRSxpQkFBaUI7Q0FDM0MsQ0FBQztBQUVGOzs7QUFHQSxJQUFZLHNCQUdYO0FBSEQsV0FBWSxzQkFBc0I7SUFDOUIsK0NBQXFCLENBQUE7SUFDckIsK0NBQXFCLENBQUE7QUFDekIsQ0FBQyxFQUhXLHNCQUFzQixLQUF0QixzQkFBc0I7O0FDelVsQzs7OztBQU9BOzs7QUFHQSxJQUFhLGdCQUFnQixHQUFHO0lBQzVCLGVBQWUsRUFBRTtRQUNiLElBQUksRUFBRSxrQkFBa0I7UUFDeEIsSUFBSSxFQUFFLHFDQUFxQztLQUM5QztDQUNKLENBQUM7QUFFRjs7O0FBR0E7SUFBK0IsNkJBQUs7SUFpQmhDLG1CQUFZLFNBQWtCLEVBQUUsWUFBcUIsRUFBRSxRQUFpQjtRQUF4RSxpQkFTQztRQVJHLElBQU0sV0FBVyxHQUFHLFlBQVksR0FBTSxTQUFTLFVBQUssWUFBYyxHQUFHLFNBQVMsQ0FBQztRQUMvRSxRQUFBLGtCQUFNLFdBQVcsQ0FBQyxTQUFDO1FBQ25CLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSSxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVqRCxLQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDO1FBQ3JELEtBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUN2QyxLQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDL0IsS0FBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7O0tBQzNCOzs7OztJQU1NLCtCQUFxQixHQUE1QixVQUE2QixPQUFlO1FBQ3hDLE9BQU8sSUFBSSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUksRUFBSyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxVQUFLLE9BQVMsQ0FBQyxDQUFDO0tBQ3ZIO0lBQ0wsZ0JBQUM7QUFBRCxDQW5DQSxDQUErQixLQUFLOztBQ3BCcEM7Ozs7SUFxRGEsNkJBQTZCLEdBQVk7SUFDbEQsYUFBYSxFQUFFO1FBQ1gsSUFBTSxVQUFVLEdBQUcsNkRBQTZELENBQUM7UUFDakYsTUFBTSxTQUFTLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDckQ7SUFDRCxZQUFZLEVBQUU7UUFDVixJQUFNLFVBQVUsR0FBRyw0REFBNEQsQ0FBQztRQUNoRixNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUNyRDtJQUNELFlBQVksRUFBRTtRQUNWLElBQU0sVUFBVSxHQUFHLDREQUE0RCxDQUFDO1FBQ2hGLE1BQU0sU0FBUyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0ssaUJBQWlCLEVBQXZCOzs7O2dCQUNVLFVBQVUsR0FBRyxpRUFBaUUsQ0FBQztnQkFDckYsTUFBTSxTQUFTLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7OztLQUNyRDtJQUNLLHNCQUFzQixFQUE1Qjs7OztnQkFDVSxVQUFVLEdBQUcsc0VBQXNFLENBQUM7Z0JBQzFGLE1BQU0sU0FBUyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDOzs7S0FDckQ7SUFDSyxPQUFPLEVBQWI7Ozs7Z0JBQ1UsVUFBVSxHQUFHLHVEQUF1RCxDQUFDO2dCQUMzRSxNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQzs7O0tBQ3JEO0NBQ0o7O0FDOUVEOzs7O0FBUUE7OztBQUdBLElBQWEsc0JBQXNCLEdBQUc7SUFDbEMsdUJBQXVCLEVBQUU7UUFDckIsSUFBSSxFQUFFLDRCQUE0QjtRQUNsQyxJQUFJLEVBQUUsNkdBQTZHO0tBQ3RIO0lBQ0Qsb0JBQW9CLEVBQUU7UUFDbEIsSUFBSSxFQUFFLHlCQUF5QjtRQUMvQixJQUFJLEVBQUUsaUZBQWlGO0tBQzFGO0lBQ0QsaUJBQWlCLEVBQUU7UUFDZixJQUFJLEVBQUUscUJBQXFCO1FBQzNCLElBQUksRUFBRSw0RUFBNEU7S0FDckY7SUFDRCxnQkFBZ0IsRUFBRTtRQUNkLElBQUksRUFBRSxxQkFBcUI7UUFDM0IsSUFBSSxFQUFFLGtGQUFrRjtLQUMzRjtJQUNELHVCQUF1QixFQUFFO1FBQ3JCLElBQUksRUFBRSw0QkFBNEI7UUFDbEMsSUFBSSxFQUFFLHlFQUF5RTtLQUNsRjtJQUNELFlBQVksRUFBRTtRQUNWLElBQUksRUFBRSxlQUFlO1FBQ3JCLElBQUksRUFBRSw2RUFBNkU7S0FDdEY7SUFDRCw0QkFBNEIsRUFBRTtRQUMxQixJQUFJLEVBQUUscUJBQXFCO1FBQzNCLElBQUksRUFBRSw2SUFBNkk7S0FDdEo7SUFDRCxtQkFBbUIsRUFBRTtRQUNqQixJQUFJLEVBQUUsdUJBQXVCO1FBQzdCLElBQUksRUFBRSxxR0FBcUc7S0FDOUc7SUFDRCxrQkFBa0IsRUFBRTtRQUNoQixJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLElBQUksRUFBRSxvRkFBb0Y7S0FDN0Y7SUFDRCxpQkFBaUIsRUFBRTtRQUNmLElBQUksRUFBRSxlQUFlO1FBQ3JCLElBQUksRUFBRSwySUFBMkk7S0FDcEo7SUFDRCxrQkFBa0IsRUFBRTtRQUNoQixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLElBQUksRUFBRSwrRkFBK0Y7S0FDeEc7SUFDRCxrQkFBa0IsRUFBRTtRQUNoQixJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLElBQUksRUFBRSxpQkFBaUI7S0FDMUI7SUFDRCxrQkFBa0IsRUFBRTtRQUNoQixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLElBQUksRUFBRSxzRkFBc0Y7S0FDL0Y7SUFDRCxrQkFBa0IsRUFBRTtRQUNoQixJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLElBQUksRUFBRSxpQkFBaUI7S0FDMUI7SUFDRCxrQkFBa0IsRUFBRTtRQUNoQixJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLElBQUksRUFBRSxrTEFBa0w7S0FDM0w7SUFDRCxzQkFBc0IsRUFBRTtRQUNwQixJQUFJLEVBQUUsMEJBQTBCO1FBQ2hDLElBQUksRUFBRSxrRUFBa0U7WUFDcEUsbUZBQW1GO0tBQzFGO0lBQ0Qsd0JBQXdCLEVBQUU7UUFDdEIsSUFBSSxFQUFFLDRCQUE0QjtRQUNsQyxJQUFJLEVBQUUsMkhBQTJIO0tBQ3BJO0lBQ0QsMkJBQTJCLEVBQUU7UUFDekIsSUFBSSxFQUFFLCtCQUErQjtRQUNyQyxJQUFJLEVBQUUsa0lBQWtJO0tBQzNJO0lBQ0Qsd0JBQXdCLEVBQUU7UUFDdEIsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixJQUFJLEVBQUUsMkVBQTJFO0tBQ3BGO0lBQ0QscUJBQXFCLEVBQUU7UUFDbkIsSUFBSSxFQUFFLDJCQUEyQjtRQUNqQyxJQUFJLEVBQUUsNEZBQTRGO0tBQ3JHO0lBQ0QscUJBQXFCLEVBQUU7UUFDbkIsSUFBSSxFQUFFLDJCQUEyQjtRQUNqQyxJQUFJLEVBQUUsOEZBQThGO0tBQ3ZHO0lBQ0QsbUJBQW1CLEVBQUU7UUFDakIsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixJQUFJLEVBQUUsc0NBQXNDO0tBQy9DO0lBQ0QsdUJBQXVCLEVBQUU7UUFDckIsSUFBSSxFQUFFLHNCQUFzQjtRQUM1QixJQUFJLEVBQUUsMkNBQTJDO0tBQ3BEO0lBQ0QsMEJBQTBCLEVBQUU7UUFDeEIsSUFBSSxFQUFFLCtCQUErQjtRQUNyQyxJQUFJLEVBQUUsaUhBQWlIO0tBQzFIO0lBQ0QsaUJBQWlCLEVBQUU7UUFDZixJQUFJLEVBQUUscUJBQXFCO1FBQzNCLElBQUksRUFBRSx5QkFBeUI7S0FDbEM7SUFDRCx3QkFBd0IsRUFBRTtRQUN0QixJQUFJLEVBQUUsOEJBQThCO1FBQ3BDLElBQUksRUFBRSx5RkFBeUY7S0FDbEc7SUFDRCxrQkFBa0IsRUFBRTtRQUNoQixJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLElBQUksRUFBRSw0Q0FBNEM7S0FDckQ7SUFDRCx1QkFBdUIsRUFBRTtRQUNyQixJQUFJLEVBQUUsMkJBQTJCO1FBQ2pDLElBQUksRUFBRSwyREFBMkQ7S0FDcEU7SUFDRCxjQUFjLEVBQUU7UUFDWixJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLElBQUksRUFBRSwwQ0FBMEM7S0FDbkQ7SUFDRCxnQkFBZ0IsRUFBRTtRQUNkLElBQUksRUFBRSxxQ0FBcUM7UUFDM0MsSUFBSSxFQUFFLCtFQUErRTtLQUN4RjtJQUNELFdBQVcsRUFBRTtRQUNULElBQUksRUFBRSxrQkFBa0I7UUFDeEIsSUFBSSxFQUFFLDJFQUEyRTtLQUNwRjtJQUNELGdCQUFnQixFQUFFO1FBQ2QsSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixJQUFJLEVBQUUsb0JBQW9CO0tBQzdCO0lBQ0QscUJBQXFCLEVBQUU7UUFDbkIsSUFBSSxFQUFFLHlCQUF5QjtRQUMvQixJQUFJLEVBQUUsMEJBQTBCO0tBQ25DO0lBQ0Qsd0JBQXdCLEVBQUU7UUFDdEIsSUFBSSxFQUFFLDRCQUE0QjtRQUNsQyxJQUFJLEVBQUUsNkJBQTZCO0tBQ3RDO0lBQ0QsZ0JBQWdCLEVBQUU7UUFDZCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLElBQUksRUFBRSwwRkFBMEY7S0FDbkc7SUFDRCx1QkFBdUIsRUFBRTtRQUNyQixJQUFJLEVBQUUsMkJBQTJCO1FBQ2pDLElBQUksRUFBRSxnS0FBZ0s7S0FDeks7SUFDRCxvQkFBb0IsRUFBRTtRQUNsQixJQUFJLEVBQUUsd0JBQXdCO1FBQzlCLElBQUksRUFBRSxvT0FBb087S0FDN087SUFDRCxrQkFBa0IsRUFBRTtRQUNoQixJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLElBQUksRUFBRSxzREFBc0Q7S0FDL0Q7SUFDRCxtQkFBbUIsRUFBRTtRQUNqQixJQUFJLEVBQUUseUNBQXlDO1FBQy9DLElBQUksRUFBRSxpRUFBaUU7S0FDMUU7SUFDRCw2QkFBNkIsRUFBRTtRQUMzQixJQUFJLEVBQUUsaURBQWlEO1FBQ3ZELElBQUksRUFBRSxrRUFBa0U7S0FDM0U7Q0FDSixDQUFDO0FBRUY7OztBQUdBO0lBQXFDLG1DQUFTO0lBRTFDLHlCQUFZLFNBQWlCLEVBQUUsWUFBcUI7UUFBcEQsWUFDSSxrQkFBTSxTQUFTLEVBQUUsWUFBWSxDQUFDLFNBSWpDO1FBSEcsS0FBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztRQUU5QixNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUksRUFBRSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7O0tBQzFEOzs7OztJQU1NLDZDQUE2QixHQUFwQyxVQUFxQyxXQUFtQjtRQUNwRCxPQUFPLElBQUksZUFBZSxDQUFDLHNCQUFzQixDQUFDLHVCQUF1QixDQUFDLElBQUksRUFDdkUsc0JBQXNCLENBQUMsdUJBQXVCLENBQUMsSUFBSSw0QkFBdUIsV0FBYSxDQUFDLENBQUM7S0FDbkc7Ozs7O0lBTU0sMENBQTBCLEdBQWpDO1FBQ0ksT0FBTyxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQ3ZFLEtBQUcsc0JBQXNCLENBQUMsb0JBQW9CLENBQUMsSUFBTSxDQUFDLENBQUM7S0FDOUQ7Ozs7O0lBTU0sdUNBQXVCLEdBQTlCLFVBQStCLHFCQUE2QjtRQUN4RCxPQUFPLElBQUksZUFBZSxDQUFDLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDLElBQUksRUFDakUsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsSUFBSSw0QkFBdUIscUJBQXVCLENBQUMsQ0FBQztLQUN2Rzs7Ozs7SUFNTSwyQ0FBMkIsR0FBbEMsVUFBbUMscUJBQTZCO1FBQzVELE9BQU8sSUFBSSxlQUFlLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUNoRSxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLDBCQUFxQixxQkFBdUIsQ0FBQyxDQUFDO0tBQ3BHOzs7O0lBS00sc0RBQXNDLEdBQTdDLFVBQThDLFNBQWlCO1FBQzNELE9BQU8sSUFBSSxlQUFlLENBQUMsc0JBQXNCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUN2RSxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLGlCQUFZLFNBQVcsQ0FBQyxDQUFDO0tBQ3RGOzs7O0lBS00sa0NBQWtCLEdBQXpCLFVBQTBCLFFBQWdCLEVBQUUsU0FBaUI7UUFDekQsT0FBTyxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUM1RCxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsSUFBSSwrQkFBMEIsU0FBUywrQkFBMEIsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUcsQ0FBQyxDQUFDO0tBQ3pJOzs7O0lBS00sa0RBQWtDLEdBQXpDLFVBQTBDLFNBQWlCO1FBQ3ZELE9BQU8sSUFBSSxlQUFlLENBQUMsc0JBQXNCLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUM1RSxzQkFBc0IsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLCtDQUEwQyxTQUFXLENBQUMsQ0FBQztLQUN6SDs7Ozs7SUFNTSw4Q0FBOEIsR0FBckMsVUFBc0MsWUFBb0I7UUFDdEQsT0FBTyxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQ25FLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLElBQUksdUJBQWtCLFlBQWMsQ0FBQyxDQUFDO0tBQzNGOzs7OztJQU1NLHVDQUF1QixHQUE5QixVQUErQixZQUFvQixFQUFFLFdBQW9CO1FBQ3JFLE9BQU8sSUFBSSxlQUFlLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUNqRSxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLHdCQUFtQixZQUFZLG9CQUFlLFdBQWEsQ0FBQyxDQUFDO0tBQ3BIOzs7O0lBS00sd0NBQXdCLEdBQS9CO1FBQ0ksT0FBTyxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQ3JFLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZEOzs7OztJQU1NLHdDQUF3QixHQUEvQixVQUFnQyxZQUFvQjtRQUNoRCxPQUFPLElBQUksZUFBZSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLElBQUksRUFDbEUsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxXQUFNLFlBQWMsQ0FBQyxDQUFDO0tBQzlFOzs7O0lBS00sd0NBQXdCLEdBQS9CO1FBQ0ksT0FBTyxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQ3JFLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZEOzs7OztJQU1NLHdDQUF3QixHQUEvQixVQUFnQyxZQUFvQjtRQUNoRCxPQUFPLElBQUksZUFBZSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLElBQUksRUFDbEUsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxXQUFNLFlBQWMsQ0FBQyxDQUFDO0tBQzlFOzs7O0lBS00sd0NBQXdCLEdBQS9CO1FBQ0ksT0FBTyxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUg7Ozs7SUFLTSx3REFBd0MsR0FBL0M7UUFDSSxPQUFPLElBQUksZUFBZSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUFDLElBQUksRUFDdEUsc0JBQXNCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxNQUFHLENBQUMsQ0FBQztLQUNqRTs7OztJQUtNLDBEQUEwQyxHQUFqRDtRQUNJLE9BQU8sSUFBSSxlQUFlLENBQUMsc0JBQXNCLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUMzRSxzQkFBc0IsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM3RDs7OztJQUtNLDZEQUE2QyxHQUFwRDtRQUNJLE9BQU8sSUFBSSxlQUFlLENBQUMsc0JBQXNCLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUM5RSxzQkFBc0IsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNoRTs7OztJQUtNLG1EQUFtQyxHQUExQztRQUNJLE9BQU8sSUFBSSxlQUFlLENBQUMsc0JBQXNCLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLHNCQUFzQixDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzFJOzs7OztJQU1NLGdEQUFnQyxHQUF2QyxVQUF3QyxVQUFrQjtRQUN0RCxPQUFPLElBQUksZUFBZSxDQUFDLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBSyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLHNCQUFpQixVQUFZLENBQUMsQ0FBQztLQUNwSzs7Ozs7SUFNTSxrREFBa0MsR0FBekMsVUFBMEMsVUFBa0I7UUFDeEQsT0FBTyxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUssc0JBQXNCLENBQUMscUJBQXFCLENBQUMsSUFBSSxzQkFBaUIsVUFBWSxDQUFDLENBQUM7S0FDcEs7Ozs7O0lBTU0seUNBQXlCLEdBQWhDLFVBQWlDLFdBQW1CO1FBQ2hELE9BQU8sSUFBSSxlQUFlLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFLLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLElBQUksdUJBQWtCLFdBQWEsQ0FBQyxDQUFDO0tBQ2xLOzs7OztJQU1NLDZDQUE2QixHQUFwQyxVQUFxQyxhQUF1QjtRQUN4RCxPQUFPLElBQUksZUFBZSxDQUFDLHNCQUFzQixDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBSyxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLHlCQUFvQixhQUFlLENBQUMsQ0FBQztLQUM5Szs7OztJQUtNLDhDQUE4QixHQUFyQztRQUNJLE9BQU8sSUFBSSxlQUFlLENBQUMsc0JBQXNCLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLEtBQUcsc0JBQXNCLENBQUMsMEJBQTBCLENBQUMsSUFBTSxDQUFDLENBQUM7S0FDbko7Ozs7SUFLTSw0Q0FBNEIsR0FBbkM7UUFDSSxPQUFPLElBQUksZUFBZSxDQUFDLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxLQUFHLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDLElBQU0sQ0FBQyxDQUFDO0tBQ2pJOzs7O0lBS00sbURBQW1DLEdBQTFDO1FBQ0ksT0FBTyxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsS0FBRyxzQkFBc0IsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFNLENBQUMsQ0FBQztLQUMvSTs7OztJQUtNLGdEQUFnQyxHQUF2QztRQUNJLE9BQU8sSUFBSSxlQUFlLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlIOzs7O0lBS00sa0RBQWtDLEdBQXpDO1FBQ0ksT0FBTyxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDeEk7Ozs7SUFLTSx5Q0FBeUIsR0FBaEM7UUFDSSxPQUFPLElBQUksZUFBZSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RIOzs7O0lBS00sc0NBQXNCLEdBQTdCO1FBQ0ksT0FBTyxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsS0FBRyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFNLENBQUMsQ0FBQztLQUMvSDs7Ozs7SUFNTSx5Q0FBeUIsR0FBaEMsVUFBaUMsYUFBcUI7UUFDbEQsT0FBTyxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUcsc0JBQXNCLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxhQUFlLENBQUMsQ0FBQztLQUNySTs7OztJQUtNLDJDQUEyQixHQUFsQztRQUNJLE9BQU8sSUFBSSxlQUFlLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEtBQUcsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsSUFBTSxDQUFDLENBQUM7S0FDL0g7Ozs7SUFLTSxnREFBZ0MsR0FBdkM7UUFDSSxPQUFPLElBQUksZUFBZSxDQUFDLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxLQUFHLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLElBQU0sQ0FBQyxDQUFDO0tBQ3pJOzs7O0lBS00sbURBQW1DLEdBQTFDO1FBQ0ksT0FBTyxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsS0FBRyxzQkFBc0IsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFNLENBQUMsQ0FBQztLQUMvSTs7OztJQUtNLDJDQUEyQixHQUFsQztRQUNJLE9BQU8sSUFBSSxlQUFlLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEtBQUcsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsSUFBTSxDQUFDLENBQUM7S0FDL0g7Ozs7SUFLTSw0Q0FBNEIsR0FBbkM7UUFDSSxPQUFPLElBQUksZUFBZSxDQUFDLHNCQUFzQixDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxLQUFHLHNCQUFzQixDQUFDLHVCQUF1QixDQUFDLElBQU0sQ0FBQyxDQUFDO0tBQzdJOzs7O0lBS00sMENBQTBCLEdBQWpDO1FBQ0ksT0FBTyxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbEk7Ozs7SUFLTSw2Q0FBNkIsR0FBcEM7UUFDSSxPQUFPLElBQUksZUFBZSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5SDs7OztJQUtNLDhDQUE4QixHQUFyQztRQUNJLE9BQU8sSUFBSSxlQUFlLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2hJOzs7O0lBS00scURBQXFDLEdBQTVDO1FBQ0ksT0FBTyxJQUFJLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDcEo7SUFDTCxzQkFBQztBQUFELENBdFRBLENBQXFDLFNBQVM7O0FDbEw5Qzs7OztBQU1BLEFBRUE7OztBQUdBO0lBQUE7S0FzR0M7Ozs7OztJQS9GVSwyQkFBZSxHQUF0QixVQUF1QixTQUFpQjtRQUNwQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDaEMsTUFBTSxlQUFlLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDaEU7UUFDRCxJQUFNLGVBQWUsR0FBRyxzQ0FBc0MsQ0FBQztRQUMvRCxJQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDaEMsTUFBTSxlQUFlLENBQUMsdUJBQXVCLENBQUMsK0JBQTZCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFHLENBQUMsQ0FBQztTQUMzRztRQUNELElBQU0sWUFBWSxHQUFxQjtZQUNuQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNsQixVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN0QixNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNyQixDQUFDO1FBQ0YsT0FBTyxZQUFZLENBQUM7S0FDdkI7Ozs7OztJQU9NLG1CQUFPLEdBQWQsVUFBZSxHQUFZO1FBQ3ZCLFFBQVEsT0FBTyxHQUFHLEtBQUssV0FBVyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsTUFBTSxFQUFFO0tBQ25FO0lBRU0sc0JBQVUsR0FBakIsVUFBa0IsR0FBVyxFQUFFLE1BQWM7UUFDekMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNwQztJQUVNLG9CQUFRLEdBQWYsVUFBZ0IsR0FBVyxFQUFFLE1BQWM7UUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDdEc7Ozs7OztJQU9NLCtCQUFtQixHQUExQixVQUE4QixLQUFhO1FBQ3ZDLElBQUksS0FBMkIsQ0FBQztRQUNoQyxJQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDakIsSUFBTSxNQUFNLEdBQUcsbUJBQW1CLENBQUM7UUFDbkMsSUFBTSxNQUFNLEdBQUcsVUFBQyxDQUFTLElBQWEsT0FBQSxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUEsQ0FBQztRQUNqRyxJQUFNLEdBQUcsR0FBTyxFQUFFLENBQUM7UUFDbkIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsT0FBTyxLQUFLLEVBQUU7WUFDVixHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsT0FBTyxHQUFRLENBQUM7S0FDbkI7Ozs7OztJQU9NLDRCQUFnQixHQUF2QixVQUF3QixHQUFrQjtRQUN0QyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUEsQ0FBQyxDQUFDO0tBQ3pDOzs7OztJQU1NLHVDQUEyQixHQUFsQyxVQUFtQyxHQUFrQjtRQUNqRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBQSxLQUFLO1lBQ25CLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3RDLENBQUMsQ0FBQztLQUNOOzs7OztJQU1NLDJCQUFlLEdBQXRCLFVBQTBCLEdBQVc7UUFDakMsSUFBSTtZQUNBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQU0sQ0FBQztTQUMvQjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsT0FBTyxJQUFJLENBQUM7U0FDZjtLQUNKOzs7Ozs7SUFPTSx3QkFBWSxHQUFuQixVQUFvQixPQUFlLEVBQUUsS0FBYTs7UUFFOUMsSUFBTSxLQUFLLEdBQVcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUVsRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDNUI7SUFDTCxrQkFBQztBQUFELENBQUM7O0FDakhEOzs7O0FBS0EsQUFjQTs7O0FBR0EsSUFBWSxRQUtYO0FBTEQsV0FBWSxRQUFRO0lBQ2hCLHlDQUFLLENBQUE7SUFDTCw2Q0FBTyxDQUFBO0lBQ1AsdUNBQUksQ0FBQTtJQUNKLDZDQUFPLENBQUE7QUFDWCxDQUFDLEVBTFcsUUFBUSxLQUFSLFFBQVEsUUFLbkI7QUFTRDs7O0FBR0E7SUFvQkksZ0JBQVksYUFBNEIsRUFBRSxXQUFvQixFQUFFLGNBQXVCOztRQWQvRSxVQUFLLEdBQWEsUUFBUSxDQUFDLElBQUksQ0FBQztRQWVwQyxJQUFNLHFCQUFxQixHQUFHLGVBQVEsQ0FBQztRQUN2QyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxjQUFjLElBQUkscUJBQXFCLENBQUM7UUFDM0UsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxpQkFBaUIsSUFBSSxLQUFLLENBQUM7UUFDbEUsSUFBSSxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFFckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQztRQUN6RCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDO0tBQ2xFOzs7O0lBS00sc0JBQUssR0FBWixVQUFhLFdBQW1CLEVBQUUsY0FBc0I7UUFDcEQsT0FBTyxJQUFJLE1BQU0sQ0FBQyxFQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBQyxFQUFFLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztLQUN6Sjs7OztJQUtPLDJCQUFVLEdBQWxCLFVBQW1CLFVBQWtCLEVBQUUsT0FBNkI7UUFDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDckYsT0FBTztTQUNWO1FBQ0QsSUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzQyxJQUFNLFNBQVMsR0FBVyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxNQUFJLFNBQVMsU0FBTSxHQUFHLE1BQUksU0FBUyxhQUFRLElBQUksQ0FBQyxhQUFhLE1BQUcsQ0FBQztRQUNySSxJQUFNLEdBQUcsR0FBTSxTQUFTLFdBQU0sSUFBSSxDQUFDLFdBQVcsU0FBSSxJQUFJLENBQUMsY0FBYyxXQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQU0sVUFBWSxDQUFDOztRQUV4SCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLENBQUM7S0FDN0U7Ozs7SUFLRCxnQ0FBZSxHQUFmLFVBQWdCLEtBQWUsRUFBRSxPQUFlLEVBQUUsV0FBb0I7UUFDbEUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztTQUNuRDtLQUNKOzs7O0lBS0Qsc0JBQUssR0FBTCxVQUFNLE9BQWUsRUFBRSxhQUFzQjtRQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNyQixRQUFRLEVBQUUsUUFBUSxDQUFDLEtBQUs7WUFDeEIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsYUFBYSxFQUFFLGFBQWEsSUFBSSxFQUFFO1NBQ3JDLENBQUMsQ0FBQztLQUNOOzs7O0lBS0QseUJBQVEsR0FBUixVQUFTLE9BQWUsRUFBRSxhQUFzQjtRQUM1QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNyQixRQUFRLEVBQUUsUUFBUSxDQUFDLEtBQUs7WUFDeEIsV0FBVyxFQUFFLElBQUk7WUFDakIsYUFBYSxFQUFFLGFBQWEsSUFBSSxFQUFFO1NBQ3JDLENBQUMsQ0FBQztLQUNOOzs7O0lBS0Qsd0JBQU8sR0FBUCxVQUFRLE9BQWUsRUFBRSxhQUFzQjtRQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNyQixRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU87WUFDMUIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsYUFBYSxFQUFFLGFBQWEsSUFBSSxFQUFFO1NBQ3JDLENBQUMsQ0FBQztLQUNOOzs7O0lBS0QsMkJBQVUsR0FBVixVQUFXLE9BQWUsRUFBRSxhQUFzQjtRQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNyQixRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU87WUFDMUIsV0FBVyxFQUFFLElBQUk7WUFDakIsYUFBYSxFQUFFLGFBQWEsSUFBSSxFQUFFO1NBQ3JDLENBQUMsQ0FBQztLQUNOOzs7O0lBS0QscUJBQUksR0FBSixVQUFLLE9BQWUsRUFBRSxhQUFzQjtRQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNyQixRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUk7WUFDdkIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsYUFBYSxFQUFFLGFBQWEsSUFBSSxFQUFFO1NBQ3JDLENBQUMsQ0FBQztLQUNOOzs7O0lBS0Qsd0JBQU8sR0FBUCxVQUFRLE9BQWUsRUFBRSxhQUFzQjtRQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNyQixRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUk7WUFDdkIsV0FBVyxFQUFFLElBQUk7WUFDakIsYUFBYSxFQUFFLGFBQWEsSUFBSSxFQUFFO1NBQ3JDLENBQUMsQ0FBQztLQUNOOzs7O0lBS0Qsd0JBQU8sR0FBUCxVQUFRLE9BQWUsRUFBRSxhQUFzQjtRQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNyQixRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU87WUFDMUIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsYUFBYSxFQUFFLGFBQWEsSUFBSSxFQUFFO1NBQ3JDLENBQUMsQ0FBQztLQUNOOzs7O0lBS0QsMkJBQVUsR0FBVixVQUFXLE9BQWUsRUFBRSxhQUFzQjtRQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNyQixRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU87WUFDMUIsV0FBVyxFQUFFLElBQUk7WUFDakIsYUFBYSxFQUFFLGFBQWEsSUFBSSxFQUFFO1NBQ3JDLENBQUMsQ0FBQztLQUNOOzs7O0lBS0Qsb0NBQW1CLEdBQW5CO1FBQ0ksT0FBTyxJQUFJLENBQUMsaUJBQWlCLElBQUksS0FBSyxDQUFDO0tBQzFDO0lBQ0wsYUFBQztBQUFELENBQUM7O0FDak1EO0FBQ0EsQUFBTyxJQUFNLElBQUksR0FBRyxvQkFBb0IsQ0FBQztBQUN6QyxBQUFPLElBQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQzs7QUNGL0I7Ozs7QUFLQSxBQUdBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTtJQUFBO0tBdUpDOzs7O0lBeklHLDRDQUFpQixHQUFqQjtRQUNJLE9BQU8sZ0JBQWdCLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDOUY7Ozs7SUFLRCwrQ0FBb0IsR0FBcEI7UUFDSSxPQUFPLGdCQUFnQixDQUFDLCtCQUErQixDQUNuRCxJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FDaEIsQ0FBQztLQUNMOzs7O0lBS0QseUNBQWMsR0FBZDtRQUNJLE9BQU8sZ0JBQWdCLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ2xFOzs7O0lBS0QsZ0RBQXFCLEdBQXJCO1FBQ0ksT0FBTyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FDOUMsSUFBSSxDQUFDLGFBQWEsRUFDbEIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FDaEIsQ0FBQztLQUNMOzs7O0lBS0QsdUNBQVksR0FBWjtRQUNJLFFBQVEsSUFBSSxDQUFDLGNBQWM7WUFDdkIsS0FBSyxjQUFjLENBQUMsUUFBUTtnQkFDeEIsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQzlCLEtBQUssY0FBYyxDQUFDLFlBQVk7Z0JBQzVCLE9BQU8sU0FBUyxDQUFDLFlBQVksQ0FBQztZQUNsQyxLQUFLLGNBQWMsQ0FBQyxhQUFhO2dCQUM3QixPQUFPLFNBQVMsQ0FBQyxhQUFhLENBQUM7WUFDbkMsU0FBUztnQkFDTCxNQUFNLGVBQWUsQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDO2FBQy9EO1NBQ0o7S0FDSjs7Ozs7SUFNTSxrQ0FBaUIsR0FBeEIsVUFBeUIsR0FBVztRQUNoQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQy9ELE9BQU8sY0FBYyxDQUFDLFlBQVksQ0FBQztTQUN0QzthQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbEUsT0FBTyxjQUFjLENBQUMsUUFBUSxDQUFDO1NBQ2xDO2FBQU0sSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN2RSxPQUFPLGNBQWMsQ0FBQyxhQUFhLENBQUM7U0FDdkM7UUFFRCxPQUFPLFNBQVMsQ0FBQyxXQUFXLENBQUM7S0FDaEM7Ozs7SUFLTSwyQ0FBMEIsR0FBakMsVUFDSSxhQUFxQixFQUNyQixXQUFtQixFQUNuQixjQUE4QixFQUM5QixRQUFnQixFQUNoQixLQUFjLEVBQ2QsTUFBZSxFQUNmLFFBQWlCO1FBRWpCLElBQU0sYUFBYSxHQUFHO1lBQ2xCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO1lBQzdELElBQUksQ0FBQywrQkFBK0IsQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUM7WUFDL0UsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQztTQUN6QyxDQUFDO1FBRUYsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0tBQzNFOzs7Ozs7SUFPYyw2Q0FBNEIsR0FBM0MsVUFDSSxhQUFxQixFQUNyQixXQUFtQjtRQUVuQixJQUFNLFNBQVMsR0FBa0IsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDOUQsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0tBQ3ZFOzs7Ozs7OztJQVNjLGdEQUErQixHQUE5QyxVQUNJLGNBQThCLEVBQzlCLFFBQWdCLEVBQ2hCLEtBQWMsRUFDZCxRQUFpQjtRQUVqQixJQUFNLGdCQUFnQixHQUNsQixjQUFjLEtBQUssY0FBYyxDQUFDLGFBQWE7Y0FDekMsUUFBUSxJQUFJLFFBQVE7Y0FDcEIsUUFBUSxDQUFDO1FBQ25CLElBQU0sWUFBWSxHQUFrQjtZQUNoQyxjQUFjO1lBQ2QsZ0JBQWdCO1lBQ2hCLEtBQUssSUFBSSxFQUFFO1NBQ2QsQ0FBQztRQUVGLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUMxRTs7OztJQUtjLDBDQUF5QixHQUF4QyxVQUF5QyxNQUFlO1FBQ3BELE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDO0tBQ3ZDO0lBQ0wsdUJBQUM7QUFBRCxDQUFDOztBQ25MRDs7OztBQU9BOzs7QUFHQSxJQUFhLCtCQUErQixHQUFHO0lBQzNDLGlCQUFpQixFQUFFO1FBQ2YsSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixJQUFJLEVBQUUsa0VBQWtFO0tBQzNFO0lBQ0QsbUJBQW1CLEVBQUU7UUFDakIsSUFBSSxFQUFFLHVCQUF1QjtRQUM3QixJQUFJLEVBQUUsMENBQTBDO0tBQ25EO0lBQ0QseUJBQXlCLEVBQUU7UUFDdkIsSUFBSSxFQUFFLDhCQUE4QjtRQUNwQyxJQUFJLEVBQUUsa0RBQWtEO0tBQzNEO0lBQ0Qsb0JBQW9CLEVBQUU7UUFDbEIsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixJQUFJLEVBQUUsMk5BQTJOO0tBQ3BPO0lBQ0QsYUFBYSxFQUFFO1FBQ1gsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixJQUFJLEVBQUUsb0RBQW9EO0tBQzdEO0lBQ0QsYUFBYSxFQUFFO1FBQ1gsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixJQUFJLEVBQUUsd0JBQXdCO0tBQ2pDO0lBQ0QsZ0JBQWdCLEVBQUU7UUFDZCxJQUFJLEVBQUUsMEJBQTBCO1FBQ2hDLElBQUksRUFBRSxnSEFBZ0g7S0FDekg7SUFDRCxtQkFBbUIsRUFBRTtRQUNqQixJQUFJLEVBQUUsNkJBQTZCO1FBQ25DLElBQUksRUFBRSx1Q0FBdUM7S0FDaEQ7SUFDRCx3QkFBd0IsRUFBRTtRQUN0QixJQUFJLEVBQUUsNkJBQTZCO1FBQ25DLElBQUksRUFBRSxtREFBbUQ7S0FDNUQ7SUFDRCxhQUFhLEVBQUU7UUFDWCxJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLElBQUksRUFBRSwrUEFBK1A7S0FDeFE7SUFDRCxvQkFBb0IsRUFBRTtRQUNsQixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLElBQUksRUFBRSwyREFBMkQ7S0FDcEU7SUFDRCxzQkFBc0IsRUFBRTtRQUNwQixJQUFJLEVBQUUscUJBQXFCO1FBQzNCLElBQUksRUFBRSxpREFBaUQ7S0FDMUQ7SUFDRCx1QkFBdUIsRUFBRTtRQUNyQixJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLElBQUksRUFBRSwyQ0FBMkM7S0FDcEQ7SUFDRCwwQkFBMEIsRUFBRTtRQUN4QixJQUFJLEVBQUUsK0JBQStCO1FBQ3JDLElBQUksRUFBRSxtRkFBbUY7S0FDNUY7SUFDRCwwQkFBMEIsRUFBRTtRQUN4QixJQUFJLEVBQUUscUJBQXFCO1FBQzNCLElBQUksRUFBRSxxR0FBcUc7S0FDOUc7SUFDRCw2QkFBNkIsRUFBRTtRQUMzQixJQUFJLEVBQUUsa0NBQWtDO1FBQ3hDLElBQUksRUFBRSx5SEFBeUg7S0FDbEk7SUFDRCx3QkFBd0IsRUFBRTtRQUN0QixJQUFJLEVBQUUsNEJBQTRCO1FBQ2xDLElBQUksRUFBRSxtSkFBbUo7S0FDNUo7SUFDRCxrQkFBa0IsRUFBRTtRQUNoQixJQUFJLEVBQUUscUJBQXFCO1FBQzNCLElBQUksRUFBRSw0SEFBNEg7S0FDckk7SUFDRCxpQ0FBaUMsRUFBRTtRQUMvQixJQUFJLEVBQUUscUNBQXFDO1FBQzNDLElBQUksRUFBRSwyREFBMkQ7S0FDcEU7Q0FDSixDQUFDO0FBRUY7OztBQUdBO0lBQThDLDRDQUFlO0lBRXpELGtDQUFZLFNBQWlCLEVBQUUsWUFBcUI7UUFBcEQsWUFDSSxrQkFBTSxTQUFTLEVBQUUsWUFBWSxDQUFDLFNBR2pDO1FBRkcsS0FBSSxDQUFDLElBQUksR0FBRywwQkFBMEIsQ0FBQztRQUN2QyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUksRUFBRSx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQzs7S0FDbkU7Ozs7SUFLTSxvREFBMkIsR0FBbEM7UUFDSSxPQUFPLElBQUksd0JBQXdCLENBQUMsK0JBQStCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUN0RiwrQkFBK0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMvRDs7OztJQUtNLDhEQUFxQyxHQUE1QztRQUNJLE9BQU8sSUFBSSx3QkFBd0IsQ0FBQywrQkFBK0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQ3hGLCtCQUErQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2pFOzs7O0lBS00sd0RBQStCLEdBQXRDLFVBQXVDLHVCQUErQjtRQUNsRSxPQUFPLElBQUksd0JBQXdCLENBQUMsK0JBQStCLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUMzRiwrQkFBK0IsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLHNCQUFpQix1QkFBeUIsQ0FBQyxDQUFDO0tBQ3BIOzs7OztJQU1NLHdEQUErQixHQUF0QyxVQUF1QyxTQUFpQjtRQUNwRCxPQUFPLElBQUksd0JBQXdCLENBQUMsK0JBQStCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUN0RiwrQkFBK0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLG9CQUFlLFNBQVcsQ0FBQyxDQUFDO0tBQy9GOzs7OztJQU1NLDRDQUFtQixHQUExQixVQUEyQixhQUFxQjtRQUM1QyxPQUFPLElBQUksd0JBQXdCLENBQUMsK0JBQStCLENBQUMsYUFBYSxDQUFDLElBQUksRUFDL0UsK0JBQStCLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQWlCLGFBQWUsQ0FBQyxDQUFDO0tBQzlGOzs7OztJQU1NLDRDQUFtQixHQUExQjtRQUNJLE9BQU8sSUFBSSx3QkFBd0IsQ0FBQywrQkFBK0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUNsRiwrQkFBK0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDM0Q7Ozs7O0lBTU0sa0RBQXlCLEdBQWhDLFVBQWlDLFdBQTBCO1FBQ3ZELE9BQU8sSUFBSSx3QkFBd0IsQ0FBQywrQkFBK0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQ3JGLCtCQUErQixDQUFDLG1CQUFtQixDQUFDLElBQUksdUJBQWtCLFdBQWEsQ0FBQyxDQUFDO0tBQ25HOzs7OztJQU1NLG9EQUEyQixHQUFsQyxVQUFtQyxXQUEwQjtRQUN6RCxPQUFPLElBQUksd0JBQXdCLENBQUMsK0JBQStCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUNsRiwrQkFBK0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLHVCQUFrQixXQUFhLENBQUMsQ0FBQztLQUNoRzs7Ozs7SUFNTSx1REFBOEIsR0FBckMsVUFBc0MsV0FBMEI7UUFDNUQsT0FBTyxJQUFJLHdCQUF3QixDQUFDLCtCQUErQixDQUFDLHdCQUF3QixDQUFDLElBQUksRUFDMUYsK0JBQStCLENBQUMsd0JBQXdCLENBQUMsSUFBSSx1QkFBa0IsV0FBYSxDQUFDLENBQUM7S0FDeEc7Ozs7O0lBTU0saURBQXdCLEdBQS9CLFVBQWdDLFdBQW1CO1FBQy9DLE9BQU8sSUFBSSx3QkFBd0IsQ0FBQywrQkFBK0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUMvRSwrQkFBK0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxzQkFBaUIsV0FBYSxDQUFDLENBQUM7S0FDNUY7Ozs7SUFLTSx3REFBK0IsR0FBdEM7UUFDSSxPQUFPLElBQUksd0JBQXdCLENBQUMsK0JBQStCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUN6RiwrQkFBK0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsRTs7OztJQUtNLHNEQUE2QixHQUFwQztRQUNJLE9BQU8sSUFBSSx3QkFBd0IsQ0FDL0IsK0JBQStCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUM1RCwrQkFBK0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQy9ELENBQUM7S0FDTDs7OztJQUtNLHFEQUE0QixHQUFuQztRQUNJLE9BQU8sSUFBSSx3QkFBd0IsQ0FDL0IsK0JBQStCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUMzRCwrQkFBK0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQzlELENBQUM7S0FDTDs7OztJQUtNLDhEQUFxQyxHQUE1QztRQUNJLE9BQU8sSUFBSSx3QkFBd0IsQ0FDL0IsK0JBQStCLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUMvRCwrQkFBK0IsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQ2xFLENBQUM7S0FDTDs7OztJQUtNLDhEQUFxQyxHQUE1QztRQUNJLE9BQU8sSUFBSSx3QkFBd0IsQ0FDL0IsK0JBQStCLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUMvRCwrQkFBK0IsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQ2xFLENBQUM7S0FDTDs7OztJQUtNLGlFQUF3QyxHQUEvQztRQUNJLE9BQU8sSUFBSSx3QkFBd0IsQ0FBQywrQkFBK0IsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEVBQ2xHLCtCQUErQixDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzNFOzs7O0lBS00sNERBQW1DLEdBQTFDO1FBQ0ksT0FBTyxJQUFJLHdCQUF3QixDQUFDLCtCQUErQixDQUFDLHdCQUF3QixDQUFDLElBQUksRUFDN0YsK0JBQStCLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdEU7Ozs7SUFLTSxzREFBNkIsR0FBcEM7UUFDSSxPQUFPLElBQUksd0JBQXdCLENBQUMsK0JBQStCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUN2RiwrQkFBK0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNoRTs7OztJQUtNLHFFQUE0QyxHQUFuRDtRQUNJLE9BQU8sSUFBSSx3QkFBd0IsQ0FBQywrQkFBK0IsQ0FBQyxpQ0FBaUMsQ0FBQyxJQUFJLEVBQ3RHLCtCQUErQixDQUFDLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQy9FO0lBQ0wsK0JBQUM7QUFBRCxDQTlLQSxDQUE4QyxlQUFlOztBQzVGN0Q7Ozs7QUFVQTs7Ozs7QUFLQTtJQUlJLGtCQUFZLFdBQTBCO1FBQXRDLGlCQVVDOztRQVJHLElBQU0sUUFBUSxHQUFHLFdBQVcsR0FBRyxXQUFXLENBQUMsZ0JBQWdCLGdCQUFLLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNuRixJQUFNLGFBQWEsR0FBRyxRQUFRLEdBQUcsV0FBVyxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQzs7UUFHeEYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUNoQyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUEsQ0FBQyxDQUFDO0tBQzFEOzs7Ozs7O0lBUU0sbUJBQVUsR0FBakIsVUFBa0IsZ0JBQXdCO1FBQ3RDLGdCQUFnQixHQUFHLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztRQUMxQyxJQUFNLFdBQVcsR0FBa0IsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDcEM7Ozs7OztJQU9PLHNDQUFtQixHQUEzQixVQUE0QixXQUEwQjs7UUFFbEQsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4QyxNQUFNLHdCQUF3QixDQUFDLDJCQUEyQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzNFO0tBQ0o7Ozs7O0lBTUQsZ0NBQWEsR0FBYixVQUFjLEtBQWE7UUFDdkIsSUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELElBQU0sa0JBQWtCLEdBQUcsSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7O1FBRXpELE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO0tBQ25HOzs7OztJQU1ELG1DQUFnQixHQUFoQixVQUFpQixRQUFrQjtRQUFuQyxpQkFNQztRQUxHLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBQSxDQUFDLEVBQUU7S0FDckg7Ozs7SUFLRCx5Q0FBc0IsR0FBdEI7UUFBQSxpQkFTQztRQVJHLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBQyxZQUFvQjtZQUNyQyxJQUFJLEtBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQ2xDLGlCQUFpQixJQUFJLENBQUMsQ0FBQzthQUMxQjtTQUNKLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUM7S0FDakQ7Ozs7O0lBTUQsOEJBQVcsR0FBWCxVQUFZLFFBQWdCO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3BDO0tBQ0o7Ozs7O0lBTUQsK0JBQVksR0FBWixVQUFhLFNBQXdCO1FBQXJDLGlCQU1DO1FBTEcsSUFBSTtZQUNBLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBQSxRQUFRLElBQUksT0FBQSxLQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFBLENBQUMsQ0FBQztTQUM3RDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsTUFBTSxlQUFlLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEQ7S0FDSjs7Ozs7SUFNRCw4QkFBVyxHQUFYLFVBQVksS0FBYTtRQUNyQixJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDNUIsTUFBTSxlQUFlLENBQUMsa0NBQWtDLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkU7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUNwQzs7Ozs7SUFNRCxtQ0FBZ0IsR0FBaEI7UUFBQSxpQkFJQztRQUhHLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBQyxZQUFvQjtZQUNyQyxLQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNwQyxDQUFDLENBQUM7S0FDTjs7Ozs7SUFNRCxpQ0FBYyxHQUFkLFVBQWUsV0FBcUI7UUFDaEMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNkLE1BQU0sZUFBZSxDQUFDLDZCQUE2QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3BFO1FBQ0QsSUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUN0QyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUEsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBQSxDQUFDLENBQUM7UUFDbkUsT0FBTyxXQUFXLENBQUM7S0FDdEI7Ozs7O0lBTUQsd0NBQXFCLEdBQXJCLFVBQXNCLFdBQXFCO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDZCxNQUFNLGVBQWUsQ0FBQyw2QkFBNkIsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNwRTs7UUFHRCxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLEVBQUU7WUFDdkMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDbEM7UUFDRCxJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELElBQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwRCxJQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDNUMsSUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQUN6QyxPQUFPLGVBQWUsSUFBSSxjQUFjLEdBQUcsZUFBZSxDQUFDLENBQUM7S0FDL0Q7Ozs7SUFLRCxnQ0FBYSxHQUFiO1FBQ0ksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztLQUMzQjs7OztJQUtELDBCQUFPLEdBQVA7UUFDSSxJQUFNLEtBQUssR0FBa0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBQSxDQUFDLENBQUM7UUFDNUMsT0FBTyxLQUFLLENBQUM7S0FDaEI7Ozs7SUFLRCw4QkFBVyxHQUFYO1FBQ0ksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM3QjtRQUNELE9BQU8sRUFBRSxDQUFDO0tBQ2I7Ozs7SUFLRCx1Q0FBb0IsR0FBcEI7UUFDSSxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUMzQztJQUNMLGVBQUM7QUFBRCxDQUFDLElBQUE7O0FDMU1EOzs7O0FBS0EsQUFZQTs7Ozs7QUFLQSxTQUFnQixlQUFlLENBQUMsYUFBcUIsRUFBRSxNQUFlO0lBQ2xFLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRTtRQUNwQyxNQUFNLGVBQWUsQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0tBQ3REO0lBRUQsSUFBSTtRQUNBLElBQU0saUJBQWlCLEdBQVcsTUFBTSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQWUsQ0FBQztLQUN0RDtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1IsTUFBTSxlQUFlLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDMUQ7QUFDTCxDQUFDOztBQ2pDRDs7OztBQUtBOzs7QUFHQSxJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDckIsdURBQU8sQ0FBQTtJQUNQLGlEQUFJLENBQUE7QUFDUixDQUFDLEVBSFcsYUFBYSxLQUFiLGFBQWEsUUFHeEI7O0FDWEQ7Ozs7QUFLQSxBQWlCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7SUFBQTtLQXlQQzs7OztJQXRPRyx5Q0FBaUIsR0FBakI7UUFDSSxJQUFNLFNBQVMsR0FBa0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RSxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7S0FDdkU7Ozs7SUFLRCwwQ0FBa0IsR0FBbEI7UUFDSSxPQUFPLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQztZQUN6QyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSztZQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3RDLENBQUMsQ0FBQztLQUNOOzs7O0lBS0Qsb0NBQVksR0FBWjtRQUNJLFFBQVEsSUFBSSxDQUFDLGFBQWE7WUFDdEIsS0FBSyxnQkFBZ0IsQ0FBQyxpQkFBaUI7Z0JBQ25DLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQztZQUMxQixLQUFLLGdCQUFnQixDQUFDLGtCQUFrQjtnQkFDcEMsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQ3pCLEtBQUssZ0JBQWdCLENBQUMsa0JBQWtCO2dCQUNwQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDM0IsS0FBSyxnQkFBZ0IsQ0FBQyxvQkFBb0I7Z0JBQ3RDLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUM3QixTQUFTO2dCQUNMLE1BQU0sZUFBZSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7YUFDNUQ7U0FDSjtLQUNKOzs7O0lBS0Qsc0NBQWMsR0FBZDtRQUNJLE9BQU87WUFDSCxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSztZQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNwQyxDQUFDO0tBQ0w7Ozs7O0lBTU0scUNBQXVCLEdBQTlCLFVBQStCLGdCQUE2QjtRQUN4RCxJQUFNLFVBQVUsR0FBRztZQUNmLGdCQUFnQixDQUFDLGFBQWE7WUFDOUIsZ0JBQWdCLENBQUMsV0FBVyxJQUFJLEVBQUU7WUFDbEMsZ0JBQWdCLENBQUMsUUFBUSxJQUFJLEVBQUU7U0FDbEMsQ0FBQztRQUVGLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUN4RTs7Ozs7Ozs7SUFTTSwyQkFBYSxHQUFwQixVQUNJLFVBQWtCLEVBQ2xCLGFBQXFCLEVBQ3JCLFNBQW9CLEVBQ3BCLE9BQWtCLEVBQ2xCLFlBQXFCLEVBQ3JCLGtCQUEyQixFQUMzQixXQUFvQjs7UUFFcEIsSUFBTSxPQUFPLEdBQWtCLElBQUksYUFBYSxFQUFFLENBQUM7UUFFbkQsT0FBTyxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQztRQUM1RCxPQUFPLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUNoQyxPQUFPLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUV0QyxJQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMxQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUIsTUFBTSxlQUFlLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztTQUM5RDtRQUVELE9BQU8sQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDOztRQUUxQixPQUFPLENBQUMsS0FBSyxHQUFHLE9BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sMENBQUUsR0FBRyxLQUFJLEVBQUUsQ0FBQztRQUMzQyxPQUFPLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUVwQyxJQUFJLE9BQU8sRUFBRTtZQUNULE9BQU8sQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQzs7WUFHdkMsT0FBTyxDQUFDLGNBQWMsR0FBRyxPQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLDBDQUFFLEdBQUcsWUFBSSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSwwQ0FBRSxHQUFHLENBQUEsSUFBSSxFQUFFLENBQUM7Ozs7O1lBTTVFLE9BQU8sQ0FBQyxRQUFRLEdBQUcsT0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSwwQ0FBRSxrQkFBa0IsTUFBSyxPQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLDBDQUFFLE1BQU0sSUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQztZQUNsSCxPQUFPLENBQUMsSUFBSSxTQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLDBDQUFFLElBQUksQ0FBQztTQUN4QztRQUVELE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUNoRCxPQUFPLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUVsQyxPQUFPLE9BQU8sQ0FBQztLQUNsQjs7Ozs7O0lBT00sa0NBQW9CLEdBQTNCLFVBQ0ksU0FBb0IsRUFDcEIsYUFBcUIsRUFDckIsT0FBa0IsRUFDbEIsWUFBcUIsRUFDckIsa0JBQTJCLEVBQzNCLFdBQW9COztRQUVwQixJQUFNLE9BQU8sR0FBa0IsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUVuRCxPQUFPLENBQUMsYUFBYSxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUMsSUFBSSxJQUFJLGdCQUFnQixDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDO1FBQ3RKLE9BQU8sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDOztRQUV0QyxPQUFPLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNuQixPQUFPLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUVwQyxJQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUUxQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUIsTUFBTSxlQUFlLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztTQUM5RDtRQUVELElBQUksT0FBTyxFQUFFOztZQUVULE9BQU8sQ0FBQyxjQUFjLEdBQUcsT0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSwwQ0FBRSxHQUFHLFlBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sMENBQUUsR0FBRyxDQUFBLElBQUksRUFBRSxDQUFDOztZQUU1RSxPQUFPLENBQUMsUUFBUSxHQUFHLE9BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sMENBQUUsR0FBRyxLQUFJLEVBQUUsQ0FBQztZQUM5QyxPQUFPLENBQUMsSUFBSSxHQUFHLE9BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sMENBQUUsSUFBSSxLQUFJLEVBQUUsQ0FBQztZQUMzQyxPQUFPLENBQUMsYUFBYSxHQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLENBQUM7U0FDM0M7UUFFRCxPQUFPLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUUxQixPQUFPLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFDaEQsT0FBTyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7Ozs7O1FBT2xDLE9BQU8sT0FBTyxDQUFDO0tBQ2xCOzs7Ozs7SUFPTSxtQ0FBcUIsR0FBNUIsVUFBNkIsZ0JBQXdCLEVBQUUsUUFBdUIsRUFBRSxNQUFjLEVBQUUsU0FBa0IsRUFBRSxPQUFtQjs7UUFFbkksSUFBTSxTQUFTLEdBQUcsT0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSwwQ0FBRSxHQUFHLElBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQzs7UUFHckYsSUFBSSxRQUFRLEtBQUssYUFBYSxDQUFDLElBQUksRUFBRTtZQUNqQyxPQUFPLFNBQVMsQ0FBQztTQUNwQjs7UUFHRCxJQUFJLGdCQUFnQixFQUFFO1lBQ2xCLElBQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDL0UsT0FBTyxLQUFHLFVBQVUsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLHFCQUFxQixHQUFHLFVBQVUsQ0FBQyxJQUFNLENBQUM7YUFDbkY7U0FDSjs7UUFHRCxNQUFNLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDN0MsT0FBTyxTQUFTLENBQUM7S0FDcEI7Ozs7O0lBTU0sNkJBQWUsR0FBdEIsVUFBdUIsTUFBYztRQUVqQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxRQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUM7WUFDdkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7WUFDakMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsRUFDeEM7S0FDTDs7Ozs7OztJQVFNLGdDQUFrQixHQUF6QixVQUEwQixRQUE0QixFQUFFLFFBQTRCO1FBQ2hGLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDeEIsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsS0FBSyxRQUFRLENBQUMsYUFBYTthQUNwRCxRQUFRLENBQUMsY0FBYyxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUM7YUFDcEQsUUFBUSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsUUFBUSxDQUFDO2FBQ3hDLFFBQVEsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLFFBQVEsQ0FBQzthQUN4QyxRQUFRLENBQUMsV0FBVyxLQUFLLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUN2RDtJQUNMLG9CQUFDO0FBQUQsQ0FBQzs7QUN0U0Q7Ozs7QUFPQSxBQUlBOzs7QUFHQTtJQU1JLG1CQUFZLFFBQWdCLEVBQUUsTUFBZTtRQUN6QyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDL0IsTUFBTSxlQUFlLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDL0Q7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDaEU7Ozs7OztJQU9NLDRCQUFrQixHQUF6QixVQUEwQixZQUFvQixFQUFFLE1BQWU7UUFFM0QsSUFBTSxZQUFZLEdBQXFCLFdBQVcsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7O1FBR2pGLElBQUk7WUFDQSxJQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUM7O1lBR25ELElBQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUM5RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFnQixDQUFDO1NBQ25EO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDVixNQUFNLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0RDtLQUNKO0lBQ0wsZ0JBQUM7QUFBRCxDQUFDOztBQ2pERDs7OztBQXlCQTs7O0FBR0E7SUFJSSxzQkFBWSxRQUFnQixFQUFFLFVBQW1CO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0tBQ2hDOzs7O0lBbUlELHFDQUFjLEdBQWQ7UUFBQSxpQkFvQkM7UUFuQkcsSUFBTSxlQUFlLEdBQWlCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ25FLElBQU0sYUFBYSxHQUFvQixNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFBLFVBQVUsSUFBSSxPQUFBLGVBQWUsQ0FBQyxVQUFVLENBQUMsR0FBQSxDQUFDLENBQUM7UUFDbkgsSUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUN6QyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUU7WUFDakIsT0FBTyxFQUFFLENBQUM7U0FDYjthQUFNO1lBQ0gsSUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBYyxVQUFDLEtBQUs7Z0JBQ3JELElBQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQWdCLElBQUksYUFBYSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZGLElBQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDbkQsSUFBTSxPQUFPLEdBQUcsS0FBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ3RFLElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRTtvQkFDdkMsV0FBVyxDQUFDLGFBQWEsR0FBRyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUM7aUJBQ3JGO2dCQUVELE9BQU8sV0FBVyxDQUFDO2FBRXRCLENBQUMsQ0FBQztZQUNILE9BQU8sV0FBVyxDQUFDO1NBQ3RCO0tBQ0o7Ozs7O0lBTUQsc0NBQWUsR0FBZixVQUFnQixXQUF3QjtRQUNwQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2QsTUFBTSxlQUFlLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztTQUM1RDtRQUVELElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDeEM7UUFFRCxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDbEQ7UUFFRCxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFO1lBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRTtZQUM1QixJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzVEO1FBRUQsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtZQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNoRDtLQUNKOzs7OztJQU1PLHNDQUFlLEdBQXZCLFVBQXdCLFVBQTZCO1FBQXJELGlCQW1CQztRQWxCRyxJQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztZQUNwRCxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7WUFDN0IsY0FBYyxFQUFFLGNBQWMsQ0FBQyxZQUFZO1lBQzNDLFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVztZQUNuQyxhQUFhLEVBQUUsVUFBVSxDQUFDLGFBQWE7WUFDdkMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO1NBQzFCLENBQUMsQ0FBQztRQUNILElBQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdELElBQU0sbUJBQW1CLEdBQXdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFBLENBQUMsQ0FBQztRQUM3SSxJQUFJLG1CQUFtQixFQUFFO1lBQ3JCLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxVQUFDLFdBQVc7Z0JBQ3BDLElBQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsRUFBRTtvQkFDcEQsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUN0QzthQUNKLENBQUMsQ0FBQztTQUNOO1FBQ0QsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQzdDOzs7Ozs7OztJQVNELDRDQUFxQixHQUFyQixVQUFzQixhQUE2QjtRQUMvQyxPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FDckMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxhQUFhLEdBQUcsRUFBRSxFQUNoRCxhQUFhLEdBQUcsYUFBYSxDQUFDLFdBQVcsR0FBRyxFQUFFLEVBQzlDLGFBQWEsR0FBRyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FDM0MsQ0FBQztLQUNMOzs7Ozs7OztJQVNPLG9EQUE2QixHQUFyQyxVQUNJLGFBQXNCLEVBQ3RCLFdBQW9CLEVBQ3BCLEtBQWM7UUFIbEIsaUJBK0JDO1FBMUJHLElBQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQyxJQUFNLGdCQUFnQixHQUFpQixFQUFFLENBQUM7UUFFMUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFDLFFBQVE7WUFDMUIsSUFBTSxNQUFNLEdBQXlCLEtBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFL0QsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDVCxPQUFPO2FBQ1Y7WUFFRCxJQUFJLENBQUMsQ0FBQyxhQUFhLElBQUksQ0FBQyxLQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxFQUFFO2dCQUNwRSxPQUFPO2FBQ1Y7WUFFRCxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxLQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxFQUFFO2dCQUM5RCxPQUFPO2FBQ1Y7WUFFRCxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDNUMsT0FBTzthQUNWO1lBRUQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztRQUVILE9BQU8sZ0JBQWdCLENBQUM7S0FDM0I7Ozs7Ozs7Ozs7SUFXRCwrQ0FBd0IsR0FBeEIsVUFBeUIsTUFBd0I7UUFDN0MsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLENBQ3hDLE1BQU0sQ0FBQyxhQUFhLEVBQ3BCLE1BQU0sQ0FBQyxXQUFXLEVBQ2xCLE1BQU0sQ0FBQyxjQUFjLEVBQ3JCLE1BQU0sQ0FBQyxRQUFRLEVBQ2YsTUFBTSxDQUFDLFFBQVEsRUFDZixNQUFNLENBQUMsS0FBSyxFQUNaLE1BQU0sQ0FBQyxNQUFNLEVBQ2IsTUFBTSxDQUFDLFlBQVksQ0FDdEIsQ0FBQztLQUNMOzs7Ozs7Ozs7O0lBV08sdURBQWdDLEdBQXhDLFVBQ0ksYUFBc0IsRUFDdEIsV0FBb0IsRUFDcEIsY0FBdUIsRUFDdkIsUUFBaUIsRUFDakIsUUFBaUIsRUFDakIsS0FBYyxFQUNkLE1BQWUsRUFDZixZQUFxQjtRQVJ6QixpQkFnRkM7UUF0RUcsSUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLElBQU0sbUJBQW1CLEdBQW9CO1lBQ3pDLFFBQVEsRUFBRSxFQUFFO1lBQ1osWUFBWSxFQUFFLEVBQUU7WUFDaEIsYUFBYSxFQUFFLEVBQUU7U0FDcEIsQ0FBQztRQUVGLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBQyxRQUFROztZQUUxQixJQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5RCxJQUFJLFFBQVEsS0FBSyxTQUFTLENBQUMsV0FBVyxFQUFFO2dCQUNwQyxPQUFPO2FBQ1Y7O1lBR0QsSUFBTSxNQUFNLEdBQUcsS0FBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNULE9BQU87YUFDVjtZQUVELElBQUksQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQ2pFLE9BQU87YUFDVjtZQUVELElBQUksQ0FBQyxDQUFDLGFBQWEsSUFBSSxDQUFDLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLEVBQUU7Z0JBQ3BFLE9BQU87YUFDVjtZQUVELElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEVBQUU7Z0JBQzlELE9BQU87YUFDVjtZQUVELElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUM1QyxPQUFPO2FBQ1Y7WUFFRCxJQUFJLENBQUMsQ0FBQyxjQUFjLElBQUksQ0FBQyxLQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUN2RSxPQUFPO2FBQ1Y7WUFFRCxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxLQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRTtnQkFDckQsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ3JELE9BQU87YUFDVjs7Ozs7WUFNRCxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDL0MsT0FBTzthQUNWO1lBRUQsUUFBUSxRQUFRO2dCQUNaLEtBQUssY0FBYyxDQUFDLFFBQVE7b0JBQ3hCLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUF1QixDQUFDO29CQUNqRSxNQUFNO2dCQUNWLEtBQUssY0FBYyxDQUFDLFlBQVk7b0JBQzVCLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUEyQixDQUFDO29CQUN6RSxNQUFNO2dCQUNWLEtBQUssY0FBYyxDQUFDLGFBQWE7b0JBQzdCLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUE0QixDQUFDO29CQUMzRSxNQUFNO2FBQ2I7U0FDSixDQUFDLENBQUM7UUFFSCxPQUFPLG1CQUFtQixDQUFDO0tBQzlCOzs7OztJQU1ELCtDQUF3QixHQUF4QixVQUF5QixNQUF5QjtRQUM5QyxPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsQ0FDeEMsTUFBTSxDQUFDLFdBQVcsRUFDbEIsTUFBTSxDQUFDLFFBQVEsQ0FDbEIsQ0FBQztLQUNMOzs7Ozs7SUFPTyx1REFBZ0MsR0FBeEMsVUFDSSxXQUFvQixFQUNwQixRQUFpQjtRQUZyQixpQkFrQ0M7UUE3QkcsSUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLElBQU0sbUJBQW1CLEdBQXFCLEVBQUUsQ0FBQztRQUVqRCxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQUMsUUFBUTs7WUFFMUIsSUFBSSxDQUFDLEtBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQy9CLE9BQU87YUFDVjs7WUFHRCxJQUFNLE1BQU0sR0FBRyxLQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRTdDLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1QsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsS0FBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsRUFBRTtnQkFDOUQsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ3JELE9BQU87YUFDVjtZQUVELG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQztTQUUxQyxDQUFDLENBQUM7UUFFSCxPQUFPLG1CQUFtQixDQUFDO0tBQzlCOzs7OztJQU1ELGtEQUEyQixHQUEzQixVQUE0QixJQUFZO1FBQXhDLGlCQTBCQztRQXpCRyxJQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFFekIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFDLFFBQVE7O1lBRTFCLElBQUksQ0FBQyxLQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQy9FLE9BQU87YUFDVjs7WUFHRCxJQUFNLE1BQU0sR0FBRyxLQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFbkQsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDVCxPQUFPO2FBQ1Y7WUFFRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUNyQyxPQUFPO2FBQ1Y7WUFFRCxhQUFhLEdBQUcsTUFBTSxDQUFDO1NBRTFCLENBQUMsQ0FBQztRQUVILE9BQU8sYUFBYSxDQUFDO0tBQ3hCOzs7O0lBS0Qsd0NBQWlCLEdBQWpCO1FBQUEsaUJBV0M7UUFWRyxJQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFDLFFBQVE7WUFDMUIsSUFBTSxNQUFNLEdBQUcsS0FBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNULE9BQU87YUFDVjtZQUNELEtBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDaEMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUM7S0FDZjs7Ozs7SUFNRCxvQ0FBYSxHQUFiLFVBQWMsVUFBa0I7UUFDNUIsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsTUFBTSxlQUFlLENBQUMseUJBQXlCLEVBQUUsQ0FBQztTQUNyRDtRQUNELFFBQVEsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBRTtLQUN2Rzs7Ozs7SUFNRCwyQ0FBb0IsR0FBcEIsVUFBcUIsT0FBc0I7UUFBM0MsaUJBa0JDO1FBakJHLElBQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQyxJQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUU5QyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQUMsUUFBUTs7WUFFMUIsSUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUQsSUFBSSxRQUFRLEtBQUssU0FBUyxDQUFDLFdBQVcsRUFBRTtnQkFDcEMsT0FBTzthQUNWO1lBRUQsSUFBTSxXQUFXLEdBQUcsS0FBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksU0FBUyxLQUFLLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO2dCQUNoRSxLQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDdEM7U0FDSixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQztLQUNmOzs7OztJQU1ELHVDQUFnQixHQUFoQixVQUFpQixVQUE0QjtRQUN6QyxJQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUMzRDs7OztJQUtELHdDQUFpQixHQUFqQjtRQUFBLGlCQVNDO1FBUkcsSUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBQyxRQUFRO1lBQzFCLElBQUksS0FBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDOUIsS0FBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQzNEO1NBQ0osQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUM7S0FDZjs7Ozs7Ozs7SUFTRCxzQ0FBZSxHQUFmLFVBQWdCLE9BQW9CLEVBQUUsUUFBZ0IsRUFBRSxNQUFnQixFQUFFLFdBQW1CO1FBQ3pGLElBQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RCxJQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLElBQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkYsSUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwRixJQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFL0UsSUFBSSxhQUFhLElBQUksYUFBYSxFQUFFO1lBQ2hDLGFBQWEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDO1NBQzdGO1FBRUQsT0FBTztZQUNILE9BQU8sRUFBRSxhQUFhO1lBQ3RCLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFdBQVcsRUFBRSxpQkFBaUI7WUFDOUIsWUFBWSxFQUFFLGtCQUFrQjtZQUNoQyxXQUFXLEVBQUUsaUJBQWlCO1NBQ2pDLENBQUM7S0FDTDs7Ozs7SUFNRCwyQ0FBb0IsR0FBcEIsVUFBcUIsT0FBb0I7UUFDckMsSUFBTSxVQUFVLEdBQVcsYUFBYSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUN0Qzs7Ozs7OztJQVFELDJDQUFvQixHQUFwQixVQUFxQixRQUFnQixFQUFFLE9BQW9CO1FBQ3ZELElBQU0sYUFBYSxHQUFxQjtZQUNwQyxhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7WUFDcEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLGNBQWMsRUFBRSxjQUFjLENBQUMsUUFBUTtZQUN2QyxRQUFRLEVBQUUsUUFBUTtZQUNsQixLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVE7U0FDMUIsQ0FBQztRQUVGLElBQU0sZUFBZSxHQUFvQixJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEYsSUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUMsR0FBRyxJQUFLLE9BQUEsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBQSxDQUFDLENBQUM7UUFDbkcsSUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUVwQyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDZjthQUFNLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRTtZQUN4QixNQUFNLGVBQWUsQ0FBQyx3Q0FBd0MsRUFBRSxDQUFDO1NBQ3BFO1FBRUQsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFrQixDQUFDO0tBQ3ZDOzs7Ozs7OztJQVNELCtDQUF3QixHQUF4QixVQUF5QixRQUFnQixFQUFFLE9BQW9CLEVBQUUsTUFBZ0I7UUFDN0UsSUFBTSxpQkFBaUIsR0FBcUI7WUFDeEMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ3BDLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztZQUNoQyxjQUFjLEVBQUUsY0FBYyxDQUFDLFlBQVk7WUFDM0MsUUFBUSxVQUFBO1lBQ1IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQ3ZCLE1BQU0sRUFBRSxNQUFNLENBQUMsb0JBQW9CLEVBQUU7U0FDeEMsQ0FBQztRQUVGLElBQU0sZUFBZSxHQUFvQixJQUFJLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMxRixJQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQyxHQUFHLElBQUssT0FBQSxlQUFlLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFBLENBQUMsQ0FBQztRQUUvRyxJQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQzVDLElBQUksZUFBZSxHQUFHLENBQUMsRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQztTQUNmO2FBQU0sSUFBSSxlQUFlLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLE1BQU0sZUFBZSxDQUFDLHdDQUF3QyxFQUFFLENBQUM7U0FDcEU7UUFFRCxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQXNCLENBQUM7S0FDL0M7Ozs7Ozs7SUFRRCxnREFBeUIsR0FBekIsVUFBMEIsUUFBZ0IsRUFBRSxPQUFvQixFQUFFLFFBQWlCO1FBQy9FLElBQU0sRUFBRSxHQUFHLFFBQVEsR0FBRyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQ2hELElBQU0sa0JBQWtCLEdBQXFCO1lBQ3pDLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYTtZQUNwQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDaEMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxhQUFhO1lBQzVDLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFFBQVEsRUFBRSxFQUFFO1NBQ2YsQ0FBQztRQUVGLElBQU0sZUFBZSxHQUFvQixJQUFJLENBQUMsd0JBQXdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMzRixJQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQyxHQUFHLElBQUssT0FBQSxlQUFlLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFBLENBQUMsQ0FBQztRQUVsSCxJQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDOUMsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUU7WUFDdEIsT0FBTyxJQUFJLENBQUM7U0FDZjs7UUFHRCxPQUFPLGFBQWEsQ0FBQyxDQUFDLENBQXVCLENBQUM7S0FDakQ7Ozs7SUFLRCwrQ0FBd0IsR0FBeEIsVUFBeUIsV0FBbUIsRUFBRSxRQUFnQjtRQUMxRCxJQUFNLGlCQUFpQixHQUFzQjtZQUN6QyxXQUFXLGFBQUE7WUFDWCxRQUFRLFVBQUE7U0FDWCxDQUFDO1FBRUYsSUFBTSxXQUFXLEdBQXFCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3ZGLElBQU0sa0JBQWtCLEdBQXdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUMsR0FBRyxJQUFLLE9BQUEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFBLENBQUMsQ0FBQztRQUV4RyxJQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFDakQsSUFBSSxjQUFjLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7YUFBTSxJQUFJLGNBQWMsR0FBRyxDQUFDLEVBQUU7WUFDM0IsTUFBTSxlQUFlLENBQUMsNkNBQTZDLEVBQUUsQ0FBQztTQUN6RTtRQUVELE9BQU8sa0JBQWtCLENBQUMsQ0FBQyxDQUFzQixDQUFDO0tBQ3JEOzs7Ozs7SUFPRCx3Q0FBaUIsR0FBakIsVUFBa0IsV0FBbUIsRUFBRSxRQUFnQjtRQUNuRCxJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sQ0FBQyxFQUFFLFdBQVcsSUFBSSxXQUFXLENBQUMsUUFBUSxLQUFLLGFBQWEsQ0FBQyxDQUFDO0tBQ3BFOzs7Ozs7SUFPTyx5Q0FBa0IsR0FBMUIsVUFBMkIsTUFBd0MsRUFBRSxhQUFxQjtRQUN0RixPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsYUFBYSxJQUFJLGFBQWEsS0FBSyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDN0U7Ozs7OztJQU9PLHdDQUFpQixHQUF6QixVQUEwQixNQUF3QyxFQUFFLFlBQW9CO1FBQ3BGLE9BQU8sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLElBQUksWUFBWSxLQUFLLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUMxRTs7Ozs7O0lBT08sdUNBQWdCLEdBQXhCLFVBQXlCLE1BQTRELEVBQUUsV0FBbUI7UUFDdEcsSUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BFLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUN6RSxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsT0FBTyxLQUFLLENBQUM7S0FDaEI7Ozs7OztJQU9PLDBDQUFtQixHQUEzQixVQUE0QixNQUF3QixFQUFFLGNBQXNCO1FBQ3hFLFFBQVEsTUFBTSxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtLQUMxRzs7Ozs7O0lBT08sb0NBQWEsR0FBckIsVUFBc0IsTUFBNEMsRUFBRSxRQUFnQjtRQUNoRixPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLFFBQVEsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDOUQ7Ozs7OztJQU9PLG9DQUFhLEdBQXJCLFVBQXNCLE1BQTRDLEVBQUUsUUFBZ0I7UUFDaEYsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxRQUFRLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQzlEOzs7Ozs7SUFPTyxpQ0FBVSxHQUFsQixVQUFtQixNQUF3QyxFQUFFLEtBQWE7UUFDdEUsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3JEOzs7Ozs7SUFPTyxrQ0FBVyxHQUFuQixVQUFvQixNQUF3QixFQUFFLE1BQWM7UUFDeEQsSUFBSSxNQUFNLENBQUMsY0FBYyxLQUFLLGNBQWMsQ0FBQyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ3pFLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsSUFBTSxjQUFjLEdBQWEsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEUsSUFBTSxxQkFBcUIsR0FBYSxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFO1lBQ2pELHFCQUFxQixDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDNUM7YUFBTTtZQUNILHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUNyRTtRQUNELE9BQU8sY0FBYyxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLENBQUM7S0FDakU7Ozs7O0lBTU8sb0NBQWEsR0FBckIsVUFBc0IsR0FBVztRQUM3QixPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDM0M7Ozs7O0lBTVMsMENBQW1CLEdBQTdCLFVBQThCLEdBQVc7UUFDckMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ3JFOzs7O0lBS0Qsd0RBQWlDLEdBQWpDLFVBQWtDLFNBQWlCO1FBQy9DLE9BQVUsNEJBQTRCLENBQUMsU0FBUyxTQUFJLElBQUksQ0FBQyxRQUFRLFNBQUksU0FBVyxDQUFDO0tBQ3BGOzs7Ozs7SUFPTyw0Q0FBcUIsR0FBN0IsVUFBOEIsR0FBVyxFQUFFLFFBQWdCO1FBQ3ZELFFBQVEsUUFBUTtZQUNaLEtBQUssY0FBYyxDQUFDLFFBQVEsRUFBRTtnQkFDMUIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekM7WUFDRCxLQUFLLGNBQWMsQ0FBQyxZQUFZLEVBQUU7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzdDO1lBQ0QsS0FBSyxjQUFjLENBQUMsYUFBYSxFQUFFO2dCQUMvQixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM5QztZQUNEO2dCQUNJLE9BQU8sSUFBSSxDQUFDO1NBQ25CO0tBQ0o7Ozs7OztJQU9NLHFCQUFRLEdBQWYsVUFBbUIsR0FBTSxFQUFFLElBQVk7UUFDbkMsS0FBSyxJQUFNLFlBQVksSUFBSSxJQUFJLEVBQUU7WUFDN0IsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMxQztRQUNELE9BQU8sR0FBRyxDQUFDO0tBQ2Q7SUFDTCxtQkFBQztBQUFELENBQUMsSUFBQTs7SUFFd0MsdUNBQVk7SUFBckQ7O0tBcUZDO0lBcEZHLHdDQUFVLEdBQVY7UUFDSSxJQUFNLFVBQVUsR0FBRywyRkFBMkYsQ0FBQztRQUMvRyxNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUNyRDtJQUNELHdDQUFVLEdBQVY7UUFDSSxJQUFNLFVBQVUsR0FBRywyRkFBMkYsQ0FBQztRQUMvRyxNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUNyRDtJQUNELGtEQUFvQixHQUFwQjtRQUNJLElBQU0sVUFBVSxHQUFHLHFHQUFxRyxDQUFDO1FBQ3pILE1BQU0sU0FBUyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0Qsa0RBQW9CLEdBQXBCO1FBQ0ksSUFBTSxVQUFVLEdBQUcscUdBQXFHLENBQUM7UUFDekgsTUFBTSxTQUFTLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDckQ7SUFDRCxzREFBd0IsR0FBeEI7UUFDSSxJQUFNLFVBQVUsR0FBRyx5R0FBeUcsQ0FBQztRQUM3SCxNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUNyRDtJQUNELHNEQUF3QixHQUF4QjtRQUNJLElBQU0sVUFBVSxHQUFHLHlHQUF5RyxDQUFDO1FBQzdILE1BQU0sU0FBUyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0QsdURBQXlCLEdBQXpCO1FBQ0ksSUFBTSxVQUFVLEdBQUcsMEdBQTBHLENBQUM7UUFDOUgsTUFBTSxTQUFTLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDckQ7SUFDRCx1REFBeUIsR0FBekI7UUFDSSxJQUFNLFVBQVUsR0FBRywwR0FBMEcsQ0FBQztRQUM5SCxNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUNyRDtJQUNELDRDQUFjLEdBQWQ7UUFDSSxJQUFNLFVBQVUsR0FBRywrRkFBK0YsQ0FBQztRQUNuSCxNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUNyRDtJQUNELDRDQUFjLEdBQWQ7UUFDSSxJQUFNLFVBQVUsR0FBRywrRkFBK0YsQ0FBQztRQUNuSCxNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUNyRDtJQUNELGdEQUFrQixHQUFsQjtRQUNJLElBQU0sVUFBVSxHQUFHLG1HQUFtRyxDQUFDO1FBQ3ZILE1BQU0sU0FBUyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0QsZ0RBQWtCLEdBQWxCO1FBQ0ksSUFBTSxVQUFVLEdBQUcsbUdBQW1HLENBQUM7UUFDdkgsTUFBTSxTQUFTLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDckQ7SUFDRCxrREFBb0IsR0FBcEI7UUFDSSxJQUFNLFVBQVUsR0FBRyxxR0FBcUcsQ0FBQztRQUN6SCxNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUNyRDtJQUNELGtEQUFvQixHQUFwQjtRQUNJLElBQU0sVUFBVSxHQUFHLHFHQUFxRyxDQUFDO1FBQ3pILE1BQU0sU0FBUyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0Qsc0RBQXdCLEdBQXhCO1FBQ0ksSUFBTSxVQUFVLEdBQUcseUdBQXlHLENBQUM7UUFDN0gsTUFBTSxTQUFTLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDckQ7SUFDRCxnREFBa0IsR0FBbEI7UUFDSSxJQUFNLFVBQVUsR0FBRyxtR0FBbUcsQ0FBQztRQUN2SCxNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUNyRDtJQUNELGdEQUFrQixHQUFsQjtRQUNJLElBQU0sVUFBVSxHQUFHLG1HQUFtRyxDQUFDO1FBQ3ZILE1BQU0sU0FBUyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0Qsd0NBQVUsR0FBVjtRQUNJLElBQU0sVUFBVSxHQUFHLDJGQUEyRixDQUFDO1FBQy9HLE1BQU0sU0FBUyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0QseUNBQVcsR0FBWDtRQUNJLElBQU0sVUFBVSxHQUFHLDRGQUE0RixDQUFDO1FBQ2hILE1BQU0sU0FBUyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0QscUNBQU8sR0FBUDtRQUNJLElBQU0sVUFBVSxHQUFHLHdGQUF3RixDQUFDO1FBQzVHLE1BQU0sU0FBUyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0QsbUNBQUssR0FBTDtRQUNJLElBQU0sVUFBVSxHQUFHLHNGQUFzRixDQUFDO1FBQzFHLE1BQU0sU0FBUyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0wsMEJBQUM7QUFBRCxDQXJGQSxDQUF5QyxZQUFZOztBQ3QyQnJEOzs7O0FBaUJBO0FBQ0EsSUFBTSxnQ0FBZ0MsR0FBRyxHQUFHLENBQUM7QUFzRzdDLElBQWEsc0JBQXNCLEdBQTRCO0lBQzNELHlCQUF5QixFQUFFLGdDQUFnQztDQUM5RCxDQUFDO0FBRUYsSUFBTSw2QkFBNkIsR0FBNEI7SUFDM0QsY0FBYyxFQUFFOztLQUVmO0lBQ0QsaUJBQWlCLEVBQUUsS0FBSztJQUN4QixRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUk7Q0FDMUIsQ0FBQztBQUVGLElBQU0sOEJBQThCLEdBQW1CO0lBQzdDLG1CQUFtQixFQUF6Qjs7OztnQkFDVSxVQUFVLEdBQUcsb0VBQW9FLENBQUM7Z0JBQ3hGLE1BQU0sU0FBUyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDOzs7S0FDckQ7SUFDSyxvQkFBb0IsRUFBMUI7Ozs7Z0JBQ1UsVUFBVSxHQUFHLHFFQUFxRSxDQUFDO2dCQUN6RixNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQzs7O0tBQ3JEO0NBQ0osQ0FBQztBQUVGLElBQU0sb0JBQW9CLEdBQWdCO0lBQ3RDLEdBQUcsRUFBRSxTQUFTLENBQUMsR0FBRztJQUNsQixPQUFPLEVBQUUsT0FBTztJQUNoQixHQUFHLEVBQUUsRUFBRTtJQUNQLEVBQUUsRUFBRSxFQUFFO0NBQ1QsQ0FBQztBQUVGLElBQU0sMEJBQTBCLEdBQXNCO0lBQ2xELFlBQVksRUFBRSxFQUFFO0lBQ2hCLGVBQWUsRUFBRSxTQUFTO0NBQzdCLENBQUM7QUFFRjs7Ozs7OztBQU9BLFNBQWdCLHdCQUF3QixDQUNwQyxFQVlzQjtRQVhsQixnQ0FBNEIsRUFDNUIsb0NBQWdDLEVBQ2hDLG1DQUErQixFQUMvQiwyQ0FBdUMsRUFDdkMsMkNBQXVDLEVBQ3ZDLHlDQUFxQyxFQUNyQyx3Q0FBb0MsRUFDcEMsNEJBQXdCLEVBQ3hCLGtEQUE4QyxFQUM5Qyx3Q0FBb0MsRUFDcEMsd0NBQW9DO0lBR3hDLE9BQU87UUFDSCxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsZUFBZSxDQUFDO1FBQzlDLGFBQWEsd0JBQU8sc0JBQXNCLEdBQUssaUJBQWlCLENBQUU7UUFDbEUsYUFBYSx3QkFBTyw2QkFBNkIsR0FBSyxnQkFBZ0IsQ0FBRTtRQUN4RSxnQkFBZ0IsRUFBRSxxQkFBcUIsSUFBSSxJQUFJLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsNkJBQTZCLENBQUM7UUFDM0gsZ0JBQWdCLEVBQUUscUJBQXFCLElBQUksOEJBQThCO1FBQ3pFLGVBQWUsRUFBRSxvQkFBb0IsSUFBSSw2QkFBNkI7UUFDdEUsaUJBQWlCLEVBQUUsaUJBQWlCLElBQUksMEJBQTBCO1FBQ2xFLFdBQVcsd0JBQU8sb0JBQW9CLEdBQUssV0FBVyxDQUFFO1FBQ3hELHNCQUFzQixFQUFFLHNCQUFzQixJQUFJLElBQUk7UUFDdEQsaUJBQWlCLEVBQUUsaUJBQWlCLElBQUksSUFBSTtRQUM1QyxpQkFBaUIsRUFBRSxpQkFBaUIsSUFBSSxJQUFJO0tBQy9DLENBQUM7QUFDTixDQUFDO0FBRUQ7Ozs7QUFJQSxTQUFTLGdCQUFnQixDQUFDLFdBQXdCO0lBQzlDLGtCQUNJLGtCQUFrQixFQUFFLEVBQUUsSUFDbkIsV0FBVyxFQUNoQjtBQUNOLENBQUM7O0FDek1EOzs7O0FBT0E7OztBQUdBO0lBQWlDLCtCQUFTO0lBRXRDLHFCQUFZLFNBQWtCLEVBQUUsWUFBcUIsRUFBRSxRQUFpQjtRQUF4RSxZQUNJLGtCQUFNLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLFNBSTNDO1FBSEcsS0FBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUM7UUFFMUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFJLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDOztLQUN0RDtJQUNMLGtCQUFDO0FBQUQsQ0FSQSxDQUFpQyxTQUFTOztBQ1YxQzs7OztBQU9BO0lBTUE7S0ErRkM7Ozs7O0lBekZVLDRDQUE0QixHQUFuQyxVQUFvQyxVQUE2QjtRQUM3RCxPQUFVLG1CQUFtQixDQUFDLGlCQUFpQixTQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFHLENBQUM7S0FDbkY7Ozs7OztJQU9NLDBCQUFVLEdBQWpCLFVBQWtCLFlBQTBCLEVBQUUsVUFBNkI7O1FBQ3ZFLElBQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRSxJQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbkQsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3pELE9BQU87YUFDVjtZQUNELE1BQU0sSUFBSSxXQUFXLENBQUMsT0FBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxJQUFJLENBQUMsR0FBRyxNQUFLLFNBQVMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDcEg7S0FDSjs7Ozs7OztJQVFNLDJCQUFXLEdBQWxCLFVBQW1CLFlBQTBCLEVBQUUsVUFBNkIsRUFBRSxRQUEyRDtRQUNySSxJQUFJLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxlQUFlLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDdkcsSUFBTSxlQUFlLEdBQXFCO2dCQUN0QyxZQUFZLEVBQUUsZUFBZSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUN4RyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLO2dCQUMxQixVQUFVLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXO2dCQUNyQyxZQUFZLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7Z0JBQzdDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVE7YUFDbkMsQ0FBQztZQUNGLFlBQVksQ0FBQyxrQkFBa0IsQ0FDM0IsZUFBZSxDQUFDLDRCQUE0QixDQUFDLFVBQVUsQ0FBQyxFQUN4RCxlQUFlLENBQ2xCLENBQUM7U0FDTDtLQUNKOzs7OztJQU1NLG1DQUFtQixHQUExQixVQUEyQixRQUEyRDtRQUNsRixPQUFPLFFBQVEsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO0tBQ3JGOzs7OztJQU1NLDBDQUEwQixHQUFqQyxVQUFrQyxRQUEyRDtRQUN6RixJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUU7WUFDbEIsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQztTQUN4SDtRQUNELE9BQU8sS0FBSyxDQUFDO0tBQ2hCOzs7OztJQU1NLHFDQUFxQixHQUE1QixVQUE2QixZQUFvQjtRQUM3QyxJQUFHLFlBQVksSUFBSSxDQUFDLEVBQUU7WUFDbEIsWUFBWSxHQUFHLENBQUMsQ0FBQztTQUNwQjtRQUNELElBQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ3RCLGNBQWMsSUFBSSxZQUFZLElBQUksbUJBQW1CLENBQUMsNkJBQTZCLENBQUMsRUFDcEYsY0FBYyxHQUFHLG1CQUFtQixDQUFDLGlDQUFpQyxDQUN6RSxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ2I7SUFFTSw4QkFBYyxHQUFyQixVQUFzQixZQUEwQixFQUFFLFFBQWdCLEVBQUUsU0FBaUIsRUFBRSxNQUFxQixFQUFFLHFCQUE4QjtRQUN4SSxJQUFNLFVBQVUsR0FBc0I7WUFDbEMsUUFBUSxVQUFBO1lBQ1IsU0FBUyxXQUFBO1lBQ1QsTUFBTSxRQUFBO1lBQ04scUJBQXFCLHVCQUFBO1NBQ3hCLENBQUM7UUFFRixJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUQsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDbkU7SUFDTCxzQkFBQztBQUFELENBQUM7O0FDNUdEOzs7OztJQXNCSSx3QkFBWSxhQUE2QixFQUFFLFlBQTBCO1FBQ2pFLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0tBQ3BDOzs7Ozs7O0lBUUssd0NBQWUsR0FBckIsVUFBeUIsVUFBNkIsRUFBRSxhQUFxQixFQUFFLE9BQThCOzs7Ozs7d0JBQ3pHLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQzs7Ozt3QkFJM0MscUJBQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBSSxhQUFhLEVBQUUsT0FBTyxDQUFDLEVBQUE7O3dCQUFuRixRQUFRLEdBQUcsU0FBd0UsQ0FBQzs7Ozt3QkFFcEYsSUFBSSxHQUFDLFlBQVksU0FBUyxFQUFFOzRCQUN4QixNQUFNLEdBQUMsQ0FBQzt5QkFDWDs2QkFBTTs0QkFDSCxNQUFNLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsR0FBQyxDQUFDLENBQUM7eUJBQzlEOzt3QkFHTCxlQUFlLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO3dCQUVyRSxzQkFBTyxRQUFRLEVBQUM7Ozs7S0FDbkI7SUFDTCxxQkFBQztBQUFELENBQUM7O0FDbkREOzs7O0FBbUJBOzs7QUFHQTtJQXlCSSxvQkFBc0IsYUFBa0M7O1FBRXBELElBQUksQ0FBQyxNQUFNLEdBQUcsd0JBQXdCLENBQUMsYUFBYSxDQUFDLENBQUM7O1FBR3RELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDOztRQUduRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDOztRQUcvQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7O1FBR2pELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQzs7UUFHbEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzs7UUFHaEYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUM7O1FBR2pFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO0tBQ3REOzs7O0lBS1MscURBQWdDLEdBQTFDO1FBQ0ksSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsR0FBRyxTQUFTLENBQUMscUJBQXFCLENBQUM7UUFDcEUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQztRQUVqRixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUM3QixPQUFPLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGlDQUFpQyxFQUFFLENBQUM7WUFDM0csT0FBTyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1NBQzNHO1FBRUQsT0FBTyxPQUFPLENBQUM7S0FDbEI7Ozs7SUFLUyxnREFBMkIsR0FBckM7UUFDSSxJQUFNLE9BQU8sR0FBMkIsRUFBRSxDQUFDOztRQUczQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1FBQ3ZFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDM0UsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUNyRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1FBRXZFLE9BQU8sT0FBTyxDQUFDO0tBQ2xCOzs7Ozs7OztJQVNlLCtDQUEwQixHQUExQyxVQUEyQyxhQUFxQixFQUFFLFdBQW1CLEVBQUUsT0FBK0IsRUFBRSxVQUE2Qjs7Ozs7NEJBQ2hJLHFCQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUN0RCxVQUFVLEVBQ1YsYUFBYSxFQUNiLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQzFDLEVBQUE7O3dCQUpLLFFBQVEsR0FBRyxTQUloQjt3QkFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7OzRCQUV4RixJQUFJLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixFQUFFLENBQUM7eUJBQzVEO3dCQUVELHNCQUFPLFFBQVEsRUFBQzs7OztLQUNuQjs7Ozs7SUFNRCxvQ0FBZSxHQUFmLFVBQWdCLGdCQUEyQjtRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtZQUN2QyxNQUFNLGVBQWUsQ0FBQyxzQ0FBc0MsQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO1NBQzNIO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztLQUNyQztJQUNMLGlCQUFDO0FBQUQsQ0FBQyxJQUFBOztBQ3hJRDs7OztBQUtBLEFBS0E7OztBQUdBO0lBQUE7S0FtRkM7Ozs7O0lBN0VVLG9DQUFtQixHQUExQixVQUEyQixXQUFtQjtRQUMxQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDbEMsTUFBTSx3QkFBd0IsQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1NBQ2hFO0tBQ0o7Ozs7O0lBTU0sK0JBQWMsR0FBckIsVUFBc0IsTUFBYztRQUNoQyxJQUNJO1lBQ0ksV0FBVyxDQUFDLEtBQUs7WUFDakIsV0FBVyxDQUFDLGNBQWM7WUFDMUIsV0FBVyxDQUFDLE9BQU87WUFDbkIsV0FBVyxDQUFDLElBQUk7U0FDbkIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUN2QjtZQUNFLE1BQU0sd0JBQXdCLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbkU7S0FDSjtJQUVNLCtCQUFjLEdBQXJCLFVBQXNCLE1BQWM7UUFDaEMsSUFBSTtZQUNBLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdEI7UUFBQyxPQUFNLENBQUMsRUFBRTtZQUNQLE1BQU0sd0JBQXdCLENBQUMsK0JBQStCLEVBQUUsQ0FBQztTQUNwRTtLQUNKOzs7Ozs7SUFPTSw0Q0FBMkIsR0FBbEMsVUFBbUMsYUFBcUIsRUFBRSxtQkFBMkI7UUFDakYsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsRUFBRTtZQUNoRixNQUFNLHdCQUF3QixDQUFDLHFDQUFxQyxFQUFFLENBQUM7U0FDMUU7YUFBTTtZQUNILElBQUksQ0FBQywyQkFBMkIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3pEO0tBQ0o7Ozs7O0lBTU0sNENBQTJCLEdBQWxDLFVBQW1DLG1CQUEyQjtRQUMxRCxJQUNJO1lBQ0kseUJBQXlCLENBQUMsS0FBSztZQUMvQix5QkFBeUIsQ0FBQyxJQUFJO1NBQ2pDLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUNwQztZQUNFLE1BQU0sd0JBQXdCLENBQUMscUNBQXFDLEVBQUUsQ0FBQztTQUMxRTtLQUNKOzs7OztJQU1NLGlDQUFnQixHQUF2QixVQUF3QixRQUFvQixFQUFFLFdBQWdDO1FBQzFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDWCxPQUFPLEVBQUUsQ0FBQztTQUNiOztRQUdELFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBQyxLQUFLLEVBQUUsR0FBRztZQUMzQixJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDZixPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN4QjtTQUNKLENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDO0tBQ25CO0lBQ0wsdUJBQUM7QUFBRCxDQUFDLElBQUE7O0FDaEdEOzs7O0FBYUE7SUFJSTtRQUNJLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7S0FDL0M7Ozs7SUFLRCxxREFBbUIsR0FBbkI7UUFDSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDZixrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQ3JGLENBQUM7S0FDTDs7Ozs7SUFNRCxpREFBZSxHQUFmLFVBQWdCLFlBQTJCO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUNmLGtCQUFrQixDQUFDLGFBQWEsRUFDaEMsa0JBQWtCLENBQUMsQ0FBQyxZQUFZLElBQUksWUFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FDekUsQ0FBQztLQUNMOzs7Ozs7SUFPRCwyQ0FBUyxHQUFULFVBQVUsTUFBZ0IsRUFBRSxhQUE2QjtRQUE3Qiw4QkFBQSxFQUFBLG9CQUE2QjtRQUNyRCxJQUFNLGFBQWEsR0FBRyxhQUFhLGtCQUFPLE1BQU0sSUFBSSxFQUFFLEVBQUssbUJBQW1CLElBQUksTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUMvRixJQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUM3Rjs7Ozs7SUFNRCw2Q0FBVyxHQUFYLFVBQVksUUFBZ0I7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7S0FDbkY7Ozs7O0lBTUQsZ0RBQWMsR0FBZCxVQUFlLFdBQW1CO1FBQzlCLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0tBQ3pGOzs7OztJQU1ELDBEQUF3QixHQUF4QixVQUF5QixXQUFtQjtRQUN4QyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztLQUM1Rjs7Ozs7SUFNRCxnREFBYyxHQUFkLFVBQWUsV0FBbUI7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7S0FDMUY7Ozs7O0lBTUQsK0NBQWEsR0FBYixVQUFjLFVBQWtCO1FBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztLQUM3RTs7Ozs7SUFNRCw4Q0FBWSxHQUFaLFVBQWEsU0FBaUI7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0tBQzNFOzs7OztJQU1ELHdDQUFNLEdBQU4sVUFBTyxHQUFXO1FBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQzlEOzs7OztJQU1ELDJDQUFTLEdBQVQsVUFBVSxNQUFlLEVBQUUsa0JBQWtDO1FBQ3pELElBQU0sWUFBWSxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUNwRixnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7S0FDcEY7Ozs7O0lBTUQsa0RBQWdCLEdBQWhCLFVBQWlCLGFBQXFCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7S0FDaEc7Ozs7O0lBTUQsZ0RBQWMsR0FBZCxVQUFlLFdBQXdCOztRQUVuQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3pFOzs7OztJQU1ELDJDQUFTLEdBQVQsVUFBVSxNQUFjO1FBQ3BCLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFHLGtCQUFrQixDQUFDLE1BQVEsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0tBQ25GOzs7OztJQU1ELDBDQUFRLEdBQVIsVUFBUyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQzVFO0tBQ0o7Ozs7O0lBTUQsMENBQVEsR0FBUixVQUFTLEtBQWE7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDNUU7Ozs7Ozs7SUFRRCx3REFBc0IsR0FBdEIsVUFDSSxhQUFxQixFQUNyQixtQkFBMkI7UUFFM0IsZ0JBQWdCLENBQUMsMkJBQTJCLENBQUMsYUFBYSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDakYsSUFBSSxhQUFhLElBQUksbUJBQW1CLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDMUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1NBQzFHO2FBQU07WUFDSCxNQUFNLHdCQUF3QixDQUFDLHFDQUFxQyxFQUFFLENBQUM7U0FDMUU7S0FDSjs7Ozs7SUFNRCxzREFBb0IsR0FBcEIsVUFBcUIsSUFBWTtRQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUMxRTs7Ozs7SUFNRCwrQ0FBYSxHQUFiLFVBQWMsSUFBWTtRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUNqRjs7Ozs7SUFNRCxpREFBZSxHQUFmLFVBQWdCLFlBQW9CO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0tBQzNGOzs7OztJQU1ELGlEQUFlLEdBQWYsVUFBZ0IsWUFBb0I7UUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7S0FDM0Y7Ozs7O0lBTUQsaURBQWUsR0FBZixVQUFnQixZQUFvQjtRQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztLQUMzRjs7Ozs7SUFNRCxvREFBa0IsR0FBbEIsVUFBbUIsZUFBdUI7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztLQUNqRzs7Ozs7SUFNRCx3REFBc0IsR0FBdEIsVUFBdUIsbUJBQTJCO1FBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixFQUFFLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztLQUMxRzs7Ozs7SUFNRCxpREFBZSxHQUFmLFVBQWdCLFlBQW9CO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0tBQzNGOzs7OztJQU1ELG9EQUFrQixHQUFsQixVQUFtQixRQUFnQjtRQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0tBQzdGOzs7OztJQU1ELDhDQUFZLEdBQVosVUFBYSxTQUFpQjtRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUNyRjs7Ozs7SUFNRCwrQ0FBYSxHQUFiO1FBQ0ksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3hDOzs7OztJQU1ELHlEQUF1QixHQUF2QixVQUF3QixRQUFvQjtRQUE1QyxpQkFLQztRQUpHLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0QsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQyxHQUFHO1lBQzlCLEtBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMzQyxDQUFDLENBQUM7S0FDTjtJQUVELCtEQUE2QixHQUE3QixVQUE4QixNQUFlLEVBQUUsa0JBQWtDO1FBQzdFLElBQUksWUFBb0IsQ0FBQzs7UUFHekIsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULFlBQVksR0FBRyxFQUFFLENBQUM7U0FDckI7YUFBTTtZQUNILElBQUk7Z0JBQ0EsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDckM7WUFBQyxPQUFNLENBQUMsRUFBRTtnQkFDUCxNQUFNLHdCQUF3QixDQUFDLCtCQUErQixFQUFFLENBQUM7YUFDcEU7U0FDSjtRQUVELElBQUksa0JBQWtCLElBQUksa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsRUFBQzs7Z0JBRTdELFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDckQ7O1lBR0QsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxHQUFHO2dCQUNyRSxNQUFNLEVBQUUsa0JBQWtCO2FBQzdCLENBQUM7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUN2Qzs7Ozs7SUFNRCw2Q0FBVyxHQUFYLFVBQVksUUFBZ0I7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQ2xFOzs7OztJQU1ELDZDQUFXLEdBQVgsVUFBWSxRQUFnQjtRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDbEU7Ozs7O0lBTUQsNkNBQVcsR0FBWCxVQUFZLFNBQWlCO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3RSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUNsRjtLQUNKOzs7O0lBS0QsbURBQWlCLEdBQWpCO1FBQ0ksSUFBTSxtQkFBbUIsR0FBa0IsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUUvRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFDLEtBQUssRUFBRSxHQUFHO1lBQy9CLG1CQUFtQixDQUFDLElBQUksQ0FBSSxHQUFHLFNBQUksS0FBTyxDQUFDLENBQUM7U0FDL0MsQ0FBQyxDQUFDO1FBRUgsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDeEM7SUFDTCw4QkFBQztBQUFELENBQUMsSUFBQTs7QUNqV0Q7Ozs7QUFRQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkE7SUFBbUMsaUNBQWdCO0lBQW5EOztLQW1EQzs7Ozs7Ozs7SUF6Q1UsaUNBQW1CLEdBQTFCLFVBQ0ksYUFBcUIsRUFDckIsV0FBbUIsRUFDbkIsT0FBZSxFQUNmLFFBQWdCLEVBQ2hCLFFBQWdCLEVBQ2hCLFlBQXFCO1FBRXJCLElBQU0sYUFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFFMUMsYUFBYSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQ3ZELGFBQWEsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQzVDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQ3hDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ2xDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1FBQy9CLGFBQWEsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQy9CLGFBQWEsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBRTFDLE9BQU8sYUFBYSxDQUFDO0tBQ3hCOzs7OztJQU1NLDZCQUFlLEdBQXRCLFVBQXVCLE1BQWM7UUFFakMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsUUFDSSxNQUFNLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQztZQUN0QyxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQztZQUNwQyxNQUFNLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDO1lBQ3ZDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLGNBQWMsQ0FBQyxRQUFRLEVBQ3REO0tBQ0w7SUFDTCxvQkFBQztBQUFELENBbkRBLENBQW1DLGdCQUFnQjs7QUN6Qm5EOzs7O0FBS0E7OztBQUdBO0lBQUE7S0FzQkM7Ozs7SUFqQlUsb0JBQVUsR0FBakI7O1FBRUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7S0FDcEQ7Ozs7O0lBTU0sd0JBQWMsR0FBckIsVUFBc0IsU0FBaUIsRUFBRSxNQUFjOztRQUVuRCxJQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLElBQU0sb0JBQW9CLEdBQUcsU0FBUyxDQUFDLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQzs7UUFHN0QsUUFBUSxvQkFBb0IsR0FBRyxhQUFhLEVBQUU7S0FDakQ7SUFDTCxnQkFBQztBQUFELENBQUM7O0FDOUJEOzs7O0FBVUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCQTtJQUF1QyxxQ0FBZ0I7SUFBdkQ7O0tBZ0ZDOzs7Ozs7Ozs7Ozs7SUEzRFUseUNBQXVCLEdBQTlCLFVBQ0ksYUFBcUIsRUFDckIsV0FBbUIsRUFDbkIsV0FBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsTUFBYyxFQUNkLFNBQWlCLEVBQ2pCLFlBQW9CLEVBQ3BCLFNBQWtCLEVBQ2xCLFlBQXFCO1FBRXJCLElBQU0sUUFBUSxHQUFzQixJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFFNUQsUUFBUSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDdkMsUUFBUSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDO1FBQ3RELFFBQVEsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDO1FBRTlCLElBQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzQyxRQUFRLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQzs7Ozs7UUFNM0MsUUFBUSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUMsUUFBUSxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVyRCxRQUFRLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUNuQyxRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUM3QixRQUFRLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUMxQixRQUFRLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN6QixRQUFRLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUVyQyxRQUFRLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUM5RixPQUFPLFFBQVEsQ0FBQztLQUNuQjs7Ozs7SUFNTSxxQ0FBbUIsR0FBMUIsVUFBMkIsTUFBYztRQUVyQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxRQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUM7WUFDdkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7WUFDOUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7WUFDakMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7WUFDL0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7WUFDL0IsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssY0FBYyxDQUFDLFlBQVksRUFDMUQ7S0FDTDtJQUNMLHdCQUFDO0FBQUQsQ0FoRkEsQ0FBdUMsZ0JBQWdCOztBQ2xDdkQ7Ozs7QUFRQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQTtJQUF3QyxzQ0FBZ0I7SUFBeEQ7O0tBb0RDOzs7Ozs7OztJQTFDVSwyQ0FBd0IsR0FBL0IsVUFDSSxhQUFxQixFQUNyQixXQUFtQixFQUNuQixZQUFvQixFQUNwQixRQUFnQixFQUNoQixRQUFpQixFQUNqQixZQUFxQjtRQUVyQixJQUFNLFFBQVEsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFFMUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDN0IsUUFBUSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO1FBQ3ZELFFBQVEsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQ25DLFFBQVEsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3ZDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDO1FBQy9CLFFBQVEsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBRXJDLElBQUksUUFBUTtZQUNSLFFBQVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBRWpDLE9BQU8sUUFBUSxDQUFDO0tBQ25COzs7OztJQU1NLHVDQUFvQixHQUEzQixVQUE0QixNQUFjO1FBRXRDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELFFBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUM7WUFDdEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7WUFDcEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN2QyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztZQUNqQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztZQUMvQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxjQUFjLENBQUMsYUFBYSxFQUMzRDtLQUNMO0lBQ0wseUJBQUM7QUFBRCxDQXBEQSxDQUF3QyxnQkFBZ0I7O0FDM0J4RDs7OztBQU9BOzs7QUFHQSxBQUFPLElBQU0sbUNBQW1DLEdBQUc7SUFDL0Msc0JBQXNCO0lBQ3RCLGtCQUFrQjtJQUNsQixnQkFBZ0I7Q0FDbkIsQ0FBQztBQUVGLEFBQU8sSUFBTSxzQ0FBc0MsR0FBRztJQUNsRCxjQUFjO0lBQ2QsbUJBQW1CO0lBQ25CLGNBQWM7SUFDZCx1QkFBdUI7SUFDdkIsa0JBQWtCO0NBQ3JCLENBQUM7QUFFRjs7O0FBR0E7SUFBa0QsZ0RBQVc7SUFFekQsc0NBQVksU0FBa0IsRUFBRSxZQUFxQixFQUFFLFFBQWlCO1FBQXhFLFlBQ0ksa0JBQU0sU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsU0FJM0M7UUFIRyxLQUFJLENBQUMsSUFBSSxHQUFHLDhCQUE4QixDQUFDO1FBRTNDLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSSxFQUFFLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxDQUFDOztLQUN2RTtJQUVNLHVEQUEwQixHQUFqQyxVQUFrQyxTQUFrQixFQUFFLFdBQW9CLEVBQUUsUUFBaUI7UUFDekYsSUFBTSw4QkFBOEIsR0FBRyxDQUFDLENBQUMsU0FBUyxJQUFJLG1DQUFtQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsSCxJQUFNLDZCQUE2QixHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksc0NBQXNDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xILElBQU0sOEJBQThCLEdBQUcsQ0FBQyxDQUFDLFdBQVcsSUFBSSxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxXQUFXO1lBQ3pHLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNoRCxDQUFDLENBQUM7UUFFSCxPQUFPLDhCQUE4QixJQUFJLDhCQUE4QixJQUFJLDZCQUE2QixDQUFDO0tBQzVHO0lBQ0wsbUNBQUM7QUFBRCxDQWxCQSxDQUFrRCxXQUFXOztBQzNCN0Q7Ozs7QUFXQTtJQU9JLHFCQUFZLGFBQW9DLEVBQUUsYUFBb0MsRUFBRSxpQkFBNEMsRUFBRSxrQkFBOEMsRUFBRSxpQkFBNEM7UUFDOU4sSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLElBQUksSUFBSSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxJQUFJLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLGlCQUFpQixJQUFJLElBQUksQ0FBQztRQUM3QyxJQUFJLENBQUMsWUFBWSxHQUFHLGtCQUFrQixJQUFJLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLGlCQUFpQixJQUFJLElBQUksQ0FBQztLQUNoRDtJQUNMLGtCQUFDO0FBQUQsQ0FBQyxJQUFBOztBQ3pCRDs7OztBQUtBLEFBeUJBOzs7QUFHQTtJQUFBO0tBaUVDOzs7Ozs7SUExRFUsNkJBQWUsR0FBdEIsVUFBdUIsU0FBa0IsRUFBRSxTQUFrQixFQUFFLElBQTZCO1FBQ3hGLElBQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBRyxZQUFZLEdBQUcsU0FBUyxDQUFDLGNBQWMsR0FBRyxTQUFXLEdBQUcsWUFBWSxDQUFDO0tBQ3BIOzs7Ozs7SUFPTSxrQ0FBb0IsR0FBM0IsVUFBNEIsU0FBa0IsRUFBRSxJQUE2QjtRQUN6RSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ1osTUFBTSxlQUFlLENBQUMseUJBQXlCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUMzRTs7UUFHRCxJQUFNLFFBQVEsR0FBdUI7WUFDakMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxhQUFhLEVBQUU7U0FDaEMsQ0FBQztRQUVGLElBQUksSUFBSSxFQUFFO1lBQ04sUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDeEI7UUFFRCxJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdDLE9BQU8sU0FBUyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUM5Qzs7Ozs7O0lBT00sK0JBQWlCLEdBQXhCLFVBQXlCLFNBQWtCLEVBQUUsS0FBYTtRQUN0RCxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ1osTUFBTSxlQUFlLENBQUMseUJBQXlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUN4RTtRQUVELElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM1QixNQUFNLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQztTQUMxRjtRQUVELElBQUk7O1lBRUEsSUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM3RSxJQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsSUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsRyxJQUFNLGtCQUFrQixHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDaEUsSUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBdUIsQ0FBQztZQUM3RSxPQUFPO2dCQUNILGdCQUFnQixFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLEdBQUcsRUFBRTtnQkFDbEUsWUFBWSxFQUFFLGVBQWU7YUFDaEMsQ0FBQztTQUNMO1FBQUMsT0FBTSxDQUFDLEVBQUU7WUFDUCxNQUFNLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDM0Q7S0FDSjtJQUNMLG9CQUFDO0FBQUQsQ0FBQzs7QUNsR0Q7Ozs7QUFNQSxBQU1BOzs7QUFHQTtJQVFJLG1CQUFZLEdBQVc7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDdEIsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTs7WUFFdEMsTUFBTSx3QkFBd0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQ3hEO1FBRUQsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwRDtLQUNKO0lBZEQsc0JBQVcsZ0NBQVM7YUFBcEI7WUFDSSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDMUI7OztPQUFBOzs7OztJQWtCTSx5QkFBZSxHQUF0QixVQUF1QixHQUFXO1FBQzlCLElBQUksR0FBRyxFQUFFO1lBQ0wsR0FBRyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV4QixJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNoQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMxQjtpQkFBTSxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUN4QyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMxQjtZQUVELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDakMsR0FBRyxJQUFJLEdBQUcsQ0FBQzthQUNkO1NBQ0o7UUFFRCxPQUFPLEdBQUcsQ0FBQztLQUNkOzs7O0lBS0QsaUNBQWEsR0FBYjs7UUFFSSxJQUFJLFVBQVUsQ0FBQztRQUNmLElBQUk7WUFDQSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDeEM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE1BQU0sd0JBQXdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekQ7O1FBR0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFO1lBQ3pELE1BQU0sd0JBQXdCLENBQUMsbUJBQW1CLENBQUMsdUJBQXFCLElBQUksQ0FBQyxTQUFXLENBQUMsQ0FBQztTQUM3Rjs7UUFHRCxJQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsRUFBRTtZQUN2RSxNQUFNLHdCQUF3QixDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNsRjtLQUNKOzs7Ozs7SUFPRCxpREFBNkIsR0FBN0IsVUFBOEIsSUFBWTtRQUN0QyxJQUFJLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOztRQUVwRCxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxXQUFXLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7UUFFcEQsS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0tBQ3pCO0lBRU0sMkJBQWlCLEdBQXhCLFVBQXlCLEdBQVc7UUFDaEMsT0FBTyxTQUFTLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN2RDs7Ozs7O0lBT0QscUNBQWlCLEdBQWpCLFVBQWtCLFFBQWdCO1FBQzlCLElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFDLElBQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFDekMsSUFBSSxRQUFRLEtBQUssU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLHFCQUFxQixDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUsscUJBQXFCLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRTtZQUNqSixTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxTQUFTLENBQUMsK0JBQStCLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDL0Q7Ozs7SUFLRCwyQkFBTyxHQUFQO1FBQ0ksT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUM5Qzs7Ozs7SUFNRCxvQ0FBZ0IsR0FBaEI7O1FBRUksSUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLDREQUE0RCxDQUFDLENBQUM7O1FBR25GLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixNQUFNLHdCQUF3QixDQUFDLG1CQUFtQixDQUFDLHVCQUFxQixJQUFJLENBQUMsU0FBVyxDQUFDLENBQUM7U0FDN0Y7O1FBR0QsSUFBTSxhQUFhLEdBQUc7WUFDbEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbEIsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDekIsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDaEIsQ0FBQztRQUVWLElBQUksWUFBWSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQUMsR0FBRyxJQUFLLE9BQUEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFBLENBQUMsQ0FBQztRQUNuRSxhQUFhLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUUxQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUYsYUFBYSxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUc7UUFDRCxPQUFPLGFBQWEsQ0FBQztLQUN4QjtJQUVNLDBCQUFnQixHQUF2QixVQUF3QixHQUFXO1FBQy9CLElBQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRWpELElBQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0IsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE1BQU0sd0JBQXdCLENBQUMsbUJBQW1CLENBQUMsdUJBQXFCLEdBQUssQ0FBQyxDQUFDO1NBQ2xGO1FBRUQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDbkI7SUFFTSx3QkFBYyxHQUFyQixVQUFzQixXQUFtQixFQUFFLE9BQWU7UUFDdEQsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLGFBQWEsRUFBRTtZQUM1QyxJQUFNLEdBQUcsR0FBRyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxJQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUU5QyxPQUFPLGNBQWMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLGNBQWMsQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDO1NBQ3hGO1FBRUQsT0FBTyxXQUFXLENBQUM7S0FDdEI7Ozs7O0lBTU0sbUJBQVMsR0FBaEIsVUFBaUIsVUFBa0I7UUFDL0IsSUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxJQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ2pCLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDL0M7YUFBTSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUN4QixPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQy9DO1FBQ0QsT0FBTyxFQUFFLENBQUM7S0FDYjtJQUVNLHlDQUErQixHQUF0QyxVQUF1QyxTQUFlO1FBQ2xELE9BQU8sSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDLGVBQWUsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUN4SDs7OztJQUtNLDZCQUFtQixHQUExQixVQUEyQixJQUFZOztRQUVuQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0IsT0FBTyxFQUFFLENBQUM7U0FDYjs7UUFFRCxJQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDOztRQUU3QyxJQUFNLGdCQUFnQixHQUFvQyxXQUFXLENBQUMsbUJBQW1CLENBQWtDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDOztRQUVoTCxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDbkIsTUFBTSxlQUFlLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7U0FDMUY7UUFDRCxPQUFPLGdCQUFnQixDQUFDO0tBQzNCOzs7O0lBS00scUNBQTJCLEdBQWxDLFVBQW1DLElBQVk7UUFDM0MsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzNCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsSUFBTSxVQUFVLEdBQW9DLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RixPQUFPLENBQUMsRUFDSixVQUFVLENBQUMsSUFBSTtZQUNmLFVBQVUsQ0FBQyxpQkFBaUI7WUFDNUIsVUFBVSxDQUFDLEtBQUs7WUFDaEIsVUFBVSxDQUFDLEtBQUssQ0FDbkIsQ0FBQztLQUNMO0lBQ0wsZ0JBQUM7QUFBRCxDQUFDOztBQ3ZPRDs7OztBQXlCQSxJQUFLLFdBR0o7QUFIRCxXQUFLLFdBQVc7SUFDWix3QkFBUyxDQUFBO0lBQ1QsMEJBQVcsQ0FBQTtBQUNmLENBQUMsRUFISSxXQUFXLEtBQVgsV0FBVyxRQUdmO0FBRUQ7SUFJSSwyQkFBWSxXQUFvQjtRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztLQUNsQztJQUVLLHVDQUFXLEdBQWpCLFVBQWtCLHFCQUE2QixFQUFFLGtCQUEwQjs7Ozs7NEJBQ2pELHFCQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUMscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMsRUFBQTs7d0JBQXhHLGFBQWEsR0FBRyxTQUF3Rjt3QkFDeEcsTUFBTSxHQUFXOzRCQUNuQixHQUFHLEVBQUUsYUFBYTs0QkFDbEIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxFQUFFO3lCQUMxQixDQUFDO3dCQUNGLHNCQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQzs7OztLQUNoRTtJQUVLLHdDQUFZLEdBQWxCLFVBQW1CLFdBQW1CLEVBQUUscUJBQTZCLEVBQUUsa0JBQTBCLEVBQUUsU0FBa0I7Ozs7Ozs7d0JBQzNHLFdBQVcsR0FBdUIsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQzlGLGlCQUFpQixHQUFjLElBQUksU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7d0JBQ2pFLHFCQUFxQixHQUFTLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLENBQUM7d0JBRXpFLElBQUksUUFBQyxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsR0FBRywwQ0FBRSxHQUFHLENBQUEsRUFBRTs0QkFDeEIsTUFBTSxlQUFlLENBQUMsOEJBQThCLEVBQUUsQ0FBQzt5QkFDMUQ7d0JBRU0scUJBQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7Z0NBQ2xDLEVBQUUsRUFBRSxXQUFXO2dDQUNmLEVBQUUsRUFBRSxLQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUk7Z0NBQy9CLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxXQUFXLEVBQUU7Z0NBQ3RDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxlQUFlLElBQUksRUFBRTtnQ0FDOUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFO2dDQUN2QyxDQUFDLEVBQUUscUJBQXFCLENBQUMsWUFBWTtnQ0FDckMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLHFCQUFxQixDQUFDLFdBQVcsQ0FBQztnQ0FDMUMsYUFBYSxFQUFFLFNBQVMsSUFBSSxTQUFTOzZCQUN4QyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUE7NEJBVHZCLHNCQUFPLFNBU2dCLEVBQUM7Ozs7S0FDM0I7SUFDTCx3QkFBQztBQUFELENBQUMsSUFBQTs7QUNuRUQ7Ozs7QUFLQSxBQUVBOzs7Ozs7Ozs7Ozs7OztBQWNBO0lBQUE7S0EwREM7Ozs7SUFsREcsa0RBQXNCLEdBQXRCO1FBQ0ksT0FBTyxpQkFBaUIsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN6Rjs7OztJQUtNLDZDQUEyQixHQUFsQyxVQUFtQyxXQUFtQixFQUFFLFFBQWdCO1FBQ3BFLElBQU0sbUJBQW1CLEdBQWtCO1lBQ3ZDLFlBQVk7WUFDWixXQUFXO1lBQ1gsUUFBUTtTQUNYLENBQUM7UUFDRixPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUNqRjs7Ozs7OztJQVFNLHlDQUF1QixHQUE5QixVQUErQixRQUFnQixFQUFFLFdBQW1CLEVBQUUsUUFBaUI7UUFDbkYsSUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBRTVDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQ3RDLElBQUksUUFBUSxFQUFFO1lBQ1YsV0FBVyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDbkM7UUFFRCxPQUFPLFdBQVcsQ0FBQztLQUN0Qjs7Ozs7SUFNTSxxQ0FBbUIsR0FBMUIsVUFBMkIsR0FBVyxFQUFFLE1BQWM7UUFFbEQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsUUFDSSxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDL0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7WUFDakMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFDdEM7S0FDTDtJQUNMLHdCQUFDO0FBQUQsQ0FBQzs7QUMvRUQ7Ozs7QUFPQTs7O0lBR0c7SUFVQywyQkFBWSxVQUFtQyxFQUFFLFVBQW1CO1FBQ2hFLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0tBQ2hDO0lBS0Qsc0JBQUksOENBQWU7Ozs7YUFBbkI7WUFDSSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDMUI7OztPQUFBO0lBS0Qsc0JBQUkseUNBQVU7Ozs7YUFBZDtZQUNJLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNyQjs7O09BQUE7SUFDTCx3QkFBQztBQUFELENBQUM7O0FDdENEOzs7O0FBb0NBOzs7QUFHQTtJQVNJLHlCQUFZLFFBQWdCLEVBQUUsWUFBMEIsRUFBRSxTQUFrQixFQUFFLE1BQWMsRUFBRSxpQkFBaUQsRUFBRSxpQkFBc0M7UUFDbkwsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztLQUM5Qzs7Ozs7OztJQVFELGlFQUF1QyxHQUF2QyxVQUF3QyxrQkFBbUQsRUFBRSxXQUFtQixFQUFFLFNBQWtCO1FBRWhJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDM0MsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsd0JBQXdCLENBQUMsY0FBYyxDQUFDLEdBQUcsZUFBZSxDQUFDLHdCQUF3QixDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3pKO1FBRUQsSUFBSSxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNsRixNQUFNLGVBQWUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ3BEOztRQUdELElBQUksa0JBQWtCLENBQUMsS0FBSyxJQUFJLGtCQUFrQixDQUFDLGlCQUFpQixJQUFJLGtCQUFrQixDQUFDLFFBQVEsRUFBRTtZQUNqRyxJQUFJLDRCQUE0QixDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDdEosTUFBTSxJQUFJLDRCQUE0QixDQUFDLGtCQUFrQixDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsWUFBWSxFQUFFLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2pLO1lBRUQsTUFBTSxJQUFJLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNoSjtRQUVELElBQUksa0JBQWtCLENBQUMsV0FBVyxFQUFFO1lBQ2hDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDOUQ7S0FDSjs7Ozs7SUFNRCwrQ0FBcUIsR0FBckIsVUFBc0IsY0FBZ0Q7O1FBRWxFLElBQUksY0FBYyxDQUFDLEtBQUssSUFBSSxjQUFjLENBQUMsaUJBQWlCLElBQUksY0FBYyxDQUFDLFFBQVEsRUFBRTtZQUNyRixJQUFJLDRCQUE0QixDQUFDLDBCQUEwQixDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLGlCQUFpQixFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDMUksTUFBTSxJQUFJLDRCQUE0QixDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLGlCQUFpQixFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMzSDtZQUVELElBQU0sU0FBUyxHQUFNLGNBQWMsQ0FBQyxXQUFXLFlBQU8sY0FBYyxDQUFDLFNBQVMsV0FBTSxjQUFjLENBQUMsaUJBQWlCLDJCQUFzQixjQUFjLENBQUMsY0FBYyxxQkFBZ0IsY0FBYyxDQUFDLFFBQVUsQ0FBQztZQUNqTixNQUFNLElBQUksV0FBVyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDMUQ7S0FDSjs7Ozs7O0lBT0ssbURBQXlCLEdBQS9CLFVBQ0ksbUJBQXFELEVBQ3JELFNBQW9CLEVBQ3BCLFlBQW9CLEVBQ3BCLE9BQXdCLEVBQ3hCLGVBQTBDLEVBQzFDLFlBQXFCLEVBQ3JCLDRCQUFzQzs7Ozs7O3dCQUl0QyxJQUFJLG1CQUFtQixDQUFDLFFBQVEsRUFBRTs0QkFDOUIsVUFBVSxHQUFHLElBQUksU0FBUyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsSUFBSSxTQUFTLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzs7NEJBR25HLElBQUksZUFBZSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0NBQ2hFLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLEtBQUssRUFBRTtvQ0FDbkQsTUFBTSxlQUFlLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztpQ0FDcEQ7NkJBQ0o7eUJBQ0o7O3dCQUdELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxhQUFhLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsV0FBVyxJQUFJLFNBQVMsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7d0JBSTlMLElBQUksQ0FBQyxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRTs0QkFDOUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQzt5QkFDNUY7d0JBRUssV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUMsQ0FBQzs7Ozs4QkFHOUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQSxFQUFoRCx3QkFBZ0Q7d0JBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7d0JBQ3RFLFlBQVksR0FBRyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQzt3QkFDbkUscUJBQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxFQUFBOzt3QkFBNUQsU0FBNEQsQ0FBQzs7Ozs7Ozs7d0JBT2pFLElBQUksNEJBQTRCLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTs0QkFDL0MsR0FBRyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzs0QkFDL0MsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUNsRCxJQUFJLENBQUMsT0FBTyxFQUFFO2dDQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLHFHQUFxRyxDQUFDLENBQUM7Z0NBQzNILHNCQUFPLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDLEVBQUM7NkJBQzVJO3lCQUNKO3dCQUNELElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDOzs7OEJBRTNDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksWUFBWSxDQUFBLEVBQWhFLHdCQUFnRTt3QkFDaEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsK0NBQStDLENBQUMsQ0FBQzt3QkFDckUscUJBQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxFQUFBOzt3QkFBM0QsU0FBMkQsQ0FBQzs7OzRCQUdwRSxzQkFBTyxlQUFlLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGVBQWUsQ0FBQyxFQUFDOzs7O0tBQzVJOzs7Ozs7O0lBUU8sNkNBQW1CLEdBQTNCLFVBQTRCLG1CQUFxRCxFQUFFLFNBQW9CLEVBQUUsWUFBb0IsRUFBRSxVQUFzQixFQUFFLGFBQXdCLEVBQUUsWUFBcUIsRUFBRSxlQUEwQztRQUM5TyxJQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMxQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUIsTUFBTSxlQUFlLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztTQUM5RDs7UUFHRCxJQUFJLGFBQXdDLENBQUM7UUFDN0MsSUFBSSxhQUF3QyxDQUFDO1FBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUU7WUFDcEUsYUFBYSxHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsQ0FDN0MsSUFBSSxDQUFDLHFCQUFxQixFQUMxQixHQUFHLEVBQ0gsbUJBQW1CLENBQUMsUUFBUSxJQUFJLFNBQVMsQ0FBQyxZQUFZLEVBQ3RELElBQUksQ0FBQyxRQUFRLEVBQ2IsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDLFlBQVksRUFDL0MsWUFBWSxDQUNmLENBQUM7WUFFRixhQUFhLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUN0QyxtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxDQUNsQixDQUFDO1NBQ0w7O1FBR0QsSUFBSSxpQkFBaUIsR0FBNkIsSUFBSSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxFQUFFOztZQUd4RCxJQUFNLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUM7Ozs7O1lBTXRJLElBQU0sU0FBUyxHQUFXLENBQUMsT0FBTyxtQkFBbUIsQ0FBQyxVQUFVLEtBQUssUUFBUSxHQUFHLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEdBQUcsbUJBQW1CLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQztZQUNwSyxJQUFNLFlBQVksR0FBVyxDQUFDLE9BQU8sbUJBQW1CLENBQUMsY0FBYyxLQUFLLFFBQVEsR0FBRyxRQUFRLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLGNBQWMsS0FBSyxDQUFDLENBQUM7WUFDbkwsSUFBTSxzQkFBc0IsR0FBRyxZQUFZLEdBQUcsU0FBUyxDQUFDO1lBQ3hELElBQU0sOEJBQThCLEdBQUcsc0JBQXNCLEdBQUcsWUFBWSxDQUFDOztZQUc3RSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FDekQsSUFBSSxDQUFDLHFCQUFxQixFQUMxQixHQUFHLEVBQ0gsbUJBQW1CLENBQUMsWUFBWSxJQUFJLFNBQVMsQ0FBQyxZQUFZLEVBQzFELElBQUksQ0FBQyxRQUFRLEVBQ2IsVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFDL0UsY0FBYyxDQUFDLFdBQVcsRUFBRSxFQUM1QixzQkFBc0IsRUFDdEIsOEJBQThCLEVBQzlCLG1CQUFtQixDQUFDLFVBQVUsRUFDOUIsWUFBWSxDQUNmLENBQUM7U0FDTDs7UUFHRCxJQUFJLGtCQUFrQixHQUE4QixJQUFJLENBQUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDekQsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUMsd0JBQXdCLENBQzVELElBQUksQ0FBQyxxQkFBcUIsRUFDMUIsR0FBRyxFQUNILG1CQUFtQixDQUFDLGFBQWEsSUFBSSxTQUFTLENBQUMsWUFBWSxFQUMzRCxJQUFJLENBQUMsUUFBUSxFQUNiLG1CQUFtQixDQUFDLElBQUksRUFDeEIsWUFBWSxDQUNmLENBQUM7U0FDTDs7UUFHRCxJQUFJLGlCQUFpQixHQUE2QixJQUFJLENBQUM7UUFDdkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEQsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0c7UUFFRCxPQUFPLElBQUksV0FBVyxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztLQUNsSDs7Ozs7OztJQVFPLCtDQUFxQixHQUE3QixVQUE4QixtQkFBcUQsRUFBRSxPQUFrQixFQUFFLFNBQW9CLEVBQUUsWUFBcUIsRUFBRSxlQUEwQztRQUM1TCxJQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDO1FBQzlDLElBQU0sa0JBQWtCLEdBQUcsZUFBZSxHQUFHLGVBQWUsQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFDeEYsSUFBTSxXQUFXLEdBQUcsZUFBZSxHQUFHLGVBQWUsQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDOztRQUd4RSxJQUFJLGFBQWEsS0FBSyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLCtDQUErQyxDQUFDLENBQUM7WUFDckUsT0FBTyxhQUFhLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQzVJOztRQUdELElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxTQUFTLENBQUMsWUFBWSxLQUFLLEtBQUssRUFBRTtZQUMxRixNQUFNLGVBQWUsQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1NBQ3REO1FBRUQsT0FBTyxtQkFBbUIsQ0FBQyxXQUFXO1lBQ2xDLGFBQWEsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxXQUFXLENBQUM7WUFDM0osYUFBYSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxXQUFXLENBQUMsQ0FBQztLQUN6STs7Ozs7Ozs7Ozs7SUFZWSw0Q0FBNEIsR0FBekMsVUFDSSxTQUFrQixFQUNsQixTQUFvQixFQUNwQixXQUF3QixFQUN4QixjQUF1QixFQUN2QixPQUF3QixFQUN4QixVQUFzQixFQUN0QixZQUFpQzs7Ozs7Ozt3QkFDN0IsV0FBVyxHQUFXLEVBQUUsQ0FBQzt3QkFDekIsY0FBYyxHQUFrQixFQUFFLENBQUM7d0JBQ25DLFNBQVMsR0FBZ0IsSUFBSSxDQUFDO3dCQUU5QixRQUFRLEdBQVcsU0FBUyxDQUFDLFlBQVksQ0FBQzs2QkFDMUMsV0FBVyxDQUFDLFdBQVcsRUFBdkIsd0JBQXVCOzhCQUNuQixXQUFXLENBQUMsV0FBVyxDQUFDLFNBQVMsS0FBSyxvQkFBb0IsQ0FBQyxHQUFHLENBQUEsRUFBOUQsd0JBQThEO3dCQUN4RCxpQkFBaUIsR0FBc0IsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQzt3QkFFOUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTs0QkFDL0QsTUFBTSx3QkFBd0IsQ0FBQyw0Q0FBNEMsRUFBRSxDQUFDO3lCQUNqRjt3QkFDYSxxQkFBTSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUE7O3dCQUFoSyxXQUFXLEdBQUcsU0FBa0osQ0FBQzs7O3dCQUVqSyxXQUFXLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7Ozt3QkFFakQsY0FBYyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDL0UsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO3dCQUN2RSxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQzs7O3dCQUd0RixJQUFJLFdBQVcsQ0FBQyxXQUFXLEVBQUU7NEJBQ3pCLFFBQVEsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsS0FBSyxhQUFhLEdBQUcsYUFBYSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7eUJBQzFHO3dCQUNLLEdBQUcsR0FBRyxDQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxNQUFNLENBQUMsR0FBRyxNQUFJLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxNQUFNLENBQUMsR0FBRyxDQUFBLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQzt3QkFDakYsR0FBRyxHQUFHLENBQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLE1BQU0sQ0FBQyxHQUFHLEtBQUksU0FBUyxDQUFDLFlBQVksQ0FBQzt3QkFFN0Qsc0JBQU87Z0NBQ0gsU0FBUyxFQUFFLFNBQVMsQ0FBQyxrQkFBa0I7Z0NBQ3ZDLFFBQVEsRUFBRSxHQUFHO2dDQUNiLFFBQVEsRUFBRSxHQUFHO2dDQUNiLE1BQU0sRUFBRSxjQUFjO2dDQUN0QixPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUk7Z0NBQzFFLE9BQU8sRUFBRSxVQUFVLEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsWUFBWTtnQ0FDbEUsYUFBYSxFQUFFLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLEVBQUU7Z0NBQ2xELFdBQVcsRUFBRSxXQUFXO2dDQUN4QixTQUFTLEVBQUUsY0FBYztnQ0FDekIsU0FBUyxFQUFFLFNBQVM7Z0NBQ3BCLFlBQVksRUFBRSxZQUFZO2dDQUMxQixRQUFRLEVBQUUsUUFBUTtnQ0FDbEIsU0FBUyxFQUFFLE9BQUEsV0FBVyxDQUFDLFdBQVcsMENBQUUsU0FBUyxLQUFJLFNBQVMsQ0FBQyxZQUFZO2dDQUN2RSxLQUFLLEVBQUUsWUFBWSxHQUFHLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsWUFBWTtnQ0FDNUUsa0JBQWtCLEVBQUUsT0FBQSxXQUFXLENBQUMsT0FBTywwQ0FBRSxrQkFBa0IsS0FBSSxTQUFTLENBQUMsWUFBWTtnQ0FDckYsV0FBVyxFQUFFLE9BQUEsV0FBVyxDQUFDLE9BQU8sMENBQUUsV0FBVyxLQUFJLFNBQVMsQ0FBQyxZQUFZOzZCQUMxRSxFQUFDOzs7O0tBQ0w7SUFDTCxzQkFBQztBQUFELENBQUMsSUFBQTs7QUM1VkQ7Ozs7QUE4QkE7OztBQUdBO0lBQTZDLDJDQUFVO0lBRW5ELGlDQUFZLGFBQWtDO2VBQzFDLGtCQUFNLGFBQWEsQ0FBQztLQUN2Qjs7Ozs7Ozs7Ozs7SUFZSyxnREFBYyxHQUFwQixVQUFxQixPQUFzQzs7OztnQkFDakQsV0FBVyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0Qsc0JBQVUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsU0FBSSxXQUFhLEVBQUM7OztLQUNuRTs7Ozs7O0lBT0ssOENBQVksR0FBbEIsVUFBbUIsT0FBdUMsRUFBRSxlQUEwQzs7Ozs7O3dCQUNsRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO3dCQUN6QyxJQUFJLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFOzRCQUMvQyxNQUFNLGVBQWUsQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDO3lCQUMvRDt3QkFFSyxZQUFZLEdBQUcsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO3dCQUMzQixxQkFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBQTs7d0JBQWxFLFFBQVEsR0FBRyxTQUF1RDt3QkFFbEUsZUFBZSxHQUFHLElBQUksZUFBZSxDQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQ2hDLElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FDaEMsQ0FBQzs7d0JBR0YsZUFBZSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDOUMscUJBQU0sZUFBZSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxFQUFBOzRCQUE3SCxzQkFBTyxTQUFzSCxFQUFDOzs7O0tBQ2pJOzs7Ozs7SUFPRCx3REFBc0IsR0FBdEIsVUFBdUIsWUFBb0IsRUFBRSxXQUFtQjs7UUFFNUQsSUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzs7UUFHNUksSUFBTSxhQUFhLEdBQUcsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7O1FBRWxELElBQU0sWUFBWSxHQUFvQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7O1FBRzdHLGVBQWUsQ0FBQyx1Q0FBdUMsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzs7UUFHckcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUU7WUFDcEIsTUFBTSxlQUFlLENBQUMscUNBQXFDLEVBQUUsQ0FBQztTQUNqRTtRQUVELDZCQUNPLFlBQVk7O1lBRWYsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLElBQ3pCO0tBQ0w7Ozs7OztJQU9ELDhDQUFZLEdBQVosVUFBYSxhQUFzQzs7UUFFL0MsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNoQixNQUFNLHdCQUF3QixDQUFDLDZCQUE2QixFQUFFLENBQUM7U0FDbEU7UUFFRCxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUU7O1lBRXZCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNqRzthQUFNOztZQUVILElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDN0I7UUFFRCxJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLENBQUM7O1FBR25FLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixHQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLFNBQUksV0FBYSxDQUFDO0tBQ3ZJOzs7Ozs7SUFPYSxxREFBbUIsR0FBakMsVUFBa0MsU0FBb0IsRUFBRSxPQUF1Qzs7Ozs7O3dCQUNyRixVQUFVLEdBQXNCOzRCQUNsQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUTs0QkFDMUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxrQkFBa0I7NEJBQ3ZDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTt5QkFDekIsQ0FBQzt3QkFFa0IscUJBQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxFQUFBOzt3QkFBeEQsV0FBVyxHQUFHLFNBQTBDO3dCQUN4RCxPQUFPLEdBQTJCLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO3dCQUVoRixzQkFBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxFQUFDOzs7O0tBQ3JHOzs7OztJQU1hLHdEQUFzQixHQUFwQyxVQUFxQyxPQUF1Qzs7Ozs7O3dCQUNsRSxnQkFBZ0IsR0FBRyxJQUFJLHVCQUF1QixFQUFFLENBQUM7d0JBRXZELGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7d0JBRy9ELGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7O3dCQUdyRCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDOzt3QkFHM0MsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDOzt3QkFHcEQsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFOzRCQUN0QixnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO3lCQUMxRDt3QkFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFOzRCQUM1QyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQzt5QkFDaEY7d0JBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsRUFBRTs0QkFDekMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDOzRCQUN0RSxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7NEJBQy9ELGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQzt5QkFDMUU7d0JBRUQsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO3dCQUNsRSxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQzs4QkFFN0IsT0FBTyxDQUFDLG9CQUFvQixLQUFLLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUEsRUFBNUgsd0JBQTRIO3dCQUN0SCxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDaEQscUJBQU0saUJBQWlCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBQTs7d0JBQTFHLFNBQVMsR0FBRyxTQUE4Rjt3QkFDaEgsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDOzs7d0JBR3RDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUMzRixnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFFakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7NEJBQzdJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUM7eUJBQzFGO3dCQUVELHNCQUFPLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLEVBQUM7Ozs7S0FDL0M7Ozs7O0lBTU8sOERBQTRCLEdBQXBDLFVBQXFDLE9BQXNDO1FBQ3ZFLElBQU0sZ0JBQWdCLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1FBRXZELGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUvRCxJQUFNLGFBQWEsa0JBQU8sT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUssT0FBTyxDQUFDLG9CQUFvQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQzs7UUFHMUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQzs7UUFHckQsSUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzRixnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQzs7UUFHakQsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQzs7UUFHdkQsZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzs7UUFHdkMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7O1FBR3pELGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRWpDLElBQUksT0FBTyxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQUMsbUJBQW1CLEVBQUU7WUFDdEQsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUMvRjtRQUVELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNoQixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzlDO1FBRUQsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3BCLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDdEQ7O1FBR0QsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ2IsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN4QzthQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUN4QixJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDOztZQUUzRCxJQUFJLFVBQVUsRUFBRTtnQkFDWixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDdkM7aUJBQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO2dCQUMxQixnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3BEO2lCQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7O2dCQUVqQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMzRDtTQUNKO2FBQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQzFCLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDcEQ7UUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDZixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2YsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDMUY7UUFFRCxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTtZQUM5QixnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUMxRTtRQUVELE9BQU8sZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztLQUMvQzs7Ozs7SUFNTyw0REFBMEIsR0FBbEMsVUFBbUMsT0FBZ0M7UUFDL0QsSUFBTSxnQkFBZ0IsR0FBRyxJQUFJLHVCQUF1QixFQUFFLENBQUM7UUFFdkQsSUFBSSxPQUFPLENBQUMscUJBQXFCLEVBQUU7WUFDL0IsZ0JBQWdCLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDNUU7UUFFRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUU7WUFDdkIsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzVEO1FBRUQsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ3JCLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDeEQ7UUFFRCxPQUFPLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLENBQUM7S0FDL0M7Ozs7O0lBTU8sbURBQWlCLEdBQXpCLFVBQTBCLE9BQW9CO1FBQzFDLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUN2QixJQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsYUFBNEIsQ0FBQztZQUN6RCxPQUFPLFdBQVcsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNMLDhCQUFDO0FBQUQsQ0E5UkEsQ0FBNkMsVUFBVTs7QUNqQ3ZEOzs7O0FBbUJBOzs7QUFHQTtJQUFzQyxvQ0FBVTtJQUU1QywwQkFBWSxhQUFrQztlQUMxQyxrQkFBTSxhQUFhLENBQUM7S0FDdkI7Ozs7OztJQU9ZLHVDQUFZLEdBQXpCLFVBQTBCLE9BQWdDOzs7Ozs0QkFDUCxxQkFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFBOzt3QkFBMUUsa0JBQWtCLEdBQXVCLFNBQWlDO3dCQUNoRixPQUFPLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsQ0FBQzt3QkFDekMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQzt3QkFDTyxxQkFBTSxJQUFJLENBQUMsMEJBQTBCLENBQ3BGLE9BQU8sRUFDUCxrQkFBa0IsQ0FBQyxFQUFBOzt3QkFGakIsUUFBUSxHQUFxQyxTQUU1Qjt3QkFFakIsZUFBZSxHQUFHLElBQUksZUFBZSxDQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQ2hDLElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FDaEMsQ0FBQzs7d0JBR0YsZUFBZSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUN6QyxxQkFBTSxlQUFlLENBQUMseUJBQXlCLENBQ2xELFFBQVEsRUFDUixJQUFJLENBQUMsU0FBUyxFQUNkLFlBQVksRUFDWixPQUFPLENBQ1YsRUFBQTs0QkFMRCxzQkFBTyxTQUtOLEVBQUM7Ozs7S0FDTDs7Ozs7SUFNYSx3Q0FBYSxHQUEzQixVQUE0QixPQUFnQzs7OztnQkFDbEQsV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDOUMsT0FBTyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO2dCQUNsRCxVQUFVLEdBQXNCO29CQUNsQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUTtvQkFDMUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO29CQUM1QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07aUJBQ3pCLENBQUM7Z0JBRUYsc0JBQU8sSUFBSSxDQUFDLHNDQUFzQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsRUFBQzs7O0tBQzNIOzs7Ozs7O0lBUWEsaUVBQXNDLEdBQXBELFVBQ0ksa0JBQTBCLEVBQzFCLFdBQW1CLEVBQ25CLE9BQStCLEVBQy9CLFVBQTZCOzs7Ozs0QkFXekIscUJBQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQ3pDLFVBQVUsRUFDVixrQkFBa0IsRUFDbEI7NEJBQ0ksSUFBSSxFQUFFLFdBQVc7NEJBQ2pCLE9BQU8sRUFBRSxPQUFPO3lCQUNuQixDQUFDLEVBQUE7O3dCQWRGLEtBUUEsQ0FBQSxTQU1FLE1BUEQsRUFOYyxRQUFRLGVBQUEsRUFDTixVQUFVLGlCQUFBLEVBQ0wsZUFBZSxzQkFBQSxFQUNyQixTQUFTLGdCQUFBLEVBQ3JCLFFBQVEsY0FBQSxFQUNSLE9BQU8sYUFBQTt3QkFVZixzQkFBTztnQ0FDSCxRQUFRLFVBQUE7Z0NBQ1IsVUFBVSxZQUFBO2dDQUNWLGVBQWUsaUJBQUE7Z0NBQ2YsU0FBUyxXQUFBO2dDQUNULFFBQVEsVUFBQTtnQ0FDUixPQUFPLFNBQUE7NkJBQ1YsRUFBQzs7OztLQUNMOzs7O0lBS08sNENBQWlCLEdBQXpCLFVBQTBCLE9BQWdDO1FBRXRELElBQU0sZ0JBQWdCLEdBQTRCLElBQUksdUJBQXVCLEVBQUUsQ0FBQztRQUVoRixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUvRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM3SSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQzFGO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0tBQy9DOzs7Ozs7O0lBUWEscURBQTBCLEdBQXhDLFVBQ0ksT0FBZ0MsRUFDaEMsa0JBQXNDOzs7OztnQkFFaEMsV0FBVyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztnQkFDdkUsT0FBTyxHQUEyQixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztnQkFFMUUsb0JBQW9CLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7Z0JBQzlGLHdCQUF3QixHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLENBQUM7Z0JBQ2pGLG9CQUFvQixHQUFHLGtCQUFrQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Ozs7O2dCQU1oRSxzQkFBTyxJQUFJLE9BQU8sQ0FBbUMsVUFBQyxPQUFPLEVBQUUsTUFBTTt3QkFFakUsSUFBTSxVQUFVLEdBQWtDLFdBQVcsQ0FBQzs7Ozs7OzZDQUVsRCxPQUFPLENBQUMsTUFBTSxFQUFkLHdCQUFjO3dDQUVkLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG9FQUFvRSxDQUFDLENBQUM7d0NBQ3hGLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3Q0FDMUIsTUFBTSxDQUFDLGVBQWUsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLENBQUM7Ozs4Q0FFbEQsb0JBQW9CLElBQUksb0JBQW9CLEdBQUcsd0JBQXdCLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRSxHQUFHLG9CQUFvQixDQUFBLEVBQXhILHdCQUF3SDt3Q0FFL0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUZBQWlGLG9CQUFzQixDQUFDLENBQUM7d0NBQzNILGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3Q0FDMUIsTUFBTSxDQUFDLGVBQWUsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLENBQUM7Ozs4Q0FFakQsU0FBUyxDQUFDLFVBQVUsRUFBRSxHQUFHLHdCQUF3QixDQUFBLEVBQWpELHdCQUFpRDt3Q0FFeEQsSUFBSSxvQkFBb0IsRUFBRTs0Q0FDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0lBQW9JLG9CQUFzQixDQUFDLENBQUM7eUNBQ25MO3dDQUVELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDZEQUEyRCx3QkFBMEIsQ0FBQyxDQUFDO3dDQUN6RyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7d0NBQzFCLE1BQU0sQ0FBQyxlQUFlLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDOzs7d0NBR2pELFVBQVUsR0FBc0I7NENBQ2xDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFROzRDQUMxQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7NENBQzVCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTt5Q0FDekIsQ0FBQzt3Q0FDZSxxQkFBTSxJQUFJLENBQUMsMEJBQTBCLENBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUM1QixXQUFXLEVBQ1gsT0FBTyxFQUNQLFVBQVUsQ0FBQyxFQUFBOzt3Q0FKVCxRQUFRLEdBQUcsU0FJRjt3Q0FFZixJQUFJLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLHFCQUFxQixFQUFFOzs0Q0FFMUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxzQkFBc0IsQ0FBQyxDQUFDO3lDQUMvRTs2Q0FBTTs0Q0FDSCxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7NENBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7eUNBQzFCOzs7Ozt3Q0FHTCxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7d0NBQzFCLE1BQU0sQ0FBQyxPQUFLLENBQUMsQ0FBQzs7Ozs7NkJBRXJCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztxQkFDNUIsQ0FBQyxFQUFDOzs7S0FDTjs7Ozs7O0lBT08saURBQXNCLEdBQTlCLFVBQStCLE9BQWdDLEVBQUUsa0JBQXNDO1FBRW5HLElBQU0saUJBQWlCLEdBQTRCLElBQUksdUJBQXVCLEVBQUUsQ0FBQztRQUVqRixpQkFBaUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDNUQsaUJBQWlCLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9ELElBQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0YsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEQsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0ksaUJBQWlCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUMzRjtRQUNELE9BQU8saUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztLQUNoRDtJQUNMLHVCQUFDO0FBQUQsQ0EvTUEsQ0FBc0MsVUFBVTs7QUN0QmhEOzs7O0FBd0JBOzs7QUFHQTtJQUF3QyxzQ0FBVTtJQUU5Qyw0QkFBWSxhQUFrQztlQUMxQyxrQkFBTSxhQUFhLENBQUM7S0FDdkI7SUFFWSx5Q0FBWSxHQUF6QixVQUEwQixPQUFrQzs7Ozs7O3dCQUNsRCxZQUFZLEdBQUcsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO3dCQUMzQixxQkFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQTs7d0JBQWxFLFFBQVEsR0FBRyxTQUF1RDt3QkFFbEUsZUFBZSxHQUFHLElBQUksZUFBZSxDQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQ2hDLElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FDaEMsQ0FBQzt3QkFFRixlQUFlLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNyRCxzQkFBTyxlQUFlLENBQUMseUJBQXlCLENBQzVDLFFBQVEsQ0FBQyxJQUFJLEVBQ2IsSUFBSSxDQUFDLFNBQVMsRUFDZCxZQUFZLEVBQ1osT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxDQUNQLEVBQUM7Ozs7S0FDTDs7Ozs7SUFNWSx1REFBMEIsR0FBdkMsVUFBd0MsT0FBZ0M7Ozs7O2dCQUVwRSxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNWLE1BQU0sd0JBQXdCLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztpQkFDakU7O2dCQUdELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUNsQixNQUFNLGVBQWUsQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDO2lCQUMvRDtnQkFHSyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7Z0JBR2xILElBQUksTUFBTSxFQUFFO29CQUNSLElBQUk7d0JBQ0Esc0JBQU8sSUFBSSxDQUFDLGtDQUFrQyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBQztxQkFDakU7b0JBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ0YsaUJBQWlCLEdBQUcsQ0FBQyxZQUFZLGVBQWUsSUFBSSxDQUFDLENBQUMsU0FBUyxLQUFLLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQzt3QkFDbkgsK0JBQStCLEdBQUcsQ0FBQyxZQUFZLFdBQVcsSUFBSSxDQUFDLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQzs7d0JBRzlKLElBQUksaUJBQWlCLElBQUksK0JBQStCLEVBQUU7NEJBQ3RELHNCQUFPLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUM7O3lCQUVsRTs2QkFBTTs0QkFDSCxNQUFNLENBQUMsQ0FBQzt5QkFDWDtxQkFDSjtpQkFDSjs7Z0JBR0Qsc0JBQU8sSUFBSSxDQUFDLGtDQUFrQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBQzs7O0tBQ2xFOzs7OztJQU1hLCtEQUFrQyxHQUFoRCxVQUFpRCxPQUFnQyxFQUFFLElBQWE7Ozs7Z0JBRXRGLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDOztnQkFHMUgsSUFBSSxDQUFDLFlBQVksRUFBRTtvQkFDZixNQUFNLGVBQWUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2lCQUNwRDtnQkFFSyxtQkFBbUIseUJBQ2xCLE9BQU8sS0FDVixZQUFZLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFDakMsb0JBQW9CLEVBQUUsb0JBQW9CLENBQUMsTUFBTSxHQUNwRCxDQUFDO2dCQUVGLHNCQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsRUFBQzs7O0tBQ2pEOzs7Ozs7SUFPYSxnREFBbUIsR0FBakMsVUFBa0MsT0FBa0MsRUFBRSxTQUFvQjs7Ozs7NEJBR2xFLHFCQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsRUFBQTs7d0JBQXhELFdBQVcsR0FBRyxTQUEwQzt3QkFDeEQsT0FBTyxHQUEyQixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQzt3QkFDMUUsVUFBVSxHQUFzQjs0QkFDbEMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVE7NEJBQzFDLFNBQVMsRUFBRSxTQUFTLENBQUMsa0JBQWtCOzRCQUN2QyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07eUJBQ3pCLENBQUM7d0JBRUYsc0JBQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsRUFBQzs7OztLQUNyRzs7Ozs7SUFNYSxtREFBc0IsR0FBcEMsVUFBcUMsT0FBa0M7Ozs7Ozt3QkFDN0QsZ0JBQWdCLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO3dCQUV2RCxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBRS9ELGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBRTNDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQzt3QkFFN0QsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBRTNCLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUMzRixnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFFakQsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQzt3QkFFdkQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRTs0QkFDNUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7eUJBQ2hGO3dCQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUU7NEJBQ3pDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQzs0QkFDdEUsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDOzRCQUMvRCxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7eUJBQzFFOzhCQUVHLE9BQU8sQ0FBQyxvQkFBb0IsS0FBSyxvQkFBb0IsQ0FBQyxHQUFHLENBQUEsRUFBekQsd0JBQXlEO3dCQUNuRCxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDbEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTs0QkFDL0QsTUFBTSx3QkFBd0IsQ0FBQyw0Q0FBNEMsRUFBRSxDQUFDO3lCQUNqRjt3QkFFRCxLQUFBLENBQUEsS0FBQSxnQkFBZ0IsRUFBQyxXQUFXLENBQUE7d0JBQUMscUJBQU0saUJBQWlCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBQTs7d0JBQTNILGNBQTZCLFNBQThGLEVBQUMsQ0FBQzs7O3dCQUdqSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTs0QkFDN0ksZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQzt5QkFDMUY7d0JBRUQsc0JBQU8sZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsRUFBQzs7OztLQUMvQztJQUNMLHlCQUFDO0FBQUQsQ0E3SkEsQ0FBd0MsVUFBVTs7QUMzQmxEOzs7O0FBcUJBOzs7QUFHQTtJQUE0QywwQ0FBVTtJQUlsRCxnQ0FBWSxhQUFrQztlQUMxQyxrQkFBTSxhQUFhLENBQUM7S0FDdkI7Ozs7O0lBTVksNkNBQVksR0FBekIsVUFBMEIsT0FBc0M7Ozs7Ozt3QkFFNUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDOzZCQUUvQyxPQUFPLENBQUMsU0FBUyxFQUFqQix3QkFBaUI7d0JBQ1YscUJBQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUE7NEJBQTlELHNCQUFPLFNBQXVELEVBQUM7NEJBR2hDLHFCQUFNLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxPQUFPLENBQUMsRUFBQTs7d0JBQTlFLDBCQUEwQixHQUFHLFNBQWlEOzZCQUNoRiwwQkFBMEIsRUFBMUIsd0JBQTBCO3dCQUMxQixzQkFBTywwQkFBMEIsRUFBQzs0QkFFM0IscUJBQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUE7NEJBQTlELHNCQUFPLFNBQXVELEVBQUM7Ozs7S0FFdEU7Ozs7SUFLYSw4REFBNkIsR0FBM0MsVUFBNEMsT0FBc0M7Ozs7Ozt3QkFDeEUsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7d0JBQzFELElBQUksQ0FBQyxpQkFBaUI7NEJBQ2xCLFNBQVMsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLEVBQUU7NEJBQzVHLHNCQUFPLElBQUksRUFBQzt5QkFDZjt3QkFFTSxxQkFBTSxlQUFlLENBQUMsNEJBQTRCLENBQ3JELElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxTQUFTLEVBQ2Q7Z0NBQ0ksT0FBTyxFQUFFLElBQUk7Z0NBQ2IsT0FBTyxFQUFFLElBQUk7Z0NBQ2IsV0FBVyxFQUFFLGlCQUFpQjtnQ0FDOUIsWUFBWSxFQUFFLElBQUk7Z0NBQ2xCLFdBQVcsRUFBRSxJQUFJOzZCQUNwQixFQUNELElBQUksRUFDSixPQUFPLENBQ1YsRUFBQTs0QkFaRCxzQkFBTyxTQVlOLEVBQUM7Ozs7S0FDTDs7Ozs7SUFNTyx5REFBd0IsR0FBaEM7UUFDSSxJQUFNLGlCQUFpQixHQUFxQjtZQUN4QyxhQUFhLEVBQUUsRUFBRTtZQUNqQixXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQyxlQUFlO1lBQzNFLGNBQWMsRUFBRSxjQUFjLENBQUMsWUFBWTtZQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUTtZQUMxQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNO1lBQzVCLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFO1NBQy9DLENBQUM7UUFDRixJQUFNLGVBQWUsR0FBb0IsSUFBSSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3ZHLElBQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLGVBQWUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUEsQ0FBQyxDQUFDO1FBQzdHLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUM7U0FDZjthQUFNLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDaEMsTUFBTSxlQUFlLENBQUMsd0NBQXdDLEVBQUUsQ0FBQztTQUNwRTtRQUNELE9BQU8sWUFBWSxDQUFDLENBQUMsQ0FBc0IsQ0FBQztLQUMvQzs7Ozs7O0lBT2Esb0RBQW1CLEdBQWpDLFVBQWtDLE9BQXNDLEVBQUUsU0FBb0I7Ozs7Ozt3QkFHcEYsV0FBVyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDbkQsT0FBTyxHQUEyQixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQzt3QkFDMUUsVUFBVSxHQUFzQjs0QkFDbEMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVE7NEJBQzFDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUzs0QkFDNUIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO3lCQUN6QixDQUFDO3dCQUVJLFlBQVksR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7d0JBQzNCLHFCQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUE7O3dCQUEzRyxRQUFRLEdBQUcsU0FBZ0c7d0JBRTNHLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUNoQyxJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQ2hDLENBQUM7d0JBRUYsZUFBZSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDL0IscUJBQU0sZUFBZSxDQUFDLHlCQUF5QixDQUNqRSxRQUFRLENBQUMsSUFBSSxFQUNiLElBQUksQ0FBQyxTQUFTLEVBQ2QsWUFBWSxFQUNaLE9BQU8sQ0FDVixFQUFBOzt3QkFMSyxhQUFhLEdBQUcsU0FLckI7d0JBRUQsc0JBQU8sYUFBYSxFQUFDOzs7O0tBQ3hCOzs7OztJQU1PLHVEQUFzQixHQUE5QixVQUErQixPQUFzQztRQUNqRSxJQUFNLGdCQUFnQixHQUFHLElBQUksdUJBQXVCLEVBQUUsQ0FBQztRQUV2RCxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFL0QsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFbEQsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRWxFLElBQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0YsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRTtZQUM1QyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNoRjtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUU7WUFDL0MsSUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUM7WUFDdEUsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9ELGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMxRTtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDMUY7UUFFRCxPQUFPLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLENBQUM7S0FDL0M7SUFDTCw2QkFBQztBQUFELENBbkpBLENBQTRDLFVBQVU7O0FDeEJ0RDs7OztBQXdCQTs7O0FBR0E7SUFBc0Msb0NBQVU7SUFJNUMsMEJBQVksYUFBa0M7ZUFDMUMsa0JBQU0sYUFBYSxDQUFDO0tBQ3ZCOzs7OztJQU1ZLHVDQUFZLEdBQXpCLFVBQTBCLE9BQWdDOzs7Ozs7d0JBQ3RELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQzs2QkFFL0MsT0FBTyxDQUFDLFNBQVMsRUFBakIsd0JBQWlCO3dCQUNWLHFCQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFBOzRCQUE5RCxzQkFBTyxTQUF1RCxFQUFDOzRCQUdoQyxxQkFBTSxJQUFJLENBQUMsNkJBQTZCLENBQUMsT0FBTyxDQUFDLEVBQUE7O3dCQUE5RSwwQkFBMEIsR0FBRyxTQUFpRDs2QkFDaEYsMEJBQTBCLEVBQTFCLHdCQUEwQjt3QkFDMUIsc0JBQU8sMEJBQTBCLEVBQUM7NEJBRTNCLHFCQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFBOzRCQUE5RCxzQkFBTyxTQUF1RCxFQUFDOzs7O0tBRXRFOzs7OztJQU1hLHdEQUE2QixHQUEzQyxVQUE0QyxPQUFnQzs7Ozs7O3dCQUNsRSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ2pFLElBQUksQ0FBQyxpQkFBaUI7NEJBQ2xCLFNBQVMsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLEVBQUU7NEJBQzVHLHNCQUFPLElBQUksRUFBQzt5QkFDZjt3QkFFSyxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUVyRCxhQUFhLEdBQXlCLElBQUksQ0FBQzt3QkFDL0MsSUFBSSxhQUFhLEVBQUU7NEJBQ2YsYUFBYSxHQUFHLElBQUksU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQzs0QkFDM0UsY0FBYyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDOzRCQUNoRyxXQUFXLEdBQWdCO2dDQUM3QixhQUFhLEVBQUUsYUFBYSxDQUFDLGFBQWE7Z0NBQzFDLFdBQVcsRUFBRSxhQUFhLENBQUMsV0FBVztnQ0FDdEMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLO2dDQUM3QixRQUFRLEVBQUUsU0FBUyxDQUFDLFlBQVk7Z0NBQ2hDLGNBQWMsRUFBRSxjQUFjLElBQUksRUFBRTs2QkFDdkMsQ0FBQzs0QkFFRixhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO3lCQUMxRDt3QkFFTSxxQkFBTSxlQUFlLENBQUMsNEJBQTRCLENBQ3JELElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxTQUFTLEVBQ2Q7Z0NBQ0ksT0FBTyxFQUFFLGFBQWE7Z0NBQ3RCLFdBQVcsRUFBRSxpQkFBaUI7Z0NBQzlCLE9BQU8sRUFBRSxhQUFhO2dDQUN0QixZQUFZLEVBQUUsSUFBSTtnQ0FDbEIsV0FBVyxFQUFFLElBQUk7NkJBQ3BCLEVBQ0QsSUFBSSxFQUNKLE9BQU8sRUFDUCxhQUFhLENBQUMsRUFBQTs0QkFabEIsc0JBQU8sU0FZVyxFQUFDOzs7O0tBQ3RCOzs7OztJQU1PLG1EQUF3QixHQUFoQyxVQUFpQyxPQUFnQztRQUM3RCxJQUFNLGlCQUFpQixHQUFxQjtZQUN4QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQyxlQUFlO1lBQzNFLGNBQWMsRUFBRSxjQUFjLENBQUMsWUFBWTtZQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUTtZQUMxQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNO1lBQzVCLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFO1lBQzVDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtTQUNyQyxDQUFDO1FBRUYsSUFBTSxlQUFlLEdBQW9CLElBQUksQ0FBQyxZQUFZLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2RyxJQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxlQUFlLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFBLENBQUMsQ0FBQztRQUU3RyxJQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQzVDLElBQUksZUFBZSxHQUFHLENBQUMsRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQztTQUNmO2FBQU0sSUFBSSxlQUFlLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLE1BQU0sZUFBZSxDQUFDLHdDQUF3QyxFQUFFLENBQUM7U0FDcEU7UUFDRCxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQXNCLENBQUM7S0FDL0M7Ozs7O0lBTU8sK0NBQW9CLEdBQTVCLFVBQTZCLE9BQWdDO1FBQ3pELElBQU0sYUFBYSxHQUFxQjtZQUNwQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQyxlQUFlO1lBQzNFLGNBQWMsRUFBRSxjQUFjLENBQUMsUUFBUTtZQUN2QyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUTtZQUMxQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNO1lBQzVCLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtTQUNyQyxDQUFDO1FBRUYsSUFBTSxlQUFlLEdBQW9CLElBQUksQ0FBQyxZQUFZLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkcsSUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBQSxDQUFDLENBQUM7O1FBRWpHLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBa0IsQ0FBQztLQUN2Qzs7Ozs7SUFNTywrQ0FBb0IsR0FBNUIsVUFBNkIsT0FBb0I7UUFDN0MsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzFEOzs7Ozs7SUFPYSw4Q0FBbUIsR0FBakMsVUFBa0MsT0FBZ0MsRUFBRSxTQUFvQjs7Ozs7O3dCQUc5RSxXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUNuRCxPQUFPLEdBQTJCLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO3dCQUMxRSxVQUFVLEdBQXNCOzRCQUNsQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUTs0QkFDMUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTOzRCQUM1QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07eUJBQ3pCLENBQUM7d0JBRUksWUFBWSxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQzt3QkFDM0IscUJBQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsRUFBQTs7d0JBQTNHLFFBQVEsR0FBRyxTQUFnRzt3QkFFM0csZUFBZSxHQUFHLElBQUksZUFBZSxDQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQ2hDLElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FDaEMsQ0FBQzt3QkFFRixlQUFlLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUMvQixxQkFBTSxlQUFlLENBQUMseUJBQXlCLENBQ2pFLFFBQVEsQ0FBQyxJQUFJLEVBQ2IsSUFBSSxDQUFDLFNBQVMsRUFDZCxZQUFZLEVBQ1osT0FBTyxDQUNWLEVBQUE7O3dCQUxLLGFBQWEsR0FBRyxTQUtyQjt3QkFFRCxzQkFBTyxhQUFhLEVBQUM7Ozs7S0FDeEI7Ozs7O0lBTU8saURBQXNCLEdBQTlCLFVBQStCLE9BQWdDO1FBQzNELElBQU0sZ0JBQWdCLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1FBRXZELGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUvRCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTNDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFcEQsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFakMsSUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzRixnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVqRCxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVyRSxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXZELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUU7WUFDNUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDaEY7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFO1lBQy9DLElBQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDO1lBQ3RFLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMvRCxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDMUU7UUFFRCxPQUFPLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLENBQUM7S0FDL0M7SUFDTCx1QkFBQztBQUFELENBdk1BLENBQXNDLFVBQVU7O0FDM0JoRDs7Ozs7SUFtQnNDLG9DQUFVO0lBRTVDLDBCQUFZLGFBQWtDO2VBQzFDLGtCQUFNLGFBQWEsQ0FBQztLQUN2Qjs7Ozs7O0lBT0ssdUNBQVksR0FBbEIsVUFBbUIsT0FBZ0M7Ozs7Ozs7d0JBRXBDLHFCQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBQTs0QkFBN0Msc0JBQU8sU0FBc0MsRUFBQzs7O3dCQUU5QyxJQUFJLEdBQUMsWUFBWSxlQUFlLElBQUksR0FBQyxDQUFDLFNBQVMsS0FBSyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUU7NEJBQzVGLGtCQUFrQixHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDOzRCQUMvRCxzQkFBTyxrQkFBa0IsQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsRUFBQzt5QkFDakU7NkJBQU07NEJBQ0gsTUFBTSxHQUFDLENBQUM7eUJBQ1g7Ozs7O0tBRVI7Ozs7O0lBTUssNkNBQWtCLEdBQXhCLFVBQXlCLE9BQWdDOzs7Ozs7O3dCQUVyRCxJQUFJLENBQUMsT0FBTyxFQUFFOzRCQUNWLE1BQU0sd0JBQXdCLENBQUMsNEJBQTRCLEVBQUUsQ0FBQzt5QkFDakU7O3dCQUdELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFOzRCQUNsQixNQUFNLGVBQWUsQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDO3lCQUMvRDt3QkFDSyxhQUFhLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQzt3QkFDbkQsV0FBVyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO3dCQUN0RSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDOzZCQUVqSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxXQUFXLENBQUMsRUFBeEQsd0JBQXdEO3dCQUN4RCxNQUFNLGVBQWUsQ0FBQywwQkFBMEIsRUFBRSxDQUFDOzt3QkFFbkQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFOzRCQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixFQUFFLENBQUM7eUJBQzNEO3dCQUNNLHFCQUFNLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEVBQUE7NEJBQXJFLHNCQUFPLFNBQThELEVBQUM7Ozs7S0FFN0U7Ozs7O0lBTWEsd0RBQTZCLEdBQTNDLFVBQTRDLFdBQXdCLEVBQUUsT0FBZ0M7Ozs7Ozt3QkFFbEcsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFOzRCQUNyQixVQUFVLEdBQUcsSUFBSSxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQzt5QkFDdkY7d0JBQ00scUJBQU0sZUFBZSxDQUFDLDRCQUE0QixDQUNyRCxJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsU0FBUyxFQUNkLFdBQVcsRUFDWCxJQUFJLEVBQ0osT0FBTyxFQUNQLFVBQVUsQ0FDYixFQUFBOzRCQVBELHNCQUFPLFNBT04sRUFBQzs7OztLQUNMOzs7Ozs7SUFPTyw0Q0FBaUIsR0FBekIsVUFBMEIsT0FBZ0MsRUFBRSxpQkFBeUM7UUFDakcsSUFBSSxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7O1lBRXhDLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7YUFBTSxJQUFJLENBQUMsaUJBQWlCLElBQUksU0FBUyxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMseUJBQXlCLENBQUMsRUFBRTs7WUFFekksT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBQ0wsdUJBQUM7QUFBRCxDQXZGQSxDQUFzQyxVQUFVOztBQ25CaEQ7Ozs7QUFtQkE7Ozs7QUFJQTtJQUE0QywwQ0FBVTtJQUVsRCxnQ0FBWSxhQUFrQztlQUMxQyxrQkFBTSxhQUFhLENBQUM7S0FDdkI7Ozs7OztJQU9LLDZDQUFZLEdBQWxCLFVBQW1CLE9BQXNDOzs7Ozs7d0JBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7d0JBRW5DLFlBQVksR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7d0JBQzNCLHFCQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFBOzt3QkFBbEUsUUFBUSxHQUFHLFNBQXVEO3dCQUVsRSxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFDaEMsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUNoQyxDQUFDOzt3QkFHRixlQUFlLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUMvQyxhQUFhLEdBQUcsZUFBZSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBRXRILHNCQUFPLGFBQWEsRUFBQzs7OztLQUN4Qjs7Ozs7O0lBT2Esb0RBQW1CLEdBQWpDLFVBQWtDLFNBQW9CLEVBQUUsT0FBc0M7Ozs7Z0JBQ3BGLFVBQVUsR0FBc0I7b0JBQ2xDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRO29CQUMxQyxTQUFTLEVBQUUsU0FBUyxDQUFDLGtCQUFrQjtvQkFDdkMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2lCQUN6QixDQUFDO2dCQUNJLFdBQVcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25ELE9BQU8sR0FBMkIsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7Z0JBRWhGLHNCQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUM7OztLQUNyRzs7Ozs7SUFNTyx1REFBc0IsR0FBOUIsVUFBK0IsT0FBc0M7UUFDakUsSUFBTSxnQkFBZ0IsR0FBRyxJQUFJLHVCQUF1QixFQUFFLENBQUM7UUFFdkQsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9ELGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUvQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTNDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUN2RSxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVqQyxJQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNGLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDMUY7UUFFRCxPQUFPLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLENBQUM7S0FDL0M7SUFDTCw2QkFBQztBQUFELENBM0VBLENBQTRDLFVBQVU7O0FDdkJ0RDs7OztBQWVBLFNBQWdCLHNCQUFzQixDQUFDLFFBQWdCO0lBQ25ELFFBQ0ksUUFBUSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQztRQUNqRCxRQUFRLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDO1FBQ3pDLFFBQVEsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUM7UUFDL0MsUUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFDbkM7QUFDTixDQUFDOztBQ3RCRDs7OztBQUtBOzs7QUFHQSxJQUFZLFlBR1g7QUFIRCxXQUFZLFlBQVk7SUFDcEIsMkJBQVcsQ0FBQTtJQUNYLDZCQUFhLENBQUE7QUFDakIsQ0FBQyxFQUhXLFlBQVksS0FBWixZQUFZLFFBR3ZCOztBQ1hEOzs7O0FBT0E7SUFnQkk7UUFDSSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsR0FBRyw0QkFBNEIsQ0FBQyxvQkFBb0IsQ0FBQztLQUMvRjs7Ozs7O0lBT0QsOERBQTRCLEdBQTVCLFVBQTZCLFFBQWdDLEVBQUUsV0FBb0I7UUFDL0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztRQUNoRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDO1FBQ3BELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUM7S0FDekM7Ozs7OztJQU9ELHdEQUFzQixHQUF0QixVQUF1QixRQUE4QixFQUFFLFdBQW9CO1FBQ3ZFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUM7UUFDOUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO1FBQzlDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLENBQUMsb0JBQW9CLENBQUM7UUFDMUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQzlCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxXQUFXLENBQUM7S0FDM0M7Ozs7O0lBTUQsMERBQXdCLEdBQXhCLFVBQXlCLFNBQWlCO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7S0FDeEM7Ozs7SUFLRCxnREFBYyxHQUFkO1FBQ0ksSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLEdBQUcsNEJBQTRCLENBQUMsb0JBQW9CLENBQUM7S0FDL0Y7Ozs7SUFLRCwyQ0FBUyxHQUFUO1FBQ0ksT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQUNuRDs7Ozs7SUFNTSxpREFBeUIsR0FBaEMsVUFBaUMsR0FBVyxFQUFFLE1BQWM7UUFFeEQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsUUFDSSxHQUFHLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDekQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUM7WUFDaEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQztZQUN4QyxNQUFNLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDO1lBQzFDLE1BQU0sQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUM7WUFDNUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQztZQUMvQyxNQUFNLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDO1lBQ3ZDLE1BQU0sQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUM7WUFDN0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7WUFDL0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQztZQUMzQyxNQUFNLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDO1lBQzdDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQ3BDO0tBQ0w7SUFDTCw4QkFBQztBQUFELENBQUM7O0FDbkdEOzs7O0FBZUEsU0FBZ0IsZ0NBQWdDLENBQUMsUUFBZ0I7SUFDN0QsUUFDSSxRQUFRLENBQUMsY0FBYyxDQUFDLDJCQUEyQixDQUFDO1FBQ3BELFFBQVEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQ3JDO0FBQ04sQ0FBQzs7QUNwQkQ7Ozs7QUFvQkE7Ozs7QUFJQTtJQWVJLG1CQUFZLFNBQWlCLEVBQUUsZ0JBQWdDLEVBQUUsWUFBMkIsRUFBRSxnQkFBa0M7UUFDNUgsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztLQUM1QztJQUdELHNCQUFXLG9DQUFhOzthQUF4QjtZQUNJLElBQU0sWUFBWSxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxZQUFZLENBQUM7WUFFdkUsSUFBSSxZQUFZLENBQUMsTUFBTSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFO2dCQUN6RSxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUM7YUFDN0I7WUFFRCxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUM7U0FDaEM7OztPQUFBO0lBS0Qsc0JBQVcsbUNBQVk7Ozs7YUFBdkI7WUFDSSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7U0FDN0M7OztPQUFBO0lBS0Qsc0JBQVcsOEJBQU87Ozs7YUFBbEI7WUFDSSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUNoQzs7O09BQUE7SUFLRCxzQkFBVyx5Q0FBa0I7Ozs7YUFBN0I7WUFDSSxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7U0FDN0M7Ozs7YUFLRCxVQUE4QixHQUFXO1lBQ3JDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLElBQUksQ0FBQztTQUNoRDs7O09BVEE7SUFjRCxzQkFBVyxzREFBK0I7Ozs7YUFBMUM7WUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsZ0NBQWdDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDdkY7WUFFRCxPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQztTQUNoRDs7O09BQUE7SUFLRCxzQkFBVyxzQ0FBZTs7OzthQUExQjtZQUNJLE9BQU8sSUFBSSxDQUFDLCtCQUErQixDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM3RTs7O09BQUE7SUFLRCxzQkFBVyw2QkFBTTs7OzthQUFqQjtZQUNJLE9BQU8sSUFBSSxDQUFDLCtCQUErQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRDs7O09BQUE7SUFLRCxzQkFBVyw0Q0FBcUI7Ozs7YUFBaEM7WUFDSSxJQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO2dCQUN6QixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQztnQkFDeEUsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNILE1BQU0sZUFBZSxDQUFDLHNDQUFzQyxDQUFDLHVCQUF1QixDQUFDLENBQUM7YUFDekY7U0FDSjs7O09BQUE7SUFLRCxzQkFBVyxvQ0FBYTs7OzthQUF4QjtZQUNJLElBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7Z0JBQ3pCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDaEUsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNILE1BQU0sZUFBZSxDQUFDLHNDQUFzQyxDQUFDLHVCQUF1QixDQUFDLENBQUM7YUFDekY7U0FDSjs7O09BQUE7SUFFRCxzQkFBVyx5Q0FBa0I7YUFBN0I7WUFDSSxJQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO2dCQUN6QixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFDakcsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNILE1BQU0sZUFBZSxDQUFDLHNDQUFzQyxDQUFDLHVCQUF1QixDQUFDLENBQUM7YUFDekY7U0FDSjs7O09BQUE7SUFLRCxzQkFBVyx5Q0FBa0I7Ozs7YUFBN0I7WUFDSSxJQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO2dCQUN6QixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFDdEUsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNILE1BQU0sZUFBZSxDQUFDLHNDQUFzQyxDQUFDLHVCQUF1QixDQUFDLENBQUM7YUFDekY7U0FDSjs7O09BQUE7SUFLRCxzQkFBVyw0Q0FBcUI7Ozs7YUFBaEM7WUFDSSxJQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO2dCQUN6QixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN2QztpQkFBTTtnQkFDSCxNQUFNLGVBQWUsQ0FBQyxzQ0FBc0MsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2FBQ3pGO1NBQ0o7OztPQUFBOzs7OztJQU1PLGlDQUFhLEdBQXJCLFVBQXNCLFNBQWlCO1FBQ25DLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDakU7Ozs7O0lBTU8sK0JBQVcsR0FBbkIsVUFBb0IsU0FBaUI7UUFDakMsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQ3pCLElBQU0sa0JBQWtCLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzVFLElBQU0sb0JBQW9CLEdBQUcsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDaEYsSUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsWUFBWSxDQUFDO1FBRWhGLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxVQUFDLFdBQVcsRUFBRSxLQUFLO1lBQzdDLElBQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9DLElBQUksV0FBVyxLQUFLLFVBQVUsRUFBRTtnQkFDNUIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBSSxVQUFVLE1BQUcsRUFBRSxNQUFJLFdBQVcsTUFBRyxDQUFDLENBQUM7YUFDdEU7U0FDSixDQUFDLENBQUM7UUFFSCxPQUFPLFFBQVEsQ0FBQztLQUNuQjtJQUtELHNCQUFjLHlEQUFrQzs7OzthQUFoRDtZQUNJLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssWUFBWSxDQUFDLElBQUksRUFBRTtnQkFDdEYsT0FBVSxJQUFJLENBQUMsa0JBQWtCLHFDQUFrQyxDQUFDO2FBQ3ZFO1lBQ0QsT0FBVSxJQUFJLENBQUMsa0JBQWtCLDBDQUF1QyxDQUFDO1NBQzVFOzs7T0FBQTs7OztJQUtELHFDQUFpQixHQUFqQjtRQUNJLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7S0FDMUI7Ozs7O0lBTVkseUNBQXFCLEdBQWxDOzs7Ozs7d0JBQ1EsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO3dCQUN6RixJQUFJLENBQUMsY0FBYyxFQUFFOzRCQUNqQixjQUFjLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxDQUFDOzRCQUMvQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7eUJBQ3BFO3dCQUU0QixxQkFBTSxJQUFJLENBQUMsNEJBQTRCLENBQUMsY0FBYyxDQUFDLEVBQUE7O3dCQUE5RSxvQkFBb0IsR0FBRyxTQUF1RDt3QkFDcEYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDM0YscUJBQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxFQUFBOzt3QkFBbEUsY0FBYyxHQUFHLFNBQWlEO3dCQUV4RSxJQUFJLG9CQUFvQixLQUFLLHVCQUF1QixDQUFDLEtBQUssSUFBSSxjQUFjLEtBQUssdUJBQXVCLENBQUMsS0FBSyxFQUFFOzs0QkFFNUcsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDOzRCQUNoQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7eUJBQ3BFO3dCQUVLLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGlDQUFpQyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQzt3QkFDckcsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7d0JBQ2pFLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDOzs7OztLQUNsQzs7Ozs7SUFNYSwwQ0FBc0IsR0FBcEMsVUFBcUMsY0FBdUM7Ozs7Ozt3QkFDcEUsUUFBUSxHQUFHLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO3dCQUNwRCxJQUFJLFFBQVEsRUFBRTs0QkFDVixjQUFjLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDOzRCQUN2RCxzQkFBTyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUM7eUJBQ3pDO3dCQUVELElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRTs7NEJBRWhILHNCQUFPLHVCQUF1QixDQUFDLEtBQUssRUFBQzt5QkFDeEM7d0JBRVUscUJBQU0sSUFBSSxDQUFDLDhCQUE4QixFQUFFLEVBQUE7O3dCQUF0RCxRQUFRLEdBQUcsU0FBMkMsQ0FBQzt3QkFDdkQsSUFBSSxRQUFRLEVBQUU7NEJBQ1YsY0FBYyxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQzs0QkFDdEQsc0JBQU8sdUJBQXVCLENBQUMsT0FBTyxFQUFDO3lCQUMxQzs2QkFBTTs0QkFDSCxNQUFNLGVBQWUsQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQzt5QkFDckc7Ozs7S0FDSjs7Ozs7O0lBT08sdUNBQW1CLEdBQTNCLFVBQTRCLGNBQXVDO1FBQy9ELElBQU0sa0JBQWtCLEdBQUcsSUFBSSxTQUFTLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDN0UsSUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFFdkUsT0FBTyxXQUFXLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0tBQzFGOzs7O0lBS08saURBQTZCLEdBQXJDO1FBQ0ksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUU7WUFDekMsSUFBSTtnQkFDQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUF5QixDQUFDO2FBQ3RGO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1IsTUFBTSx3QkFBd0IsQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDO2FBQ3hFO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQztLQUNmOzs7O0lBS2Esa0RBQThCLEdBQTVDOzs7Ozs7O3dCQUV5QixxQkFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQXVCLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFBOzt3QkFBekgsUUFBUSxHQUFHLFNBQThHO3dCQUMvSCxzQkFBTyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUM7Ozt3QkFFcEUsc0JBQU8sSUFBSSxFQUFDOzs7OztLQUVuQjs7Ozs7O0lBT2EsZ0RBQTRCLEdBQTFDLFVBQTJDLGNBQXVDOzs7Ozs7d0JBQzFFLFFBQVEsR0FBRyxJQUFJLENBQUMsbUNBQW1DLEVBQUUsQ0FBQzt3QkFDMUQsSUFBSSxRQUFRLEVBQUU7NEJBQ1YsY0FBYyxDQUFDLDRCQUE0QixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQzs0QkFDN0Qsc0JBQU8sdUJBQXVCLENBQUMsTUFBTSxFQUFDO3lCQUN6Qzs7d0JBR0QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLElBQUksY0FBYyxDQUFDLGtCQUFrQixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFOzs0QkFFOUcsc0JBQU8sdUJBQXVCLENBQUMsS0FBSyxFQUFDO3lCQUN4Qzt3QkFFVSxxQkFBTSxJQUFJLENBQUMsb0NBQW9DLEVBQUUsRUFBQTs7d0JBQTVELFFBQVEsR0FBRyxTQUFpRCxDQUFDO3dCQUM3RCxJQUFJLFFBQVEsRUFBRTs0QkFDVixjQUFjLENBQUMsNEJBQTRCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUM1RCxzQkFBTyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUM7eUJBQzFDOzZCQUFNOzs0QkFFSCxNQUFNLHdCQUF3QixDQUFDLDZCQUE2QixFQUFFLENBQUM7eUJBQ2xFOzs7O0tBQ0o7Ozs7SUFLTyx1REFBbUMsR0FBM0M7O1FBRUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLEVBQUU7WUFDOUMsSUFBSTtnQkFDQSxJQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBbUMsQ0FBQztnQkFDbEgsSUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLDRDQUE0QyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUN2SCxJQUFJLFFBQVEsRUFBRTtvQkFDVixPQUFPLFFBQVEsQ0FBQztpQkFDbkI7YUFDSjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNSLE1BQU0sd0JBQXdCLENBQUMsd0NBQXdDLEVBQUUsQ0FBQzthQUM3RTtTQUNKOztRQUdELElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUU7WUFDN0IsT0FBTyxTQUFTLENBQUMsb0NBQW9DLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQy9FO1FBRUQsT0FBTyxJQUFJLENBQUM7S0FDZjs7Ozs7SUFNYSx3REFBb0MsR0FBbEQ7Ozs7Ozt3QkFDVSx5QkFBeUIsR0FBRyxLQUFHLFNBQVMsQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLDBCQUF1QixDQUFDO3dCQUN6SCxLQUFLLEdBQUcsSUFBSSxDQUFDOzs7O3dCQUVJLHFCQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBaUMseUJBQXlCLENBQUMsRUFBQTs7d0JBQXJILFFBQVEsR0FBRyxTQUEwRzt3QkFDckgsUUFBUSxHQUFHLGdDQUFnQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7d0JBQy9GLEtBQUssR0FBRyxTQUFTLENBQUMsNENBQTRDLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzs7Ozt3QkFFL0Ysc0JBQU8sSUFBSSxFQUFDOzt3QkFHaEIsSUFBSSxDQUFDLEtBQUssRUFBRTs7NEJBRVIsS0FBSyxHQUFHLFNBQVMsQ0FBQyxvQ0FBb0MsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7eUJBQ2hGO3dCQUNELHNCQUFPLEtBQUssRUFBQzs7OztLQUNoQjs7OztJQUtPLHdDQUFvQixHQUE1QjtRQUFBLGlCQU1DO1FBTEcsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxVQUFDLFNBQVM7WUFDcEUsT0FBTyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSSxDQUFDLGVBQWUsQ0FBQztTQUN2RixDQUFDLENBQUM7UUFFSCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0tBQzdCOzs7OztJQU1NLDhDQUFvQyxHQUEzQyxVQUE0QyxJQUFZO1FBQ3BELE9BQU87WUFDSCxpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQztTQUNsQixDQUFDO0tBQ0w7Ozs7OztJQU9NLHNEQUE0QyxHQUFuRCxVQUFvRCxRQUFrQyxFQUFFLFNBQWlCO1FBQ3JHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3RDLElBQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QixJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUMxQyxPQUFPLFFBQVEsQ0FBQzthQUNuQjtTQUNKO1FBRUQsT0FBTyxJQUFJLENBQUM7S0FDZjs7OztJQUtELHFDQUFpQixHQUFqQjtRQUNJLElBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztTQUN4QzthQUFNO1lBQ0gsTUFBTSxlQUFlLENBQUMsc0NBQXNDLENBQUMsdUJBQXVCLENBQUMsQ0FBQztTQUN6RjtLQUNKOzs7OztJQU1ELDJCQUFPLEdBQVAsVUFBUSxJQUFZO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQ25EO0lBQ0wsZ0JBQUM7QUFBRCxDQUFDOztBQ3JiRDs7Ozs7SUFhQTtLQTBDQzs7Ozs7Ozs7Ozs7SUE5QmdCLHlDQUF3QixHQUFyQyxVQUFzQyxZQUFvQixFQUFFLGFBQTZCLEVBQUUsWUFBMkIsRUFBRSxnQkFBa0M7Ozs7Ozt3QkFFaEoscUJBQXFCLEdBQWMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixDQUFDLENBQUM7Ozs7d0JBR2xJLHFCQUFNLHFCQUFxQixDQUFDLHFCQUFxQixFQUFFLEVBQUE7O3dCQUFuRCxTQUFtRCxDQUFDO3dCQUNwRCxzQkFBTyxxQkFBcUIsRUFBQzs7O3dCQUU3QixNQUFNLGVBQWUsQ0FBQyxzQ0FBc0MsQ0FBQyxHQUFDLENBQUMsQ0FBQzs7Ozs7S0FFdkU7Ozs7Ozs7Ozs7O0lBWU0sK0JBQWMsR0FBckIsVUFBc0IsWUFBb0IsRUFBRSxnQkFBZ0MsRUFBRSxZQUEyQixFQUFFLGdCQUFrQzs7UUFFekksSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ25DLE1BQU0sd0JBQXdCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUN4RDtRQUVELE9BQU8sSUFBSSxTQUFTLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0tBQ3hGO0lBQ0wsdUJBQUM7QUFBRCxDQUFDOztBQ3ZERDs7OztBQUtBO0lBT0k7UUFDSSxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztLQUN0Qjs7Ozs7O0lBT00sNkNBQXVCLEdBQTlCLFVBQStCLEdBQVcsRUFBRSxNQUFlO1FBRXZELElBQU0sV0FBVyxHQUFZLEdBQUcsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pGLElBQUksY0FBYyxHQUFZLElBQUksQ0FBQztRQUVuQyxJQUFJLE1BQU0sRUFBRTtZQUNSLGNBQWM7Z0JBQ1YsTUFBTSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDdkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQy9CLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDMUM7UUFFRCxPQUFPLFdBQVcsSUFBSSxjQUFjLENBQUM7S0FDeEM7SUFDTCw0QkFBQztBQUFELENBQUM7O0FDckNEOzs7O0FBS0E7SUFFQTtLQTRCQzs7Ozs7O0lBZFUsbUNBQWtCLEdBQXpCLFVBQTBCLEdBQVcsRUFBRSxNQUFlO1FBRWxELElBQUksV0FBVyxHQUFZLEtBQUssQ0FBQztRQUNqQyxJQUFJLEdBQUcsRUFBRTtZQUNMLFdBQVcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFFO1FBRUQsSUFBSSxjQUFjLEdBQVksSUFBSSxDQUFDO1FBQ25DLElBQUksTUFBTSxFQUFFO1lBQ1IsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDMUQ7UUFFRCxPQUFPLFdBQVcsSUFBSSxjQUFjLENBQUM7S0FDeEM7SUFDTCx1QkFBQztBQUFELENBQUM7O0FDbkNEOzs7O0FBS0EsSUFrQ2Esb0JBQW9CLEdBQW1CO0lBQ2hELG1CQUFtQixFQUFFO1FBQ2pCLElBQU0sVUFBVSxHQUFHLCtGQUErRixDQUFDO1FBQ25ILE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztLQUN0RTtJQUNELG9CQUFvQixFQUFFO1FBQ2xCLElBQU0sVUFBVSxHQUFHLGdHQUFnRyxDQUFDO1FBQ3BILE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztLQUN0RTtDQUNKOztBQ2hERDs7OztBQUtBO0lBZ0JJLGdDQUFZLGdCQUF3QyxFQUFFLFlBQTBCO1FBQzVFLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO1FBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQztRQUMzRCxJQUFJLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDO1FBQ3hFLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFFeEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLHNCQUFzQixDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO0tBQzFIOzs7O0lBS0Qsa0VBQWlDLEdBQWpDO1FBQ0ksSUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELElBQU0sT0FBTyxHQUFHLEtBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxzQkFBc0IsQ0FBQyxlQUFlLEdBQUcsZUFBaUIsQ0FBQztRQUMzRixJQUFNLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV2RyxPQUFPLENBQUMsc0JBQXNCLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztLQUMzSDs7OztJQUtELCtEQUE4QixHQUE5QjtRQUNJLElBQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUU1QyxJQUFNLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkUsSUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdEgsSUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwRyxJQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQzs7UUFHOUMsSUFBTSxRQUFRLEdBQUcsU0FBUyxHQUFHLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQyxhQUFhLEdBQUcsc0JBQXNCLENBQUMsY0FBYyxDQUFDO1FBQ3ZILElBQU0sY0FBYyxHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUzRixPQUFPLENBQUMsc0JBQXNCLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztLQUNsSzs7Ozs7SUFNRCxtREFBa0IsR0FBbEIsVUFBbUIsS0FBZ0I7UUFDL0IsSUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVDLFlBQVksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWpFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN0QyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDNUM7YUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDOUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzdDO2FBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNwQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUM5QzthQUFNO1lBQ0gsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDbEU7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUUzRSxPQUFPO0tBQ1Y7Ozs7SUFLRCxtREFBa0IsR0FBbEI7UUFDSSxJQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDNUMsWUFBWSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDM0UsT0FBTyxZQUFZLENBQUMsU0FBUyxDQUFDO0tBQ2pDOzs7O0lBS0QsZ0RBQWUsR0FBZjtRQUNJLElBQU0sWUFBWSxHQUEwQixJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDeEUsSUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQTBCLENBQUM7UUFFM0csT0FBTyxZQUFZLElBQUksWUFBWSxDQUFDO0tBQ3ZDOzs7O0lBS0Qsb0RBQW1CLEdBQW5CO1FBQ0ksSUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVDLElBQU0sZ0JBQWdCLEdBQUcsc0JBQXNCLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlFLElBQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzlDLElBQUksZ0JBQWdCLEtBQUssVUFBVSxFQUFFOztZQUVqQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUN4RDthQUFNOztZQUVILElBQU0saUJBQWlCLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1lBQ3RELGlCQUFpQixDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RixpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUV2RSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1NBQ25GO0tBQ0o7Ozs7O0lBTU0sc0NBQWUsR0FBdEIsVUFBdUIscUJBQTRDO1FBQy9ELElBQUksQ0FBQyxDQUFDO1FBQ04sSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3ZELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFOztZQUU3QixJQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUM7WUFDbEYsSUFBTSxhQUFhLEdBQUcscUJBQXFCLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQztZQUM5RixJQUFNLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQzs7WUFHNUUsUUFBUSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUU3RixJQUFJLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxnQkFBZ0IsRUFBRTs7Z0JBRXBELFNBQVMsSUFBSSxDQUFDLENBQUM7YUFDbEI7aUJBQU07Z0JBQ0gsTUFBTTthQUNUO1NBQ0o7UUFFRCxPQUFPLFNBQVMsQ0FBQztLQUNwQjtJQUNMLDZCQUFDO0FBQUQsQ0FBQzs7OzsifQ==\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { OIDC_DEFAULT_SCOPES } from \"@azure/msal-common\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\n\r\n/**\r\n * Constants\r\n */\r\nexport const BrowserConstants = {\r\n /**\r\n * Interaction in progress cache value\r\n */\r\n INTERACTION_IN_PROGRESS_VALUE: \"interaction_in_progress\",\r\n /**\r\n * Invalid grant error code\r\n */\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n /**\r\n * Default popup window width\r\n */\r\n POPUP_WIDTH: 483,\r\n /**\r\n * Default popup window height\r\n */\r\n POPUP_HEIGHT: 600,\r\n /**\r\n * Name of the popup window starts with\r\n */\r\n POPUP_NAME_PREFIX: \"msal\",\r\n /**\r\n * Default popup monitor poll interval in milliseconds\r\n */\r\n POLL_INTERVAL_MS: 50,\r\n /**\r\n * Msal-browser SKU\r\n */\r\n MSAL_SKU: \"msal.js.browser\",\r\n};\r\n\r\nexport enum BrowserCacheLocation {\r\n LocalStorage = \"localStorage\",\r\n SessionStorage = \"sessionStorage\",\r\n MemoryStorage = \"memoryStorage\"\r\n}\r\n\r\n/**\r\n * HTTP Request types supported by MSAL.\r\n */\r\nexport enum HTTP_REQUEST_TYPE {\r\n GET = \"GET\",\r\n POST = \"POST\"\r\n}\r\n\r\n/**\r\n * Temporary cache keys for MSAL, deleted after any request.\r\n */\r\nexport enum TemporaryCacheKeys {\r\n AUTHORITY = \"authority\",\r\n ACQUIRE_TOKEN_ACCOUNT = \"acquireToken.account\",\r\n SESSION_STATE = \"session.state\",\r\n REQUEST_STATE = \"request.state\",\r\n NONCE_IDTOKEN = \"nonce.id_token\",\r\n ORIGIN_URI = \"request.origin\",\r\n RENEW_STATUS = \"token.renew.status\",\r\n URL_HASH = \"urlHash\",\r\n REQUEST_PARAMS = \"request.params\",\r\n SCOPES = \"scopes\",\r\n INTERACTION_STATUS_KEY = \"interaction.status\"\r\n}\r\n\r\n/**\r\n * API Codes for Telemetry purposes. \r\n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\r\n * 0-99 Silent Flow\r\n * 800-899 Auth Code Flow\r\n */\r\nexport enum ApiId {\r\n acquireTokenRedirect = 861,\r\n acquireTokenPopup = 862,\r\n ssoSilent = 863,\r\n acquireTokenSilent_authCode = 864,\r\n handleRedirectPromise = 865,\r\n acquireTokenSilent_silentFlow = 61,\r\n logout = 961,\r\n logoutPopup = 962\r\n}\r\n\r\n/*\r\n * Interaction type of the API - used for state and telemetry\r\n */\r\nexport enum InteractionType {\r\n Redirect = \"redirect\",\r\n Popup = \"popup\",\r\n Silent = \"silent\"\r\n}\r\n\r\n/**\r\n * Types of interaction currently in progress.\r\n * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete.\r\n */\r\nexport enum InteractionStatus {\r\n /**\r\n * Initial status before interaction occurs\r\n */\r\n Startup = \"startup\",\r\n /**\r\n * Status set when all login calls occuring\r\n */\r\n Login = \"login\",\r\n /**\r\n * Status set when logout call occuring\r\n */ \r\n Logout = \"logout\",\r\n /**\r\n * Status set for acquireToken calls\r\n */\r\n AcquireToken = \"acquireToken\",\r\n /**\r\n * Status set for ssoSilent calls\r\n */\r\n SsoSilent = \"ssoSilent\",\r\n /**\r\n * Status set when handleRedirect in progress\r\n */\r\n HandleRedirect = \"handleRedirect\",\r\n /**\r\n * Status set when interaction is complete\r\n */\r\n None = \"none\"\r\n}\r\n\r\nexport const DEFAULT_REQUEST: RedirectRequest|PopupRequest = {\r\n scopes: OIDC_DEFAULT_SCOPES\r\n};\r\n\r\n/**\r\n * JWK Key Format string (Type MUST be defined for window crypto APIs)\r\n */\r\nexport const KEY_FORMAT_JWK = \"jwk\";\r\n\r\n// Supported wrapper SKUs\r\nexport enum WrapperSKU {\r\n React = \"@azure/msal-react\",\r\n Angular = \"@azure/msal-angular\"\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Utility class for math specific functions in browser.\r\n */\r\nexport class MathUtils {\r\n\r\n /**\r\n * Decimal to Hex\r\n *\r\n * @param num\r\n */\r\n static decimalToHex(num: number): string {\r\n let hex: string = num.toString(16);\r\n while (hex.length < 2) {\r\n hex = \"0\" + hex;\r\n }\r\n return hex;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { MathUtils } from \"../utils/MathUtils\";\r\nimport { BrowserCrypto } from \"./BrowserCrypto\";\r\n\r\nexport class GuidGenerator {\r\n\r\n // browser crypto object used to generate random values\r\n private cryptoObj: BrowserCrypto;\r\n\r\n constructor(cryptoObj: BrowserCrypto) {\r\n this.cryptoObj = cryptoObj;\r\n }\r\n\r\n /*\r\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or\r\n * pseudo-random numbers.\r\n * The algorithm is as follows:\r\n * Set the two most significant bits (bits 6 and 7) of the\r\n * clock_seq_hi_and_reserved to zero and one, respectively.\r\n * Set the four most significant bits (bits 12 through 15) of the\r\n * time_hi_and_version field to the 4-bit version number from\r\n * Section 4.1.3. Version4\r\n * Set all the other bits to randomly (or pseudo-randomly) chosen\r\n * values.\r\n * UUID = time-low \"-\" time-mid \"-\"time-high-and-version \"-\"clock-seq-reserved and low(2hexOctet)\"-\" node\r\n * time-low = 4hexOctet\r\n * time-mid = 2hexOctet\r\n * time-high-and-version = 2hexOctet\r\n * clock-seq-and-reserved = hexOctet:\r\n * clock-seq-low = hexOctet\r\n * node = 6hexOctet\r\n * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\r\n * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10\r\n * y values are 8, 9, A, B\r\n */\r\n generateGuid(): string {\r\n try {\r\n const buffer: Uint8Array = new Uint8Array(16);\r\n this.cryptoObj.getRandomValues(buffer);\r\n\r\n // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).\r\n buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.\r\n buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = \"4\".\r\n\r\n // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.\r\n buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.\r\n buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.\r\n\r\n return MathUtils.decimalToHex(buffer[0]) + MathUtils.decimalToHex(buffer[1])\r\n + MathUtils.decimalToHex(buffer[2]) + MathUtils.decimalToHex(buffer[3])\r\n + \"-\" + MathUtils.decimalToHex(buffer[4]) + MathUtils.decimalToHex(buffer[5])\r\n + \"-\" + MathUtils.decimalToHex(buffer[6]) + MathUtils.decimalToHex(buffer[7])\r\n + \"-\" + MathUtils.decimalToHex(buffer[8]) + MathUtils.decimalToHex(buffer[9])\r\n + \"-\" + MathUtils.decimalToHex(buffer[10]) + MathUtils.decimalToHex(buffer[11])\r\n + MathUtils.decimalToHex(buffer[12]) + MathUtils.decimalToHex(buffer[13])\r\n + MathUtils.decimalToHex(buffer[14]) + MathUtils.decimalToHex(buffer[15]);\r\n }\r\n catch (err) {\r\n const guidHolder: string = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\r\n const hex: string = \"0123456789abcdef\";\r\n let r: number = 0;\r\n let guidResponse: string = \"\";\r\n for (let i: number = 0; i < 36; i++) {\r\n if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\r\n // each x and y needs to be random\r\n r = Math.random() * 16 | 0;\r\n }\r\n if (guidHolder[i] === \"x\") {\r\n guidResponse += hex[r];\r\n } else if (guidHolder[i] === \"y\") {\r\n // clock-seq-and-reserved first hex is filtered and remaining hex values are random\r\n r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\r\n r |= 0x8; // set pos 3 to 1 as 1???\r\n guidResponse += hex[r];\r\n } else {\r\n guidResponse += guidHolder[i];\r\n }\r\n }\r\n return guidResponse;\r\n }\r\n }\r\n\r\n /**\r\n * verifies if a string is GUID\r\n * @param guid\r\n */\r\n static isGuid(guid: string): boolean {\r\n const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\r\n return regexGuid.test(guid);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Utility functions for strings in a browser. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nexport class BrowserStringUtils {\r\n\r\n /**\r\n * Converts string to Uint8Array\r\n * @param sDOMStr \r\n */\r\n static stringToUtf8Arr (sDOMStr: string): Uint8Array {\r\n let nChr;\r\n let nArrLen = 0;\r\n const nStrLen = sDOMStr.length;\r\n /* mapping... */\r\n for (let nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {\r\n nChr = sDOMStr.charCodeAt(nMapIdx);\r\n nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;\r\n }\r\n\r\n const aBytes = new Uint8Array(nArrLen);\r\n\r\n /* transcription... */\r\n\r\n for (let nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {\r\n nChr = sDOMStr.charCodeAt(nChrIdx);\r\n if (nChr < 128) {\r\n /* one byte */\r\n aBytes[nIdx++] = nChr;\r\n } else if (nChr < 0x800) {\r\n /* two bytes */\r\n aBytes[nIdx++] = 192 + (nChr >>> 6);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else if (nChr < 0x10000) {\r\n /* three bytes */\r\n aBytes[nIdx++] = 224 + (nChr >>> 12);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else if (nChr < 0x200000) {\r\n /* four bytes */\r\n aBytes[nIdx++] = 240 + (nChr >>> 18);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else if (nChr < 0x4000000) {\r\n /* five bytes */\r\n aBytes[nIdx++] = 248 + (nChr >>> 24);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else /* if (nChr <= 0x7fffffff) */ {\r\n /* six bytes */\r\n aBytes[nIdx++] = 252 + (nChr >>> 30);\r\n aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n }\r\n\r\n return aBytes; \r\n }\r\n\r\n /**\r\n * Converst string to ArrayBuffer\r\n * @param dataString \r\n */\r\n static stringToArrayBuffer(dataString: string): ArrayBuffer {\r\n const data = new ArrayBuffer(dataString.length);\r\n const dataView = new Uint8Array(data);\r\n for (let i: number = 0; i < dataString.length; i++) {\r\n dataView[i] = dataString.charCodeAt(i);\r\n }\r\n return data;\r\n }\r\n\r\n /**\r\n * Converts Uint8Array to a string\r\n * @param aBytes \r\n */\r\n static utf8ArrToString (aBytes: Uint8Array): string {\r\n let sView = \"\";\r\n for (let nPart, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nPart = aBytes[nIdx];\r\n sView += String.fromCharCode(\r\n nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\r\n /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */\r\n (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\r\n (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\r\n (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\r\n (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\r\n (nPart - 192 << 6) + aBytes[++nIdx] - 128\r\n : /* nPart < 127 ? */ /* one byte */\r\n nPart\r\n );\r\n }\r\n return sView;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\n\r\n/**\r\n * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nexport class Base64Encode {\r\n \r\n /**\r\n * Returns URL Safe b64 encoded string from a plaintext string.\r\n * @param input \r\n */\r\n urlEncode(input: string): string {\r\n return encodeURIComponent(this.encode(input)\r\n .replace(/=/g, \"\")\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\"));\r\n }\r\n\r\n /**\r\n * Returns URL Safe b64 encoded string from an int8Array.\r\n * @param inputArr \r\n */\r\n urlEncodeArr(inputArr: Uint8Array): string {\r\n return this.base64EncArr(inputArr)\r\n .replace(/=/g, \"\")\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\");\r\n }\r\n\r\n /**\r\n * Returns b64 encoded string from plaintext string.\r\n * @param input \r\n */\r\n encode(input: string): string {\r\n const inputUtf8Arr = BrowserStringUtils.stringToUtf8Arr(input);\r\n return this.base64EncArr(inputUtf8Arr);\r\n }\r\n\r\n /**\r\n * Base64 encode byte array\r\n * @param aBytes \r\n */\r\n private base64EncArr(aBytes: Uint8Array): string { \r\n const eqLen = (3 - (aBytes.length % 3)) % 3;\r\n let sB64Enc = \"\";\r\n \r\n for (let nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nMod3 = nIdx % 3;\r\n /* Uncomment the following line in order to split the output in lines 76-character long: */\r\n /*\r\n *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += \"\\r\\n\"; }\r\n */\r\n nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);\r\n if (nMod3 === 2 || aBytes.length - nIdx === 1) {\r\n sB64Enc += String.fromCharCode(\r\n this.uint6ToB64(nUint24 >>> 18 & 63), \r\n this.uint6ToB64(nUint24 >>> 12 & 63), \r\n this.uint6ToB64(nUint24 >>> 6 & 63), \r\n this.uint6ToB64(nUint24 & 63)\r\n );\r\n nUint24 = 0;\r\n }\r\n }\r\n\r\n return eqLen === 0 ? sB64Enc : sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? \"=\" : \"==\");\r\n }\r\n\r\n /**\r\n * Base64 string to array encoding helper\r\n * @param nUint6 \r\n */\r\n private uint6ToB64 (nUint6: number): number {\r\n return nUint6 < 26 ?\r\n nUint6 + 65\r\n : nUint6 < 52 ?\r\n nUint6 + 71\r\n : nUint6 < 62 ?\r\n nUint6 - 4\r\n : nUint6 === 62 ?\r\n 43\r\n : nUint6 === 63 ?\r\n 47\r\n :\r\n 65;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\n\r\n/**\r\n * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nexport class Base64Decode {\r\n\r\n /**\r\n * Returns a URL-safe plaintext decoded string from b64 encoded input.\r\n * @param input \r\n */\r\n decode(input: string): string {\r\n let encodedString = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n switch (encodedString.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n encodedString += \"==\";\r\n break;\r\n case 3:\r\n encodedString += \"=\";\r\n break;\r\n default:\r\n throw new Error(\"Invalid base64 string\");\r\n }\r\n\r\n const inputUtf8Arr = this.base64DecToArr(encodedString);\r\n return BrowserStringUtils.utf8ArrToString(inputUtf8Arr);\r\n }\r\n\r\n /**\r\n * Decodes base64 into Uint8Array\r\n * @param base64String \r\n * @param nBlockSize \r\n */\r\n private base64DecToArr(base64String: string, nBlockSize?: number): Uint8Array {\r\n const sB64Enc = base64String.replace(/[^A-Za-z0-9\\+\\/]/g, \"\");\r\n const nInLen = sB64Enc.length;\r\n const nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2;\r\n const aBytes = new Uint8Array(nOutLen);\r\n\r\n for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\r\n nMod4 = nInIdx & 3;\r\n nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;\r\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\r\n for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\r\n aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;\r\n }\r\n nUint24 = 0;\r\n }\r\n }\r\n\r\n return aBytes;\r\n }\r\n\r\n /**\r\n * Base64 string to array decoding helper\r\n * @param charNum \r\n */\r\n private b64ToUint6(charNum: number): number {\r\n return charNum > 64 && charNum < 91 ?\r\n charNum - 65\r\n : charNum > 96 && charNum < 123 ? \r\n charNum - 71\r\n : charNum > 47 && charNum < 58 ?\r\n charNum + 4\r\n : charNum === 43 ?\r\n 62\r\n : charNum === 47 ?\r\n 63\r\n :\r\n 0;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError, StringUtils } from \"@azure/msal-common\";\r\n\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const BrowserAuthErrorMessage = {\r\n pkceNotGenerated: {\r\n code: \"pkce_not_created\",\r\n desc: \"The PKCE code challenge and verifier could not be generated.\"\r\n },\r\n cryptoDoesNotExist: {\r\n code: \"crypto_nonexistent\",\r\n desc: \"The crypto object or function is not available.\"\r\n },\r\n httpMethodNotImplementedError: {\r\n code: \"http_method_not_implemented\",\r\n desc: \"The HTTP method given has not been implemented in this library.\"\r\n },\r\n emptyNavigateUriError: {\r\n code: \"empty_navigate_uri\",\r\n desc: \"Navigation URI is empty. Please check stack trace for more info.\"\r\n },\r\n hashEmptyError: {\r\n code: \"hash_empty_error\",\r\n desc: \"Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash.\"\r\n },\r\n hashDoesNotContainStateError: {\r\n code: \"no_state_in_hash\",\r\n desc: \"Hash does not contain state. Please verify that the request originated from msal.\"\r\n },\r\n hashDoesNotContainKnownPropertiesError: {\r\n code: \"hash_does_not_contain_known_properties\",\r\n desc: \"Hash does not contain known properites. Please verify that your redirectUri is not changing the hash.\"\r\n },\r\n unableToParseStateError: {\r\n code: \"unable_to_parse_state\",\r\n desc: \"Unable to parse state. Please verify that the request originated from msal.\"\r\n },\r\n stateInteractionTypeMismatchError: {\r\n code: \"state_interaction_type_mismatch\",\r\n desc: \"Hash contains state but the interaction type does not match the caller.\"\r\n },\r\n interactionInProgress: {\r\n code: \"interaction_in_progress\",\r\n desc: \"Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n popUpWindowError: {\r\n code: \"popup_window_error\",\r\n desc: \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\"\r\n },\r\n emptyWindowError: {\r\n code: \"empty_window_error\",\r\n desc: \"window.open returned null or undefined window object.\"\r\n },\r\n userCancelledError: {\r\n code: \"user_cancelled\",\r\n desc: \"User cancelled the flow.\"\r\n },\r\n monitorPopupTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in popup failed due to timeout.\"\r\n },\r\n monitorIframeTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in iframe failed due to timeout.\"\r\n },\r\n redirectInIframeError: {\r\n code: \"redirect_in_iframe\",\r\n desc: \"Code flow is not supported inside an iframe. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.\"\r\n },\r\n blockTokenRequestsInHiddenIframeError: {\r\n code: \"block_iframe_reload\",\r\n desc: \"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n blockAcquireTokenInPopupsError: {\r\n code: \"block_nested_popups\",\r\n desc: \"Request was blocked inside a popup because MSAL detected it was running in a popup.\"\r\n },\r\n iframeClosedPrematurelyError: {\r\n code: \"iframe_closed_prematurely\",\r\n desc: \"The iframe being monitored was closed prematurely.\"\r\n },\r\n silentSSOInsufficientInfoError: {\r\n code: \"silent_sso_error\",\r\n desc: \"Silent SSO could not be completed - insufficient information was provided. Please provide either a loginHint or sid.\"\r\n },\r\n noAccountError: {\r\n code: \"no_account_error\",\r\n desc: \"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.\"\r\n },\r\n silentPromptValueError: {\r\n code: \"silent_prompt_value_error\",\r\n desc: \"The value given for the prompt value is not valid for silent requests - must be set to 'none'.\"\r\n },\r\n noTokenRequestCacheError: {\r\n code: \"no_token_request_cache_error\",\r\n desc: \"No token request in found in cache.\"\r\n },\r\n unableToParseTokenRequestCacheError: {\r\n code: \"unable_to_parse_token_request_cache_error\",\r\n desc: \"The cached token request could not be parsed.\"\r\n },\r\n noCachedAuthorityError: {\r\n code: \"no_cached_authority_error\",\r\n desc: \"No cached authority found.\"\r\n },\r\n authRequestNotSet: {\r\n code: \"auth_request_not_set_error\",\r\n desc: \"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler\"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n notInBrowserEnvironment: {\r\n code: \"non_browser_environment\",\r\n desc: \"Login and token requests are not supported in non-browser environments.\"\r\n },\r\n databaseNotOpen: {\r\n code: \"database_not_open\",\r\n desc: \"Database is not open!\"\r\n },\r\n noNetworkConnectivity: {\r\n code: \"no_network_connectivity\",\r\n desc: \"No network connectivity. Check your internet connection.\"\r\n },\r\n postRequestFailed: {\r\n code: \"post_request_failed\",\r\n desc: \"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'\"\r\n },\r\n getRequestFailed: {\r\n code: \"get_request_failed\",\r\n desc: \"Network request failed. Please check the network trace to determine root cause.\"\r\n },\r\n failedToParseNetworkResponse: {\r\n code: \"failed_to_parse_response\",\r\n desc: \"Failed to parse network response. Check network trace.\"\r\n }\r\n};\r\n\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nexport class BrowserAuthError extends AuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n\r\n Object.setPrototypeOf(this, BrowserAuthError.prototype);\r\n this.name = \"BrowserAuthError\";\r\n }\r\n\r\n /**\r\n * Creates an error thrown when PKCE is not implemented.\r\n * @param errDetail \r\n */\r\n static createPkceNotGeneratedError(errDetail: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.pkceNotGenerated.code,\r\n `${BrowserAuthErrorMessage.pkceNotGenerated.desc} Detail:${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the crypto object is unavailable.\r\n * @param errDetail \r\n */\r\n static createCryptoNotAvailableError(errDetail: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.cryptoDoesNotExist.code,\r\n `${BrowserAuthErrorMessage.cryptoDoesNotExist.desc} Detail:${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when an HTTP method hasn't been implemented by the browser class.\r\n * @param method \r\n */\r\n static createHttpMethodNotImplementedError(method: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.httpMethodNotImplementedError.code,\r\n `${BrowserAuthErrorMessage.httpMethodNotImplementedError.desc} Given Method: ${method}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the navigation URI is empty.\r\n */\r\n static createEmptyNavigationUriError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyNavigateUriError.code, BrowserAuthErrorMessage.emptyNavigateUriError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n * @param hashValue \r\n */\r\n static createEmptyHashError(hashValue: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashEmptyError.code, `${BrowserAuthErrorMessage.hashEmptyError.desc} Given Url: ${hashValue}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n static createHashDoesNotContainStateError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainStateError.code, BrowserAuthErrorMessage.hashDoesNotContainStateError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value does not contain known properties\r\n */\r\n static createHashDoesNotContainKnownPropertiesError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.code, BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n static createUnableToParseStateError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseStateError.code, BrowserAuthErrorMessage.unableToParseStateError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the state value in the hash does not match the interaction type of the API attempting to consume it.\r\n */\r\n static createStateInteractionTypeMismatchError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.stateInteractionTypeMismatchError.code, BrowserAuthErrorMessage.stateInteractionTypeMismatchError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when a browser interaction (redirect or popup) is in progress.\r\n */\r\n static createInteractionInProgressError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.interactionInProgress.code, BrowserAuthErrorMessage.interactionInProgress.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the popup window could not be opened.\r\n * @param errDetail \r\n */\r\n static createPopupWindowError(errDetail?: string): BrowserAuthError {\r\n let errorMessage = BrowserAuthErrorMessage.popUpWindowError.desc;\r\n errorMessage = !StringUtils.isEmpty(errDetail) ? `${errorMessage} Details: ${errDetail}` : errorMessage;\r\n return new BrowserAuthError(BrowserAuthErrorMessage.popUpWindowError.code, errorMessage);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when window.open returns an empty window object.\r\n * @param errDetail \r\n */\r\n static createEmptyWindowCreatedError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyWindowError.code, BrowserAuthErrorMessage.emptyWindowError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the user closes a popup.\r\n */\r\n static createUserCancelledError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.userCancelledError.code,\r\n BrowserAuthErrorMessage.userCancelledError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when monitorPopupFromHash times out for a given popup.\r\n */\r\n static createMonitorPopupTimeoutError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorPopupTimeoutError.code,\r\n BrowserAuthErrorMessage.monitorPopupTimeoutError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when monitorIframeFromHash times out for a given iframe.\r\n */\r\n static createMonitorIframeTimeoutError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorIframeTimeoutError.code,\r\n BrowserAuthErrorMessage.monitorIframeTimeoutError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when navigateWindow is called inside an iframe.\r\n * @param windowParentCheck \r\n */\r\n static createRedirectInIframeError(windowParentCheck: boolean): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.redirectInIframeError.code, \r\n `${BrowserAuthErrorMessage.redirectInIframeError.desc} (window.parent !== window) => ${windowParentCheck}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when an auth reload is done inside an iframe.\r\n */\r\n static createBlockReloadInHiddenIframeError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.code,\r\n BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when a popup attempts to call an acquireToken API\r\n * @returns \r\n */\r\n static createBlockAcquireTokenInPopupsError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.code, \r\n BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when an iframe is found to be closed before the timeout is reached.\r\n */\r\n static createIframeClosedPrematurelyError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.iframeClosedPrematurelyError.code, BrowserAuthErrorMessage.iframeClosedPrematurelyError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the login_hint, sid or account object is not provided in the ssoSilent API.\r\n */\r\n static createSilentSSOInsufficientInfoError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentSSOInsufficientInfoError.code, BrowserAuthErrorMessage.silentSSOInsufficientInfoError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the account object is not provided in the acquireTokenSilent API.\r\n */\r\n static createNoAccountError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noAccountError.code, BrowserAuthErrorMessage.noAccountError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when a given prompt value is invalid for silent requests.\r\n */\r\n static createSilentPromptValueError(givenPrompt: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentPromptValueError.code, `${BrowserAuthErrorMessage.silentPromptValueError.desc} Given value: ${givenPrompt}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the cached token request could not be retrieved from the cache\r\n */\r\n static createUnableToParseTokenRequestCacheError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.code,\r\n BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the token request could not be retrieved from the cache\r\n */\r\n static createNoTokenRequestCacheError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noTokenRequestCacheError.code,\r\n BrowserAuthErrorMessage.noTokenRequestCacheError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when handleCodeResponse is called before initiateAuthRequest (InteractionHandler)\r\n */\r\n static createAuthRequestNotSetError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authRequestNotSet.code,\r\n BrowserAuthErrorMessage.authRequestNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the authority could not be retrieved from the cache\r\n */\r\n static createNoCachedAuthorityError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noCachedAuthorityError.code,\r\n BrowserAuthErrorMessage.noCachedAuthorityError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if cache type is invalid.\r\n */\r\n static createInvalidCacheTypeError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.invalidCacheType.code, `${BrowserAuthErrorMessage.invalidCacheType.desc}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when login and token requests are made from a non-browser environment\r\n */\r\n static createNonBrowserEnvironmentError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.notInBrowserEnvironment.code, BrowserAuthErrorMessage.notInBrowserEnvironment.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when indexDB database is not open\r\n */\r\n static createDatabaseNotOpenError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseNotOpen.code, BrowserAuthErrorMessage.databaseNotOpen.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when token fetch fails due to no internet\r\n */\r\n static createNoNetworkConnectivityError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noNetworkConnectivity.code, BrowserAuthErrorMessage.noNetworkConnectivity.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when token fetch fails due to reasons other than internet connectivity\r\n */\r\n static createPostRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.postRequestFailed.code, `${BrowserAuthErrorMessage.postRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when get request fails due to reasons other than internet connectivity\r\n */\r\n static createGetRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.getRequestFailed.code, `${BrowserAuthErrorMessage.getRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when network client fails to parse network response\r\n */\r\n static createFailedToParseNetworkResponseError(endpoint: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.failedToParseNetworkResponse.code, `${BrowserAuthErrorMessage.failedToParseNetworkResponse.desc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { PkceCodes } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { Base64Encode } from \"../encode/Base64Encode\";\r\nimport { BrowserCrypto } from \"./BrowserCrypto\";\r\n\r\n// Constant byte array length\r\nconst RANDOM_BYTE_ARR_LENGTH = 32;\r\n\r\n/**\r\n * Class which exposes APIs to generate PKCE codes and code verifiers.\r\n */\r\nexport class PkceGenerator {\r\n\r\n private base64Encode: Base64Encode;\r\n private cryptoObj: BrowserCrypto;\r\n\r\n constructor(cryptoObj: BrowserCrypto) {\r\n this.base64Encode = new Base64Encode();\r\n this.cryptoObj = cryptoObj;\r\n }\r\n\r\n /**\r\n * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636\r\n */\r\n async generateCodes(): Promise {\r\n const codeVerifier = this.generateCodeVerifier();\r\n const codeChallenge = await this.generateCodeChallengeFromVerifier(codeVerifier);\r\n return {\r\n verifier: codeVerifier,\r\n challenge: codeChallenge\r\n };\r\n }\r\n\r\n /**\r\n * Generates a random 32 byte buffer and returns the base64\r\n * encoded string to be used as a PKCE Code Verifier\r\n */\r\n private generateCodeVerifier(): string {\r\n try {\r\n // Generate random values as utf-8\r\n const buffer: Uint8Array = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);\r\n this.cryptoObj.getRandomValues(buffer);\r\n // encode verifier as base64\r\n const pkceCodeVerifierB64: string = this.base64Encode.urlEncodeArr(buffer);\r\n return pkceCodeVerifierB64;\r\n } catch (e) {\r\n throw BrowserAuthError.createPkceNotGeneratedError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Creates a base64 encoded PKCE Code Challenge string from the\r\n * hash created from the PKCE Code Verifier supplied\r\n */\r\n private async generateCodeChallengeFromVerifier(pkceCodeVerifier: string): Promise {\r\n try {\r\n // hashed verifier\r\n const pkceHashedCodeVerifier = await this.cryptoObj.sha256Digest(pkceCodeVerifier);\r\n // encode hash as base64\r\n return this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier));\r\n } catch (e) {\r\n throw BrowserAuthError.createPkceNotGeneratedError(e);\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\r\n/**\r\n * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams\r\n */\r\n// RSA KeyGen Algorithm\r\nconst PKCS1_V15_KEYGEN_ALG = \"RSASSA-PKCS1-v1_5\";\r\n// SHA-256 hashing algorithm\r\nconst S256_HASH_ALG = \"SHA-256\";\r\n// MOD length for PoP tokens\r\nconst MODULUS_LENGTH = 2048;\r\n// Public Exponent\r\nconst PUBLIC_EXPONENT: Uint8Array = new Uint8Array([0x01, 0x00, 0x01]);\r\n\r\n/**\r\n * This class implements functions used by the browser library to perform cryptography operations such as\r\n * hashing and encoding. It also has helper functions to validate the availability of specific APIs.\r\n */\r\nexport class BrowserCrypto {\r\n\r\n private _keygenAlgorithmOptions: RsaHashedKeyGenParams;\r\n\r\n constructor() {\r\n if (!(this.hasCryptoAPI())) {\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"Browser crypto or msCrypto object not available.\");\r\n }\r\n\r\n this._keygenAlgorithmOptions = {\r\n name: PKCS1_V15_KEYGEN_ALG,\r\n hash: S256_HASH_ALG,\r\n modulusLength: MODULUS_LENGTH,\r\n publicExponent: PUBLIC_EXPONENT\r\n };\r\n }\r\n\r\n /**\r\n * Returns a sha-256 hash of the given dataString as an ArrayBuffer.\r\n * @param dataString \r\n */\r\n async sha256Digest(dataString: string): Promise {\r\n const data = BrowserStringUtils.stringToUtf8Arr(dataString);\r\n\r\n return this.hasIECrypto() ? this.getMSCryptoDigest(S256_HASH_ALG, data) : this.getSubtleCryptoDigest(S256_HASH_ALG, data);\r\n }\r\n\r\n /**\r\n * Populates buffer with cryptographically random values.\r\n * @param dataBuffer \r\n */\r\n getRandomValues(dataBuffer: Uint8Array): void {\r\n const cryptoObj = window[\"msCrypto\"] || window.crypto;\r\n if (!cryptoObj.getRandomValues) {\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"getRandomValues does not exist.\");\r\n }\r\n cryptoObj.getRandomValues(dataBuffer);\r\n }\r\n\r\n /**\r\n * Generates a keypair based on current keygen algorithm config.\r\n * @param extractable \r\n * @param usages \r\n */\r\n async generateKeyPair(extractable: boolean, usages: Array): Promise {\r\n return (\r\n this.hasIECrypto() ? \r\n this.msCryptoGenerateKey(extractable, usages) \r\n : window.crypto.subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages)\r\n ) as Promise;\r\n }\r\n\r\n /**\r\n * Export key as Json Web Key (JWK)\r\n * @param key \r\n * @param format \r\n */\r\n async exportJwk(key: CryptoKey): Promise {\r\n return this.hasIECrypto() ? this.msCryptoExportJwk(key) : window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key);\r\n }\r\n\r\n /**\r\n * Imports key as Json Web Key (JWK), can set extractable and usages.\r\n * @param key \r\n * @param format \r\n * @param extractable \r\n * @param usages \r\n */\r\n async importJwk(key: JsonWebKey, extractable: boolean, usages: Array): Promise {\r\n const keyString = BrowserCrypto.getJwkString(key);\r\n const keyBuffer = BrowserStringUtils.stringToArrayBuffer(keyString);\r\n\r\n return this.hasIECrypto() ? \r\n this.msCryptoImportKey(keyBuffer, extractable, usages) \r\n : window.crypto.subtle.importKey(KEY_FORMAT_JWK, key, this._keygenAlgorithmOptions, extractable, usages);\r\n }\r\n\r\n /**\r\n * Signs given data with given key\r\n * @param key \r\n * @param data \r\n */\r\n async sign(key: CryptoKey, data: ArrayBuffer): Promise {\r\n return this.hasIECrypto() ?\r\n this.msCryptoSign(key, data)\r\n : window.crypto.subtle.sign(this._keygenAlgorithmOptions, key, data);\r\n }\r\n\r\n /**\r\n * Check whether IE crypto or other browser cryptography is available.\r\n */\r\n private hasCryptoAPI(): boolean {\r\n return this.hasIECrypto() || this.hasBrowserCrypto();\r\n }\r\n\r\n /**\r\n * Checks whether IE crypto (AKA msCrypto) is available.\r\n */\r\n private hasIECrypto(): boolean {\r\n return \"msCrypto\" in window;\r\n }\r\n\r\n /**\r\n * Check whether browser crypto is available.\r\n */\r\n private hasBrowserCrypto(): boolean {\r\n return \"crypto\" in window;\r\n }\r\n\r\n /**\r\n * Helper function for SHA digest.\r\n * @param algorithm \r\n * @param data \r\n */\r\n private async getSubtleCryptoDigest(algorithm: string, data: Uint8Array): Promise {\r\n return window.crypto.subtle.digest(algorithm, data);\r\n }\r\n\r\n /**\r\n * IE Helper function for SHA digest.\r\n * @param algorithm \r\n * @param data \r\n */\r\n private async getMSCryptoDigest(algorithm: string, data: Uint8Array): Promise {\r\n return new Promise((resolve, reject) => {\r\n const digestOperation = window[\"msCrypto\"].subtle.digest(algorithm, data.buffer);\r\n digestOperation.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n digestOperation.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * IE Helper function for generating a keypair\r\n * @param extractable \r\n * @param usages \r\n */\r\n private async msCryptoGenerateKey(extractable: boolean, usages: Array): Promise {\r\n return new Promise((resolve: any, reject: any) => {\r\n const msGenerateKey = window[\"msCrypto\"].subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages);\r\n msGenerateKey.addEventListener(\"complete\", (e: { target: { result: CryptoKeyPair | PromiseLike; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n msGenerateKey.addEventListener(\"error\", (error: any) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * IE Helper function for exportKey\r\n * @param key \r\n * @param format \r\n */\r\n private async msCryptoExportJwk(key: CryptoKey): Promise {\r\n return new Promise((resolve: any, reject: any) => {\r\n const msExportKey = window[\"msCrypto\"].subtle.exportKey(KEY_FORMAT_JWK, key);\r\n msExportKey.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer; }; }) => {\r\n const resultBuffer: ArrayBuffer = e.target.result;\r\n\r\n const resultString = BrowserStringUtils.utf8ArrToString(new Uint8Array(resultBuffer))\r\n .replace(/\\r/g, \"\")\r\n .replace(/\\n/g, \"\")\r\n .replace(/\\t/g, \"\")\r\n .split(\" \").join(\"\")\r\n .replace(\"\\u0000\", \"\");\r\n\r\n try {\r\n resolve(JSON.parse(resultString));\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n\r\n msExportKey.addEventListener(\"error\", (error: any) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * IE Helper function for importKey\r\n * @param key \r\n * @param format \r\n * @param extractable \r\n * @param usages \r\n */\r\n private async msCryptoImportKey(keyBuffer: ArrayBuffer, extractable: boolean, usages: Array): Promise {\r\n return new Promise((resolve: any, reject: any) => {\r\n const msImportKey = window[\"msCrypto\"].subtle.importKey(KEY_FORMAT_JWK, keyBuffer, this._keygenAlgorithmOptions, extractable, usages);\r\n msImportKey.addEventListener(\"complete\", (e: { target: { result: CryptoKey | PromiseLike; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n msImportKey.addEventListener(\"error\", (error: any) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * IE Helper function for sign JWT\r\n * @param key \r\n * @param data \r\n */\r\n private async msCryptoSign(key: CryptoKey, data: ArrayBuffer): Promise {\r\n return new Promise((resolve: any, reject: any) => {\r\n const msSign = window[\"msCrypto\"].subtle.sign(this._keygenAlgorithmOptions, key, data);\r\n msSign.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n msSign.addEventListener(\"error\", (error: any) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Returns stringified jwk.\r\n * @param jwk \r\n */\r\n static getJwkString(jwk: JsonWebKey): string {\r\n return JSON.stringify(jwk, Object.keys(jwk).sort());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\n\r\ninterface IDBOpenDBRequestEvent extends Event {\r\n target: IDBOpenDBRequest & EventTarget;\r\n}\r\n\r\ninterface IDBOpenOnUpgradeNeededEvent extends IDBVersionChangeEvent {\r\n target: IDBOpenDBRequest & EventTarget;\r\n}\r\n\r\ninterface IDBRequestEvent extends Event {\r\n target: IDBRequest & EventTarget;\r\n}\r\n\r\n/**\r\n * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\r\n */\r\nexport class DatabaseStorage{\r\n private db: IDBDatabase|undefined;\r\n private dbName: string;\r\n private tableName: string;\r\n private version: number;\r\n private dbOpen: boolean;\r\n\r\n constructor(dbName: string, tableName: string, version: number) {\r\n this.dbName = dbName;\r\n this.tableName = tableName;\r\n this.version = version;\r\n this.dbOpen = false;\r\n }\r\n\r\n /**\r\n * Opens IndexedDB instance.\r\n */\r\n async open(): Promise {\r\n return new Promise((resolve, reject) => {\r\n // TODO: Add timeouts?\r\n const openDB = window.indexedDB.open(this.dbName, this.version);\r\n openDB.addEventListener(\"upgradeneeded\", (e: any) => {\r\n const event = e as IDBOpenOnUpgradeNeededEvent;\r\n event.target.result.createObjectStore(this.tableName);\r\n });\r\n openDB.addEventListener(\"success\", (e: any) => {\r\n const event = e as IDBOpenDBRequestEvent;\r\n this.db = event.target.result;\r\n this.dbOpen = true;\r\n resolve();\r\n });\r\n\r\n openDB.addEventListener(\"error\", error => reject(error));\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves item from IndexedDB instance.\r\n * @param key \r\n */\r\n async get(key: string): Promise {\r\n if (!this.dbOpen) {\r\n await this.open();\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n // TODO: Add timeouts?\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n\r\n const transaction = this.db.transaction([this.tableName], \"readonly\");\r\n\r\n const objectStore = transaction.objectStore(this.tableName);\r\n const dbGet = objectStore.get(key);\r\n dbGet.addEventListener(\"success\", (e: any) => {\r\n const event = e as IDBRequestEvent;\r\n resolve(event.target.result);\r\n });\r\n dbGet.addEventListener(\"error\", e => reject(e));\r\n });\r\n }\r\n\r\n /**\r\n * Adds item to IndexedDB under given key\r\n * @param key \r\n * @param payload \r\n */\r\n async put(key: string, payload: T): Promise {\r\n if (!this.dbOpen) {\r\n await this.open();\r\n }\r\n\r\n return new Promise((resolve: any, reject: any) => {\r\n // TODO: Add timeouts?\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n\r\n const transaction = this.db.transaction([this.tableName], \"readwrite\");\r\n const objectStore = transaction.objectStore(this.tableName);\r\n\r\n const dbPut = objectStore.put(payload, key);\r\n dbPut.addEventListener(\"success\", (e: any) => {\r\n const event = e as IDBRequestEvent;\r\n resolve(event.target.result);\r\n });\r\n dbPut.addEventListener(\"error\", e => reject(e));\r\n });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ICrypto, PkceCodes, SignedHttpRequest } from \"@azure/msal-common\";\r\nimport { GuidGenerator } from \"./GuidGenerator\";\r\nimport { Base64Encode } from \"../encode/Base64Encode\";\r\nimport { Base64Decode } from \"../encode/Base64Decode\";\r\nimport { PkceGenerator } from \"./PkceGenerator\";\r\nimport { BrowserCrypto } from \"./BrowserCrypto\";\r\nimport { DatabaseStorage } from \"../cache/DatabaseStorage\";\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\r\n\r\nexport type CachedKeyPair = {\r\n publicKey: CryptoKey,\r\n privateKey: CryptoKey,\r\n requestMethod: string,\r\n requestUri: string\r\n};\r\n\r\n/**\r\n * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and \r\n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\r\n */\r\nexport class CryptoOps implements ICrypto {\r\n\r\n private browserCrypto: BrowserCrypto;\r\n private guidGenerator: GuidGenerator;\r\n private b64Encode: Base64Encode;\r\n private b64Decode: Base64Decode;\r\n private pkceGenerator: PkceGenerator;\r\n\r\n private static POP_KEY_USAGES: Array = [\"sign\", \"verify\"];\r\n private static EXTRACTABLE: boolean = true;\r\n\r\n private static DB_VERSION = 1;\r\n private static DB_NAME = \"msal.db\";\r\n private static TABLE_NAME =`${CryptoOps.DB_NAME}.keys`;\r\n private cache: DatabaseStorage;\r\n\r\n constructor() {\r\n // Browser crypto needs to be validated first before any other classes can be set.\r\n this.browserCrypto = new BrowserCrypto();\r\n this.b64Encode = new Base64Encode();\r\n this.b64Decode = new Base64Decode();\r\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\r\n this.pkceGenerator = new PkceGenerator(this.browserCrypto);\r\n this.cache = new DatabaseStorage(CryptoOps.DB_NAME, CryptoOps.TABLE_NAME, CryptoOps.DB_VERSION);\r\n }\r\n\r\n /**\r\n * Creates a new random GUID - used to populate state and nonce.\r\n * @returns string (GUID)\r\n */\r\n createNewGuid(): string {\r\n return this.guidGenerator.generateGuid();\r\n }\r\n\r\n /**\r\n * Encodes input string to base64.\r\n * @param input \r\n */\r\n base64Encode(input: string): string {\r\n return this.b64Encode.encode(input);\r\n } \r\n \r\n /**\r\n * Decodes input string from base64.\r\n * @param input \r\n */\r\n base64Decode(input: string): string {\r\n return this.b64Decode.decode(input);\r\n }\r\n\r\n /**\r\n * Generates PKCE codes used in Authorization Code Flow.\r\n */\r\n async generatePkceCodes(): Promise {\r\n return this.pkceGenerator.generateCodes();\r\n }\r\n\r\n /**\r\n * Generates a keypair, stores it and returns a thumbprint\r\n * @param resourceRequestMethod \r\n * @param resourceRequestUri \r\n */\r\n async getPublicKeyThumbprint(resourceRequestMethod: string, resourceRequestUri: string): Promise {\r\n // Generate Keypair\r\n const keyPair = await this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES);\r\n\r\n // Generate Thumbprint for Public Key\r\n const publicKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.publicKey);\r\n const pubKeyThumprintObj: JsonWebKey = {\r\n e: publicKeyJwk.e,\r\n kty: publicKeyJwk.kty,\r\n n: publicKeyJwk.n\r\n };\r\n const publicJwkString: string = BrowserCrypto.getJwkString(pubKeyThumprintObj);\r\n const publicJwkBuffer: ArrayBuffer = await this.browserCrypto.sha256Digest(publicJwkString);\r\n const publicJwkHash: string = this.b64Encode.urlEncodeArr(new Uint8Array(publicJwkBuffer));\r\n\r\n // Generate Thumbprint for Private Key\r\n const privateKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.privateKey);\r\n // Re-import private key to make it unextractable\r\n const unextractablePrivateKey: CryptoKey = await this.browserCrypto.importJwk(privateKeyJwk, false, [\"sign\"]);\r\n\r\n // Store Keypair data in keystore\r\n this.cache.put(publicJwkHash, {\r\n privateKey: unextractablePrivateKey,\r\n publicKey: keyPair.publicKey,\r\n requestMethod: resourceRequestMethod,\r\n requestUri: resourceRequestUri\r\n });\r\n\r\n return publicJwkHash;\r\n }\r\n\r\n /**\r\n * Signs the given object as a jwt payload with private key retrieved by given kid.\r\n * @param payload \r\n * @param kid \r\n */\r\n async signJwt(payload: SignedHttpRequest, kid: string): Promise {\r\n // Get keypair from cache\r\n const cachedKeyPair: CachedKeyPair = await this.cache.get(kid);\r\n\r\n // Get public key as JWK\r\n const publicKeyJwk = await this.browserCrypto.exportJwk(cachedKeyPair.publicKey);\r\n const publicKeyJwkString = BrowserCrypto.getJwkString(publicKeyJwk);\r\n\r\n // Generate header\r\n const header = {\r\n alg: publicKeyJwk.alg,\r\n type: KEY_FORMAT_JWK\r\n };\r\n const encodedHeader = this.b64Encode.urlEncode(JSON.stringify(header));\r\n\r\n // Generate payload\r\n payload.cnf = {\r\n jwk: JSON.parse(publicKeyJwkString)\r\n };\r\n const encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));\r\n\r\n // Form token string\r\n const tokenString = `${encodedHeader}.${encodedPayload}`;\r\n\r\n // Sign token\r\n const tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);\r\n const signatureBuffer = await this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer);\r\n const encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));\r\n\r\n return `${tokenString}.${encodedSignature}`;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"@azure/msal-common\";\r\n\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const BrowserConfigurationAuthErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n storageNotSupportedError: {\r\n code: \"storage_not_supported\",\r\n desc: \"Given storage configuration option was not supported.\"\r\n },\r\n noRedirectCallbacksSet: {\r\n code: \"no_redirect_callbacks\",\r\n desc: \"No redirect callbacks have been set. Please call setRedirectCallbacks() with the appropriate function arguments before continuing. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n invalidCallbackObject: {\r\n code: \"invalid_callback_object\",\r\n desc: \"The object passed for the callback was invalid. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n stubPcaInstanceCalled: {\r\n code: \"stubbed_public_client_application_called\",\r\n desc: \"Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n inMemRedirectUnavailable: {\r\n code: \"in_mem_redirect_unavailable\",\r\n desc: \"Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.\"\r\n }\r\n};\r\n\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nexport class BrowserConfigurationAuthError extends AuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n this.name = \"BrowserConfigurationAuthError\";\r\n\r\n Object.setPrototypeOf(this, BrowserConfigurationAuthError.prototype);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n static createRedirectUriEmptyError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.redirectUriNotSet.code,\r\n BrowserConfigurationAuthErrorMessage.redirectUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n static createPostLogoutRedirectUriEmptyError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.code,\r\n BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates error thrown when given storage location is not supported.\r\n * @param givenStorageLocation \r\n */\r\n static createStorageNotSupportedError(givenStorageLocation: string): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.storageNotSupportedError.code, `${BrowserConfigurationAuthErrorMessage.storageNotSupportedError.desc} Given Location: ${givenStorageLocation}`);\r\n }\r\n\r\n /**\r\n * Creates error thrown when callback object is invalid.\r\n * @param callbackObject \r\n */\r\n static createInvalidCallbackObjectError(callbackObject: object): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.invalidCallbackObject.code,\r\n `${BrowserConfigurationAuthErrorMessage.invalidCallbackObject.desc} Given value for callback function: ${callbackObject}`);\r\n }\r\n\r\n /**\r\n * Creates error thrown when redirect callbacks are not set before calling loginRedirect() or acquireTokenRedirect().\r\n */\r\n static createRedirectCallbacksNotSetError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.code, \r\n BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.desc);\r\n }\r\n\r\n /**\r\n * Creates error thrown when the stub instance of PublicClientApplication is called.\r\n */\r\n static createStubPcaInstanceCalledError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.code,\r\n BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.desc);\r\n }\r\n\r\n /*\r\n * Create an error thrown when in-memory storage is used and storeAuthStateInCookie=false.\r\n */\r\n static createInMemoryRedirectUnavailableError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.code, BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\r\nimport { BrowserCacheLocation } from \"../utils/BrowserConstants\";\r\nimport { IWindowStorage } from \"./IWindowStorage\";\r\n\r\nexport class BrowserStorage implements IWindowStorage {\r\n\r\n private windowStorage: Storage;\r\n\r\n constructor(cacheLocation: string) {\r\n this.validateWindowStorage(cacheLocation);\r\n this.windowStorage = window[cacheLocation];\r\n }\r\n\r\n private validateWindowStorage(cacheLocation: string) {\r\n if (cacheLocation !== BrowserCacheLocation.LocalStorage && cacheLocation !== BrowserCacheLocation.SessionStorage) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n const storageSupported = !!window[cacheLocation];\r\n if (!storageSupported) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n }\r\n\r\n getItem(key: string): string | null {\r\n return this.windowStorage.getItem(key);\r\n }\r\n\r\n setItem(key: string, value: string): void {\r\n this.windowStorage.setItem(key, value);\r\n }\r\n\r\n removeItem(key: string): void {\r\n this.windowStorage.removeItem(key);\r\n }\r\n\r\n getKeys(): string[] {\r\n return Object.keys(this.windowStorage);\r\n }\r\n\r\n containsKey(key: string): boolean {\r\n return this.windowStorage.hasOwnProperty(key);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { IWindowStorage } from \"./IWindowStorage\";\r\n\r\nexport class MemoryStorage implements IWindowStorage {\r\n\r\n private cache: Map;\r\n\r\n constructor() {\r\n this.cache = new Map();\r\n }\r\n\r\n getItem(key: string): string | null {\r\n return this.cache.get(key) || null;\r\n }\r\n\r\n setItem(key: string, value: string): void {\r\n this.cache.set(key, value);\r\n }\r\n\r\n removeItem(key: string): void {\r\n this.cache.delete(key);\r\n }\r\n\r\n getKeys(): string[] {\r\n const cacheKeys: string[] = [];\r\n this.cache.forEach((value: string, key: string) => {\r\n cacheKeys.push(key);\r\n });\r\n return cacheKeys;\r\n }\r\n\r\n containsKey(key: string): boolean {\r\n return this.cache.has(key);\r\n }\r\n\r\n clear() :void {\r\n this.cache.clear();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { InteractionType } from \"./BrowserConstants\";\r\nimport { StringUtils, ClientAuthError, ICrypto, RequestStateObject, ProtocolUtils, ServerAuthorizationCodeResponse, UrlString } from \"@azure/msal-common\";\r\n\r\nexport type BrowserStateObject = {\r\n interactionType: InteractionType\r\n};\r\n\r\nexport class BrowserProtocolUtils {\r\n\r\n /**\r\n * Extracts the BrowserStateObject from the state string.\r\n * @param browserCrypto \r\n * @param state \r\n */\r\n static extractBrowserRequestState(browserCrypto: ICrypto, state: string): BrowserStateObject | null {\r\n if (StringUtils.isEmpty(state)) {\r\n return null;\r\n }\r\n\r\n try {\r\n const requestStateObj: RequestStateObject = ProtocolUtils.parseRequestState(browserCrypto, state);\r\n return requestStateObj.libraryState.meta as BrowserStateObject;\r\n } catch (e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n }\r\n\r\n /**\r\n * Parses properties of server response from url hash\r\n * @param locationHash Hash from url\r\n */\r\n static parseServerResponseFromHash(locationHash: string): ServerAuthorizationCodeResponse {\r\n if (!locationHash) {\r\n return {};\r\n }\r\n \r\n const hashUrlString = new UrlString(locationHash);\r\n return UrlString.getDeserializedHash(hashUrlString.getHash());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants, PersistentCacheKeys, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AccountEntity, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, CacheManager, ServerTelemetryEntity, ThrottlingEntity, ProtocolUtils, Logger, AuthorityMetadataEntity, DEFAULT_CRYPTO_IMPLEMENTATION } from \"@azure/msal-common\";\r\nimport { CacheOptions } from \"../config/Configuration\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { BrowserCacheLocation, InteractionType, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\r\nimport { BrowserStorage } from \"./BrowserStorage\";\r\nimport { MemoryStorage } from \"./MemoryStorage\";\r\nimport { IWindowStorage } from \"./IWindowStorage\";\r\nimport { BrowserProtocolUtils } from \"../utils/BrowserProtocolUtils\";\r\n\r\n/**\r\n * This class implements the cache storage interface for MSAL through browser local or session storage.\r\n * Cookies are only used if storeAuthStateInCookie is true, and are only used for\r\n * parameters such as state and nonce, generally.\r\n */\r\nexport class BrowserCacheManager extends CacheManager {\r\n\r\n // Cache configuration, either set by user or default values.\r\n private cacheConfig: Required;\r\n // Window storage object (either local or sessionStorage)\r\n private browserStorage: IWindowStorage;\r\n // Internal in-memory storage object used for data used by msal that does not need to persist across page loads\r\n private internalStorage: MemoryStorage;\r\n // Temporary cache\r\n private temporaryCacheStorage: IWindowStorage;\r\n // Client id of application. Used in cache keys to partition cache correctly in the case of multiple instances of MSAL.\r\n private logger: Logger;\r\n\r\n // Cookie life calculation (hours * minutes * seconds * ms)\r\n private readonly COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000;\r\n\r\n constructor(clientId: string, cacheConfig: Required, cryptoImpl: ICrypto, logger: Logger) {\r\n super(clientId, cryptoImpl);\r\n\r\n this.cacheConfig = cacheConfig;\r\n this.logger = logger;\r\n\r\n this.internalStorage = new MemoryStorage();\r\n this.browserStorage = this.setupBrowserStorage(this.cacheConfig.cacheLocation);\r\n this.temporaryCacheStorage = this.setupTemporaryCacheStorage(this.cacheConfig.cacheLocation);\r\n\r\n // Migrate any cache entries from older versions of MSAL.\r\n this.migrateCacheEntries();\r\n }\r\n\r\n /**\r\n * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation.\r\n * @param cacheLocation\r\n */\r\n private setupBrowserStorage(cacheLocation: BrowserCacheLocation | string): IWindowStorage {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\r\n return new BrowserStorage(cacheLocation);\r\n } catch (e) {\r\n this.logger.verbose(e);\r\n break;\r\n }\r\n case BrowserCacheLocation.MemoryStorage:\r\n default:\r\n break;\r\n }\r\n this.cacheConfig.cacheLocation = BrowserCacheLocation.MemoryStorage;\r\n return new MemoryStorage();\r\n }\r\n\r\n /**\r\n *\r\n * @param cacheLocation\r\n */\r\n private setupTemporaryCacheStorage(cacheLocation: BrowserCacheLocation | string): IWindowStorage {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\r\n return new BrowserStorage(BrowserCacheLocation.SessionStorage);\r\n } catch (e) {\r\n this.logger.verbose(e);\r\n return this.internalStorage;\r\n }\r\n case BrowserCacheLocation.MemoryStorage:\r\n default:\r\n return this.internalStorage;\r\n }\r\n }\r\n\r\n /**\r\n * Migrate all old cache entries to new schema. No rollback supported.\r\n * @param storeAuthStateInCookie\r\n */\r\n private migrateCacheEntries(): void {\r\n const idTokenKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ID_TOKEN}`;\r\n const clientInfoKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.CLIENT_INFO}`;\r\n const errorKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR}`;\r\n const errorDescKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR_DESC}`;\r\n\r\n const idTokenValue = this.browserStorage.getItem(idTokenKey);\r\n const clientInfoValue = this.browserStorage.getItem(clientInfoKey);\r\n const errorValue = this.browserStorage.getItem(errorKey);\r\n const errorDescValue = this.browserStorage.getItem(errorDescKey);\r\n\r\n const values = [idTokenValue, clientInfoValue, errorValue, errorDescValue];\r\n const keysToMigrate = [PersistentCacheKeys.ID_TOKEN, PersistentCacheKeys.CLIENT_INFO, PersistentCacheKeys.ERROR, PersistentCacheKeys.ERROR_DESC];\r\n\r\n keysToMigrate.forEach((cacheKey:string, index: number) => this.migrateCacheEntry(cacheKey, values[index]));\r\n }\r\n\r\n /**\r\n * Utility function to help with migration.\r\n * @param newKey\r\n * @param value\r\n * @param storeAuthStateInCookie\r\n */\r\n private migrateCacheEntry(newKey: string, value: string|null): void {\r\n if (value) {\r\n this.setTemporaryCache(newKey, value, true);\r\n }\r\n }\r\n\r\n /**\r\n * Parses passed value as JSON object, JSON.parse() will throw an error.\r\n * @param input\r\n */\r\n private validateAndParseJson(jsonValue: string): object | null {\r\n try {\r\n const parsedJson = JSON.parse(jsonValue);\r\n /**\r\n * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object\r\n * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check\r\n * of the parsed value is necessary in order to be certain that the string represents a valid JSON object.\r\n *\r\n */\r\n return (parsedJson && typeof parsedJson === \"object\") ? parsedJson : null;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * fetches the entry from the browser storage based off the key\r\n * @param key\r\n */\r\n getItem(key: string): string | null {\r\n return this.browserStorage.getItem(key);\r\n }\r\n\r\n /**\r\n * sets the entry in the browser storage\r\n * @param key\r\n * @param value\r\n */\r\n setItem(key: string, value: string): void {\r\n this.browserStorage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * fetch the account entity from the platform cache\r\n * @param accountKey\r\n */\r\n getAccount(accountKey: string): AccountEntity | null {\r\n const account = this.getItem(accountKey);\r\n if (!account) {\r\n return null;\r\n }\r\n\r\n const parsedAccount = this.validateAndParseJson(account);\r\n if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) {\r\n return null;\r\n }\r\n\r\n return CacheManager.toObject(new AccountEntity(), parsedAccount);\r\n }\r\n\r\n /**\r\n * set account entity in the platform cache\r\n * @param key\r\n * @param value\r\n */\r\n setAccount(account: AccountEntity): void {\r\n this.logger.verbose(\"BrowserCacheManager.setAccount called\");\r\n const key = account.generateAccountKey();\r\n this.setItem(key, JSON.stringify(account));\r\n }\r\n\r\n /**\r\n * generates idToken entity from a string\r\n * @param idTokenKey\r\n */\r\n getIdTokenCredential(idTokenKey: string): IdTokenEntity | null {\r\n this.logger.verbose(\"BrowserCacheManager.getIdTokenCredential called\");\r\n const value = this.getItem(idTokenKey);\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const parsedIdToken = this.validateAndParseJson(value);\r\n if (!parsedIdToken || !IdTokenEntity.isIdTokenEntity(parsedIdToken)) {\r\n return null;\r\n }\r\n\r\n this.logger.verbose(\"BrowserCacheManager.getIdTokenCredential: cache hit\");\r\n return CacheManager.toObject(new IdTokenEntity(), parsedIdToken);\r\n }\r\n\r\n /**\r\n * set IdToken credential to the platform cache\r\n * @param idToken\r\n */\r\n setIdTokenCredential(idToken: IdTokenEntity): void {\r\n this.logger.verbose(\"BrowserCacheManager.setIdTokenCredential called\");\r\n const idTokenKey = idToken.generateCredentialKey();\r\n this.setItem(idTokenKey, JSON.stringify(idToken));\r\n }\r\n\r\n /**\r\n * generates accessToken entity from a string\r\n * @param key\r\n */\r\n getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null {\r\n this.logger.verbose(\"BrowserCacheManager.getAccessTokenCredential called\");\r\n const value = this.getItem(accessTokenKey);\r\n if (!value) {\r\n return null;\r\n }\r\n const parsedAccessToken = this.validateAndParseJson(value);\r\n if (!parsedAccessToken || !AccessTokenEntity.isAccessTokenEntity(parsedAccessToken)) {\r\n return null;\r\n }\r\n\r\n this.logger.verbose(\"BrowserCacheManager.getAccessTokenCredential: cache hit\");\r\n return CacheManager.toObject(new AccessTokenEntity(), parsedAccessToken);\r\n }\r\n\r\n /**\r\n * set accessToken credential to the platform cache\r\n * @param accessToken\r\n */\r\n setAccessTokenCredential(accessToken: AccessTokenEntity): void {\r\n this.logger.verbose(\"BrowserCacheManager.setAccessTokenCredential called\");\r\n const accessTokenKey = accessToken.generateCredentialKey();\r\n this.setItem(accessTokenKey, JSON.stringify(accessToken));\r\n }\r\n\r\n /**\r\n * generates refreshToken entity from a string\r\n * @param refreshTokenKey\r\n */\r\n getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null {\r\n this.logger.verbose(\"BrowserCacheManager.getRefreshTokenCredential called\");\r\n const value = this.getItem(refreshTokenKey);\r\n if (!value) {\r\n return null;\r\n }\r\n const parsedRefreshToken = this.validateAndParseJson(value);\r\n if (!parsedRefreshToken || !RefreshTokenEntity.isRefreshTokenEntity(parsedRefreshToken)) {\r\n return null;\r\n }\r\n\r\n this.logger.verbose(\"BrowserCacheManager.getRefreshTokenCredential: cache hit\");\r\n return CacheManager.toObject(new RefreshTokenEntity(), parsedRefreshToken);\r\n }\r\n\r\n /**\r\n * set refreshToken credential to the platform cache\r\n * @param refreshToken\r\n */\r\n setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void {\r\n this.logger.verbose(\"BrowserCacheManager.setRefreshTokenCredential called\");\r\n const refreshTokenKey = refreshToken.generateCredentialKey();\r\n this.setItem(refreshTokenKey, JSON.stringify(refreshToken));\r\n }\r\n\r\n /**\r\n * fetch appMetadata entity from the platform cache\r\n * @param appMetadataKey\r\n */\r\n getAppMetadata(appMetadataKey: string): AppMetadataEntity | null {\r\n this.logger.verbose(\"BrowserCacheManager.getAppMetadata called\");\r\n const value = this.getItem(appMetadataKey);\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !AppMetadataEntity.isAppMetadataEntity(appMetadataKey, parsedMetadata)) {\r\n return null;\r\n }\r\n\r\n this.logger.verbose(\"BrowserCacheManager.getAppMetadata: cache hit\");\r\n return CacheManager.toObject(new AppMetadataEntity(), parsedMetadata);\r\n }\r\n\r\n /**\r\n * set appMetadata entity to the platform cache\r\n * @param appMetadata\r\n */\r\n setAppMetadata(appMetadata: AppMetadataEntity): void {\r\n this.logger.verbose(\"BrowserCacheManager.setAppMetadata called\");\r\n const appMetadataKey = appMetadata.generateAppMetadataKey();\r\n this.setItem(appMetadataKey, JSON.stringify(appMetadata));\r\n }\r\n\r\n /**\r\n * fetch server telemetry entity from the platform cache\r\n * @param serverTelemetryKey\r\n */\r\n getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null {\r\n this.logger.verbose(\"BrowserCacheManager.getServerTelemetry called\");\r\n const value = this.getItem(serverTelemetryKey);\r\n if (!value) {\r\n return null;\r\n }\r\n const parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !ServerTelemetryEntity.isServerTelemetryEntity(serverTelemetryKey, parsedMetadata)) {\r\n return null;\r\n }\r\n\r\n this.logger.verbose(\"BrowserCacheManager.getServerTelemetry: cache hit\");\r\n return CacheManager.toObject(new ServerTelemetryEntity(), parsedMetadata);\r\n }\r\n\r\n /**\r\n * set server telemetry entity to the platform cache\r\n * @param serverTelemetryKey\r\n * @param serverTelemetry\r\n */\r\n setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void {\r\n this.logger.verbose(\"BrowserCacheManager.setServerTelemetry called\");\r\n this.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry));\r\n }\r\n\r\n /**\r\n *\r\n */\r\n getAuthorityMetadata(key: string) : AuthorityMetadataEntity | null {\r\n this.logger.verbose(\"BrowserCacheManager.getAuthorityMetadata called\");\r\n const value = this.internalStorage.getItem(key);\r\n if (!value) {\r\n return null;\r\n }\r\n const parsedMetadata = this.validateAndParseJson(value);\r\n if (parsedMetadata && AuthorityMetadataEntity.isAuthorityMetadataEntity(key, parsedMetadata)) {\r\n this.logger.verbose(\"BrowserCacheManager.getAuthorityMetadata: cache hit\");\r\n return CacheManager.toObject(new AuthorityMetadataEntity(), parsedMetadata);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n *\r\n */\r\n getAuthorityMetadataKeys(): Array {\r\n const allKeys = this.internalStorage.getKeys();\r\n return allKeys.filter((key) => {\r\n return this.isAuthorityMetadata(key);\r\n });\r\n }\r\n\r\n /**\r\n *\r\n * @param entity\r\n */\r\n setAuthorityMetadata(key: string, entity: AuthorityMetadataEntity): void {\r\n this.logger.verbose(\"BrowserCacheManager.setAuthorityMetadata called\");\r\n this.internalStorage.setItem(key, JSON.stringify(entity));\r\n }\r\n\r\n /**\r\n * fetch throttling entity from the platform cache\r\n * @param throttlingCacheKey\r\n */\r\n getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null {\r\n this.logger.verbose(\"BrowserCacheManager.getThrottlingCache called\");\r\n const value = this.getItem(throttlingCacheKey);\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const parsedThrottlingCache = this.validateAndParseJson(value);\r\n if (!parsedThrottlingCache || !ThrottlingEntity.isThrottlingEntity(throttlingCacheKey, parsedThrottlingCache)) {\r\n return null;\r\n }\r\n\r\n this.logger.verbose(\"BrowserCacheManager.getThrottlingCache: cache hit\");\r\n return CacheManager.toObject(new ThrottlingEntity(), parsedThrottlingCache);\r\n }\r\n\r\n /**\r\n * set throttling entity to the platform cache\r\n * @param throttlingCacheKey\r\n * @param throttlingCache\r\n */\r\n setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void {\r\n this.logger.verbose(\"BrowserCacheManager.setThrottlingCache called\");\r\n this.setItem(throttlingCacheKey, JSON.stringify(throttlingCache));\r\n }\r\n\r\n /**\r\n * Gets cache item with given key.\r\n * Will retrieve frm cookies if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n getTemporaryCache(cacheKey: string, generateKey?: boolean): string | null {\r\n this.logger.verbose(\"BrowserCacheManager.getTemporaryCache called\");\r\n const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.verbose(\"BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies\");\r\n const itemCookie = this.getItemCookie(key);\r\n if (itemCookie) {\r\n return itemCookie;\r\n }\r\n }\r\n\r\n const value = this.temporaryCacheStorage.getItem(key);\r\n if (!value) {\r\n return null;\r\n }\r\n return value;\r\n }\r\n\r\n /**\r\n * Sets the cache item with the key and value given.\r\n * Stores in cookie if storeAuthStateInCookie is set to true.\r\n * This can cause cookie overflow if used incorrectly.\r\n * @param key\r\n * @param value\r\n */\r\n setTemporaryCache(cacheKey: string, value: string, generateKey?: boolean): void {\r\n const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n\r\n this.temporaryCacheStorage.setItem(key, value);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.verbose(\"BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie\");\r\n this.setItemCookie(key, value);\r\n }\r\n }\r\n\r\n /**\r\n * Removes the cache item with the given key.\r\n * Will also clear the cookie item if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n removeItem(key: string): boolean {\r\n this.browserStorage.removeItem(key);\r\n this.temporaryCacheStorage.removeItem(key);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.verbose(\"BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie\");\r\n this.clearItemCookie(key);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Checks whether key is in cache.\r\n * @param key\r\n */\r\n containsKey(key: string): boolean {\r\n return this.browserStorage.containsKey(key) || this.temporaryCacheStorage.containsKey(key);\r\n }\r\n\r\n /**\r\n * Gets all keys in window.\r\n */\r\n getKeys(): string[] {\r\n return [\r\n ...this.browserStorage.getKeys(),\r\n ...this.temporaryCacheStorage.getKeys()\r\n ];\r\n }\r\n\r\n /**\r\n * Clears all cache entries created by MSAL (except tokens).\r\n */\r\n clear(): void {\r\n this.removeAllAccounts();\r\n this.removeAppMetadata();\r\n this.getKeys().forEach((cacheKey: string) => {\r\n // Check if key contains msal prefix; For now, we are clearing all the cache items created by MSAL.js\r\n if ((this.browserStorage.containsKey(cacheKey) || this.temporaryCacheStorage.containsKey(cacheKey)) && ((cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1) || (cacheKey.indexOf(this.clientId) !== -1))) {\r\n this.removeItem(cacheKey);\r\n }\r\n });\r\n\r\n this.internalStorage.clear();\r\n }\r\n\r\n /**\r\n * Add value to cookies\r\n * @param cookieName\r\n * @param cookieValue\r\n * @param expires\r\n */\r\n setItemCookie(cookieName: string, cookieValue: string, expires?: number): void {\r\n let cookieStr = `${encodeURIComponent(cookieName)}=${encodeURIComponent(cookieValue)};path=/;`;\r\n if (expires) {\r\n const expireTime = this.getCookieExpirationTime(expires);\r\n cookieStr += `expires=${expireTime};`;\r\n }\r\n\r\n if (this.cacheConfig.secureCookies) {\r\n cookieStr += \"Secure;\";\r\n }\r\n \r\n document.cookie = cookieStr;\r\n }\r\n\r\n /**\r\n * Get one item by key from cookies\r\n * @param cookieName\r\n */\r\n getItemCookie(cookieName: string): string {\r\n const name = `${encodeURIComponent(cookieName)}=`;\r\n const cookieList = document.cookie.split(\";\");\r\n for (let i: number = 0; i < cookieList.length; i++) {\r\n let cookie = cookieList[i];\r\n while (cookie.charAt(0) === \" \") {\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(name) === 0) {\r\n return decodeURIComponent(cookie.substring(name.length, cookie.length));\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * Clear all msal-related cookies currently set in the browser. Should only be used to clear temporary cache items.\r\n */\r\n clearMsalCookies(): void {\r\n const cookiePrefix = `${Constants.CACHE_PREFIX}.${this.clientId}`;\r\n const cookieList = document.cookie.split(\";\");\r\n cookieList.forEach((cookie: string): void => {\r\n while (cookie.charAt(0) === \" \") {\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(cookiePrefix) === 0) {\r\n const cookieKey = cookie.split(\"=\")[0];\r\n this.clearItemCookie(cookieKey);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clear an item in the cookies by key\r\n * @param cookieName\r\n */\r\n clearItemCookie(cookieName: string): void {\r\n this.setItemCookie(cookieName, \"\", -1);\r\n }\r\n\r\n /**\r\n * Get cookie expiration time\r\n * @param cookieLifeDays\r\n */\r\n getCookieExpirationTime(cookieLifeDays: number): string {\r\n const today = new Date();\r\n const expr = new Date(today.getTime() + cookieLifeDays * this.COOKIE_LIFE_MULTIPLIER);\r\n return expr.toUTCString();\r\n }\r\n\r\n /**\r\n * Gets the cache object referenced by the browser\r\n */\r\n getCache(): object {\r\n return this.browserStorage;\r\n }\r\n\r\n /**\r\n * interface compat, we cannot overwrite browser cache; Functionality is supported by individual entities in browser\r\n */\r\n setCache(): void {\r\n // sets nothing\r\n }\r\n\r\n /**\r\n * Prepend msal. to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema)\r\n * @param key\r\n * @param addInstanceId\r\n */\r\n generateCacheKey(key: string): string {\r\n const generatedKey = this.validateAndParseJson(key);\r\n if (!generatedKey) {\r\n if (StringUtils.startsWith(key, Constants.CACHE_PREFIX) || StringUtils.startsWith(key, PersistentCacheKeys.ADAL_ID_TOKEN)) {\r\n return key;\r\n }\r\n return `${Constants.CACHE_PREFIX}.${this.clientId}.${key}`;\r\n }\r\n\r\n return JSON.stringify(key);\r\n }\r\n\r\n /**\r\n * Create authorityKey to cache authority\r\n * @param state\r\n */\r\n generateAuthorityKey(stateString: string): string {\r\n const {\r\n libraryState: {\r\n id: stateId\r\n }\r\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\r\n\r\n return this.generateCacheKey(`${TemporaryCacheKeys.AUTHORITY}.${stateId}`);\r\n }\r\n\r\n /**\r\n * Create Nonce key to cache nonce\r\n * @param state\r\n */\r\n generateNonceKey(stateString: string): string {\r\n const {\r\n libraryState: {\r\n id: stateId\r\n }\r\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\r\n\r\n return this.generateCacheKey(`${TemporaryCacheKeys.NONCE_IDTOKEN}.${stateId}`);\r\n }\r\n\r\n /**\r\n * Creates full cache key for the request state\r\n * @param stateString State string for the request\r\n */\r\n generateStateKey(stateString: string): string {\r\n // Use the library state id to key temp storage for uniqueness for multiple concurrent requests\r\n const {\r\n libraryState: {\r\n id: stateId\r\n }\r\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\r\n return this.generateCacheKey(`${TemporaryCacheKeys.REQUEST_STATE}.${stateId}`);\r\n } \r\n\r\n /**\r\n * Gets the cached authority based on the cached state. Returns empty if no cached state found.\r\n */\r\n getCachedAuthority(cachedState: string): string | null {\r\n const stateCacheKey = this.generateStateKey(cachedState);\r\n const state = this.getTemporaryCache(stateCacheKey);\r\n if (!state) {\r\n return null;\r\n }\r\n\r\n const authorityCacheKey = this.generateAuthorityKey(state);\r\n return this.getTemporaryCache(authorityCacheKey);\r\n }\r\n\r\n /**\r\n * Updates account, authority, and state in cache\r\n * @param serverAuthenticationRequest\r\n * @param account\r\n */\r\n updateCacheEntries(state: string, nonce: string, authorityInstance: string): void {\r\n this.logger.verbose(\"BrowserCacheManager.updateCacheEntries called\");\r\n // Cache the request state\r\n const stateCacheKey = this.generateStateKey(state);\r\n this.setTemporaryCache(stateCacheKey, state, false);\r\n\r\n // Cache the nonce\r\n const nonceCacheKey = this.generateNonceKey(state);\r\n this.setTemporaryCache(nonceCacheKey, nonce, false);\r\n\r\n // Cache authorityKey\r\n const authorityCacheKey = this.generateAuthorityKey(state);\r\n this.setTemporaryCache(authorityCacheKey, authorityInstance, false);\r\n }\r\n\r\n /**\r\n * Reset all temporary cache items\r\n * @param state\r\n */\r\n resetRequestCache(state: string): void {\r\n this.logger.verbose(\"BrowserCacheManager.resetRequestCache called\");\r\n // check state and remove associated cache items\r\n if (!StringUtils.isEmpty(state)) {\r\n this.getKeys().forEach(key => {\r\n if (key.indexOf(state) !== -1) {\r\n this.removeItem(key);\r\n }\r\n });\r\n }\r\n\r\n // delete generic interactive request parameters\r\n if (state) {\r\n this.removeItem(this.generateStateKey(state));\r\n this.removeItem(this.generateNonceKey(state));\r\n this.removeItem(this.generateAuthorityKey(state));\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.INTERACTION_STATUS_KEY));\r\n }\r\n\r\n /**\r\n * Removes temporary cache for the provided state\r\n * @param stateString \r\n */\r\n cleanRequestByState(stateString: string): void {\r\n this.logger.verbose(\"BrowserCacheManager.cleanRequestByState called\");\r\n // Interaction is completed - remove interaction status.\r\n if (stateString) {\r\n const stateKey = this.generateStateKey(stateString);\r\n const cachedState = this.temporaryCacheStorage.getItem(stateKey);\r\n this.logger.info(`BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: ${cachedState}`);\r\n this.resetRequestCache(cachedState || \"\");\r\n }\r\n this.clearMsalCookies();\r\n }\r\n\r\n /**\r\n * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state\r\n * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button.\r\n * @param interactionType \r\n */\r\n cleanRequestByInteractionType(interactionType: InteractionType): void {\r\n this.logger.verbose(\"BrowserCacheManager.cleanRequestByInteractionType called\");\r\n // Loop through all keys to find state key\r\n this.getKeys().forEach((key) => {\r\n // If this key is not the state key, move on\r\n if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) {\r\n return;\r\n }\r\n \r\n // Retrieve state value, return if not a valid value\r\n const stateValue = this.temporaryCacheStorage.getItem(key);\r\n if (!stateValue) {\r\n return;\r\n }\r\n // Extract state and ensure it matches given InteractionType, then clean request cache\r\n const parsedState = BrowserProtocolUtils.extractBrowserRequestState(this.cryptoImpl, stateValue);\r\n if (parsedState && parsedState.interactionType === interactionType) {\r\n this.logger.info(`BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: ${stateValue}`);\r\n this.resetRequestCache(stateValue);\r\n }\r\n });\r\n this.clearMsalCookies();\r\n }\r\n\r\n cacheCodeRequest(authCodeRequest: CommonAuthorizationCodeRequest, browserCrypto: ICrypto): void {\r\n this.logger.verbose(\"BrowserCacheManager.cacheCodeRequest called\");\r\n\r\n const encodedValue = browserCrypto.base64Encode(JSON.stringify(authCodeRequest));\r\n this.setTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, encodedValue, true);\r\n }\r\n\r\n /**\r\n * Gets the token exchange parameters from the cache. Throws an error if nothing is found.\r\n */\r\n getCachedRequest(state: string, browserCrypto: ICrypto): CommonAuthorizationCodeRequest {\r\n this.logger.verbose(\"BrowserCacheManager.getCachedRequest called\");\r\n // Get token request from cache and parse as TokenExchangeParameters.\r\n const encodedTokenRequest = this.getTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, true);\r\n if (!encodedTokenRequest) {\r\n throw BrowserAuthError.createNoTokenRequestCacheError();\r\n }\r\n\r\n const parsedRequest = this.validateAndParseJson(browserCrypto.base64Decode(encodedTokenRequest)) as CommonAuthorizationCodeRequest;\r\n if (!parsedRequest) {\r\n throw BrowserAuthError.createUnableToParseTokenRequestCacheError();\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n\r\n // Get cached authority and use if no authority is cached with request.\r\n if (StringUtils.isEmpty(parsedRequest.authority)) {\r\n const authorityCacheKey: string = this.generateAuthorityKey(state);\r\n const cachedAuthority = this.getTemporaryCache(authorityCacheKey);\r\n if (!cachedAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n parsedRequest.authority = cachedAuthority;\r\n }\r\n\r\n return parsedRequest;\r\n }\r\n}\r\n\r\nexport const DEFAULT_BROWSER_CACHE_MANAGER = (clientId: string, logger: Logger): BrowserCacheManager => {\r\n const cacheOptions = {\r\n cacheLocation: BrowserCacheLocation.MemoryStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false\r\n };\r\n return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger);\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\r\n\r\n/**\r\n * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\r\n */\r\nexport class FetchClient implements INetworkModule {\r\n\r\n /**\r\n * Fetch Client for REST endpoints - Get request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendGetRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\r\n let response;\r\n try {\r\n response = await fetch(url, {\r\n method: HTTP_REQUEST_TYPE.GET,\r\n headers: this.getFetchHeaders(options)\r\n });\r\n } catch (e) {\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createGetRequestFailedError(e, url);\r\n } else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n\r\n try {\r\n return {\r\n headers: this.getHeaderDict(response.headers),\r\n body: await response.json() as T,\r\n status: response.status\r\n };\r\n } catch (e) {\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n }\r\n }\r\n\r\n /**\r\n * Fetch Client for REST endpoints - Post request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\r\n const reqBody = (options && options.body) || \"\";\r\n\r\n let response;\r\n try {\r\n response = await fetch(url, {\r\n method: HTTP_REQUEST_TYPE.POST,\r\n headers: this.getFetchHeaders(options),\r\n body: reqBody\r\n });\r\n } catch (e) {\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createPostRequestFailedError(e, url);\r\n } else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n\r\n try {\r\n return {\r\n headers: this.getHeaderDict(response.headers),\r\n body: await response.json() as T,\r\n status: response.status\r\n };\r\n } catch (e) {\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n }\r\n }\r\n\r\n /**\r\n * Get Fetch API Headers object from string map\r\n * @param inputHeaders \r\n */\r\n private getFetchHeaders(options?: NetworkRequestOptions): Headers {\r\n const headers = new Headers();\r\n if (!(options && options.headers)) {\r\n return headers;\r\n }\r\n const optionsHeaders = options.headers;\r\n Object.keys(optionsHeaders).forEach((key) => {\r\n headers.append(key, optionsHeaders[key]);\r\n });\r\n return headers;\r\n }\r\n\r\n private getHeaderDict(headers: Headers): Record {\r\n const headerDict: Record = {};\r\n headers.forEach((value: string, key: string) => {\r\n headerDict[key] = value;\r\n });\r\n return headerDict;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\r\n\r\n/**\r\n * This client implements the XMLHttpRequest class to send GET and POST requests.\r\n */\r\nexport class XhrClient implements INetworkModule {\r\n\r\n /**\r\n * XhrClient for REST endpoints - Get request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendGetRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\r\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.GET, options);\r\n }\r\n\r\n /**\r\n * XhrClient for REST endpoints - Post request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\r\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.POST, options);\r\n }\r\n\r\n /**\r\n * Helper for XhrClient requests.\r\n * @param url \r\n * @param method \r\n * @param options \r\n */\r\n private sendRequestAsync(url: string, method: HTTP_REQUEST_TYPE, options?: NetworkRequestOptions): Promise> {\r\n return new Promise>((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(method, url, /* async: */ true);\r\n this.setXhrHeaders(xhr, options);\r\n xhr.onload = (): void => {\r\n if (xhr.status < 200 || xhr.status >= 300) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n } else {\r\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n }\r\n }\r\n try {\r\n const jsonResponse = JSON.parse(xhr.responseText) as T;\r\n const networkResponse: NetworkResponse = {\r\n headers: this.getHeaderDict(xhr),\r\n body: jsonResponse,\r\n status: xhr.status\r\n };\r\n resolve(networkResponse);\r\n } catch (e) {\r\n reject(BrowserAuthError.createFailedToParseNetworkResponseError(url));\r\n }\r\n };\r\n\r\n xhr.onerror = (): void => {\r\n if (window.navigator.onLine) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n } else {\r\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n }\r\n } else {\r\n reject(BrowserAuthError.createNoNetworkConnectivityError());\r\n }\r\n };\r\n\r\n if (method === HTTP_REQUEST_TYPE.POST && options && options.body) {\r\n xhr.send(options.body);\r\n } else if (method === HTTP_REQUEST_TYPE.GET) {\r\n xhr.send();\r\n } else {\r\n throw BrowserAuthError.createHttpMethodNotImplementedError(method);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Helper to set XHR headers for request.\r\n * @param xhr \r\n * @param options \r\n */\r\n private setXhrHeaders(xhr: XMLHttpRequest, options?: NetworkRequestOptions): void {\r\n if (options && options.headers) {\r\n const headers = options.headers;\r\n Object.keys(headers).forEach((key: string) => {\r\n xhr.setRequestHeader(key, headers[key]);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets a string map of the headers received in the response.\r\n * \r\n * Algorithm comes from https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\r\n * @param xhr \r\n */\r\n private getHeaderDict(xhr: XMLHttpRequest): Record {\r\n const headerString = xhr.getAllResponseHeaders();\r\n const headerArr = headerString.trim().split(/[\\r\\n]+/);\r\n const headerDict: Record = {};\r\n headerArr.forEach((value: string) => {\r\n const parts = value.split(\": \");\r\n const headerName = parts.shift();\r\n const headerVal = parts.join(\": \");\r\n if (headerName && headerVal) {\r\n headerDict[headerName] = headerVal;\r\n }\r\n });\r\n\r\n return headerDict;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants, INetworkModule, UrlString } from \"@azure/msal-common\";\r\nimport { FetchClient } from \"../network/FetchClient\";\r\nimport { XhrClient } from \"../network/XhrClient\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { InteractionType, BrowserConstants } from \"./BrowserConstants\";\r\n\r\n/**\r\n * Utility class for browser specific functions\r\n */\r\nexport class BrowserUtils {\r\n\r\n // #region Window Navigation and URL management\r\n\r\n /**\r\n * Clears hash from window url.\r\n */\r\n static clearHash(): void {\r\n // Office.js sets history.replaceState to null\r\n if (typeof history.replaceState === \"function\") {\r\n // Full removes \"#\" from url\r\n history.replaceState(null, Constants.EMPTY_STRING, `${window.location.pathname}${window.location.search}`);\r\n } else {\r\n window.location.hash = \"\";\r\n }\r\n }\r\n\r\n /**\r\n * Replaces current hash with hash from provided url\r\n */\r\n static replaceHash(url: string): void {\r\n const urlParts = url.split(\"#\");\r\n urlParts.shift(); // Remove part before the hash\r\n \r\n window.location.hash = urlParts.length > 0 ? urlParts.join(\"#\") : \"\";\r\n }\r\n\r\n /**\r\n * Returns boolean of whether the current window is in an iframe or not.\r\n */\r\n static isInIframe(): boolean {\r\n return window.parent !== window;\r\n }\r\n\r\n // #endregion\r\n\r\n /**\r\n * Returns current window URL as redirect uri\r\n */\r\n static getCurrentUri(): string {\r\n return window.location.href.split(\"?\")[0].split(\"#\")[0];\r\n }\r\n\r\n /**\r\n * Gets the homepage url for the current window location.\r\n */\r\n static getHomepage(): string {\r\n const currentUrl = new UrlString(window.location.href);\r\n const urlComponents = currentUrl.getUrlComponents();\r\n return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`;\r\n }\r\n\r\n /**\r\n * Returns best compatible network client object. \r\n */\r\n static getBrowserNetworkClient(): INetworkModule {\r\n if (window.fetch && window.Headers) {\r\n return new FetchClient();\r\n } else {\r\n return new XhrClient();\r\n }\r\n }\r\n\r\n /**\r\n * Throws error if we have completed an auth and are \r\n * attempting another auth request inside an iframe.\r\n */\r\n static blockReloadInHiddenIframes(): void {\r\n const isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash);\r\n // return an error if called from the hidden iframe created by the msal js silent calls\r\n if (isResponseHash && BrowserUtils.isInIframe()) {\r\n throw BrowserAuthError.createBlockReloadInHiddenIframeError();\r\n }\r\n }\r\n\r\n /**\r\n * Block redirect operations in iframes unless explicitly allowed\r\n * @param interactionType Interaction type for the request\r\n * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe\r\n */\r\n static blockRedirectInIframe(interactionType: InteractionType, allowRedirectInIframe: boolean): void {\r\n const isIframedApp = BrowserUtils.isInIframe();\r\n if (interactionType === InteractionType.Redirect && isIframedApp && !allowRedirectInIframe) {\r\n // If we are not in top frame, we shouldn't redirect. This is also handled by the service.\r\n throw BrowserAuthError.createRedirectInIframeError(isIframedApp);\r\n }\r\n }\r\n\r\n /**\r\n * Block redirectUri loaded in popup from calling AcquireToken APIs\r\n */\r\n static blockAcquireTokenInPopups(): void {\r\n // Popups opened by msal popup APIs are given a name that starts with \"msal.\"\r\n if (window.opener && window.opener !== window && typeof window.name === \"string\" && window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0) {\r\n throw BrowserAuthError.createBlockAcquireTokenInPopupsError();\r\n }\r\n }\r\n\r\n /**\r\n * Throws error if token requests are made in non-browser environment\r\n * @param isBrowserEnvironment Flag indicating if environment is a browser.\r\n */\r\n static blockNonBrowserEnvironment(isBrowserEnvironment: boolean): void {\r\n if (!isBrowserEnvironment) {\r\n throw BrowserAuthError.createNonBrowserEnvironmentError();\r\n }\r\n }\r\n\r\n /**\r\n * Returns boolean of whether current browser is an Internet Explorer or Edge browser.\r\n */\r\n static detectIEOrEdge(): boolean {\r\n const ua = window.navigator.userAgent;\r\n const msie = ua.indexOf(\"MSIE \");\r\n const msie11 = ua.indexOf(\"Trident/\");\r\n const msedge = ua.indexOf(\"Edge/\");\r\n const isIE = msie > 0 || msie11 > 0;\r\n const isEdge = msedge > 0;\r\n return isIE || isEdge;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INavigationClient } from \"./INavigationClient\";\r\nimport { NavigationOptions } from \"./NavigationOptions\";\r\n\r\nexport class NavigationClient implements INavigationClient {\r\n /**\r\n * Navigates to other pages within the same web application\r\n * @param url \r\n * @param options \r\n */\r\n navigateInternal(url: string, options: NavigationOptions): Promise{\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n }\r\n\r\n /**\r\n * Navigates to other pages outside the web application i.e. the Identity Provider\r\n * @param url \r\n * @param options \r\n */\r\n navigateExternal(url: string, options: NavigationOptions): Promise {\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n }\r\n\r\n /**\r\n * Default navigation implementation invoked by the internal and external functions\r\n * @param url \r\n * @param options \r\n */\r\n private static defaultNavigateWindow(url: string, options: NavigationOptions): Promise {\r\n if (options.noHistory) {\r\n window.location.replace(url);\r\n } else {\r\n window.location.assign(url);\r\n }\r\n\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(true);\r\n }, options.timeout);\r\n });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { SystemOptions, LoggerOptions, INetworkModule, DEFAULT_SYSTEM_OPTIONS, Constants, ProtocolMode, LogLevel, StubbedNetworkModule } from \"@azure/msal-common\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { BrowserCacheLocation } from \"../utils/BrowserConstants\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { NavigationClient } from \"../navigation/NavigationClient\";\r\n\r\n// Default timeout for popup windows and iframes in milliseconds\r\nexport const DEFAULT_POPUP_TIMEOUT_MS = 60000;\r\nexport const DEFAULT_IFRAME_TIMEOUT_MS = 6000;\r\nexport const DEFAULT_REDIRECT_TIMEOUT_MS = 30000;\r\n\r\n/**\r\n * Use this to configure the auth options in the Configuration object\r\n *\r\n * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\r\n * - authority - You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\r\n * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios.\r\n * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios.\r\n * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal.\r\n * - postLogoutRedirectUri - The redirect URI where the window navigates after a successful logout.\r\n * - navigateToLoginRequestUrl - Boolean indicating whether to navigate to the original request URL after the auth server navigates to the redirect URL.\r\n * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\r\n * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\r\n */\r\nexport type BrowserAuthOptions = {\r\n clientId: string;\r\n authority?: string;\r\n knownAuthorities?: Array;\r\n cloudDiscoveryMetadata?: string;\r\n authorityMetadata?: string;\r\n redirectUri?: string;\r\n postLogoutRedirectUri?: string | null;\r\n navigateToLoginRequestUrl?: boolean;\r\n clientCapabilities?: Array;\r\n protocolMode?: ProtocolMode;\r\n};\r\n\r\n/**\r\n * Use this to configure the below cache configuration options:\r\n *\r\n * - cacheLocation - Used to specify the cacheLocation user wants to set. Valid values are \"localStorage\" and \"sessionStorage\"\r\n * - storeAuthStateInCookie - If set, MSAL stores the auth request state required for validation of the auth flows in the browser cookies. By default this flag is set to false.\r\n * - secureCookies - If set, MSAL sets the \"Secure\" flag on cookies so they can only be sent over HTTPS. By default this flag is set to false.\r\n */\r\nexport type CacheOptions = {\r\n cacheLocation?: BrowserCacheLocation | string;\r\n storeAuthStateInCookie?: boolean;\r\n secureCookies?: boolean;\r\n};\r\n\r\n/**\r\n * Library Specific Options\r\n *\r\n * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry\r\n * - loggerOptions - Used to initialize the Logger object (See ClientConfiguration.ts)\r\n * - networkClient - Network interface implementation\r\n * - windowHashTimeout - Sets the timeout for waiting for a response hash in a popup. Will take precedence over loadFrameTimeout if both are set.\r\n * - iframeHashTimeout - Sets the timeout for waiting for a response hash in an iframe. Will take precedence over loadFrameTimeout if both are set.\r\n * - loadFrameTimeout - Sets the timeout for waiting for a response hash in an iframe or popup\r\n * - navigateFrameWait - Maximum time the library should wait for a frame to load\r\n * - redirectNavigationTimeout - Time to wait for redirection to occur before resolving promise\r\n * - asyncPopups - Sets whether popups are opened asynchronously. By default, this flag is set to false. When set to false, blank popups are opened before anything else happens. When set to true, popups are opened when making the network request.\r\n * - allowRedirectInIframe - Flag to enable redirect opertaions when the app is rendered in an iframe (to support scenarios such as embedded B2C login).\r\n */\r\nexport type BrowserSystemOptions = SystemOptions & {\r\n loggerOptions?: LoggerOptions;\r\n networkClient?: INetworkModule;\r\n navigationClient?: INavigationClient;\r\n windowHashTimeout?: number;\r\n iframeHashTimeout?: number;\r\n loadFrameTimeout?: number;\r\n navigateFrameWait?: number;\r\n redirectNavigationTimeout?: number;\r\n asyncPopups?: boolean;\r\n allowRedirectInIframe?: boolean;\r\n};\r\n\r\n/**\r\n * Use the configuration object to configure MSAL and initialize the UserAgentApplication.\r\n *\r\n * This object allows you to configure important elements of MSAL functionality:\r\n * - auth: this is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform\r\n * - cache: this is where you configure cache location and whether to store cache in cookies\r\n * - system: this is where you can configure the network client, logger, token renewal offset\r\n */\r\nexport type Configuration = {\r\n auth: BrowserAuthOptions,\r\n cache?: CacheOptions,\r\n system?: BrowserSystemOptions\r\n};\r\n\r\nexport type BrowserConfiguration = {\r\n auth: Required,\r\n cache: Required,\r\n system: Required\r\n};\r\n\r\n/**\r\n * MSAL function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param auth\r\n * @param cache\r\n * @param system\r\n *\r\n * @returns Configuration object\r\n */\r\nexport function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system: userInputSystem }: Configuration, isBrowserEnvironment: boolean): BrowserConfiguration {\r\n\r\n // Default auth options for browser\r\n const DEFAULT_AUTH_OPTIONS: Required = {\r\n clientId: \"\",\r\n authority: `${Constants.DEFAULT_AUTHORITY}`,\r\n knownAuthorities: [],\r\n cloudDiscoveryMetadata: \"\",\r\n authorityMetadata: \"\",\r\n redirectUri: \"\",\r\n postLogoutRedirectUri: \"\",\r\n navigateToLoginRequestUrl: true,\r\n clientCapabilities: [],\r\n protocolMode: ProtocolMode.AAD\r\n };\r\n\r\n // Default cache options for browser\r\n const DEFAULT_CACHE_OPTIONS: Required = {\r\n cacheLocation: BrowserCacheLocation.SessionStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false\r\n };\r\n\r\n // Default logger options for browser\r\n const DEFAULT_LOGGER_OPTIONS: LoggerOptions = {\r\n loggerCallback: (): void => {},\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false\r\n };\r\n\r\n // Default system options for browser\r\n const DEFAULT_BROWSER_SYSTEM_OPTIONS: Required = {\r\n ...DEFAULT_SYSTEM_OPTIONS,\r\n loggerOptions: DEFAULT_LOGGER_OPTIONS,\r\n networkClient: isBrowserEnvironment ? BrowserUtils.getBrowserNetworkClient() : StubbedNetworkModule,\r\n navigationClient: new NavigationClient(),\r\n loadFrameTimeout: 0,\r\n // If loadFrameTimeout is provided, use that as default.\r\n windowHashTimeout: (userInputSystem && userInputSystem.loadFrameTimeout) || DEFAULT_POPUP_TIMEOUT_MS,\r\n iframeHashTimeout: (userInputSystem && userInputSystem.loadFrameTimeout) || DEFAULT_IFRAME_TIMEOUT_MS,\r\n navigateFrameWait: isBrowserEnvironment && BrowserUtils.detectIEOrEdge() ? 500 : 0,\r\n redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS,\r\n asyncPopups: false,\r\n allowRedirectInIframe: false\r\n };\r\n\r\n const overlayedConfig: BrowserConfiguration = {\r\n auth: { ...DEFAULT_AUTH_OPTIONS, ...userInputAuth },\r\n cache: { ...DEFAULT_CACHE_OPTIONS, ...userInputCache },\r\n system: { ...DEFAULT_BROWSER_SYSTEM_OPTIONS, ...userInputSystem }\r\n };\r\n return overlayedConfig;\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StringUtils, CommonAuthorizationCodeRequest, AuthenticationResult, AuthorizationCodeClient, AuthorityFactory, Authority, INetworkModule, ClientAuthError } from \"@azure/msal-common\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\n\r\nexport type InteractionParams = {};\r\n\r\n/**\r\n * Abstract class which defines operations for a browser interaction handling class.\r\n */\r\nexport abstract class InteractionHandler {\r\n\r\n protected authModule: AuthorizationCodeClient;\r\n protected browserStorage: BrowserCacheManager;\r\n protected authCodeRequest: CommonAuthorizationCodeRequest;\r\n\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest) {\r\n this.authModule = authCodeModule;\r\n this.browserStorage = storageImpl;\r\n this.authCodeRequest = authCodeRequest;\r\n }\r\n\r\n /**\r\n * Function to enable user interaction.\r\n * @param requestUrl\r\n */\r\n abstract initiateAuthRequest(requestUrl: string, params: InteractionParams): Window | Promise | Promise;\r\n\r\n /**\r\n * Function to handle response parameters from hash.\r\n * @param locationHash\r\n */\r\n async handleCodeResponse(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise {\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n\r\n // Handle code response.\r\n const stateKey = this.browserStorage.generateStateKey(state);\r\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n const authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n\r\n // Get cached items\r\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n\r\n // Check for new cloud instance\r\n if (authCodeResponse.cloud_instance_host_name) {\r\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\r\n }\r\n\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n authCodeResponse.state = requestState;\r\n\r\n // Acquire token with retrieved code.\r\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\r\n this.browserStorage.cleanRequestByState(state);\r\n return tokenResponse;\r\n }\r\n\r\n protected async updateTokenEndpointAuthority(cloudInstanceHostname: string, authority: Authority, networkModule: INetworkModule): Promise {\r\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${authority.tenant}/`;\r\n const cloudInstanceAuthority = await AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options);\r\n this.authModule.updateAuthority(cloudInstanceAuthority);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nexport enum EventType {\r\n LOGIN_START = \"msal:loginStart\",\r\n LOGIN_SUCCESS = \"msal:loginSuccess\",\r\n LOGIN_FAILURE = \"msal:loginFailure\",\r\n ACQUIRE_TOKEN_START = \"msal:acquireTokenStart\",\r\n ACQUIRE_TOKEN_SUCCESS = \"msal:acquireTokenSuccess\",\r\n ACQUIRE_TOKEN_FAILURE = \"msal:acquireTokenFailure\",\r\n ACQUIRE_TOKEN_NETWORK_START = \"msal:acquireTokenFromNetworkStart\",\r\n SSO_SILENT_START = \"msal:ssoSilentStart\",\r\n SSO_SILENT_SUCCESS = \"msal:ssoSilentSuccess\",\r\n SSO_SILENT_FAILURE = \"msal:ssoSilentFailure\",\r\n HANDLE_REDIRECT_START = \"msal:handleRedirectStart\",\r\n HANDLE_REDIRECT_END = \"msal:handleRedirectEnd\",\r\n POPUP_OPENED = \"msal:popupOpened\",\r\n LOGOUT_START = \"msal:logoutStart\",\r\n LOGOUT_SUCCESS = \"msal:logoutSuccess\",\r\n LOGOUT_FAILURE = \"msal:logoutFailure\",\r\n LOGOUT_END = \"msal:logoutEnd\"\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorizationCodeClient, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AuthenticationResult, ThrottlingUtils, Authority, INetworkModule, ClientAuthError } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { ApiId, BrowserConstants, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\r\n\r\nexport type RedirectParams = InteractionParams & {\r\n navigationClient: INavigationClient;\r\n redirectTimeout: number;\r\n redirectStartPage: string;\r\n onRedirectNavigate?: (url: string) => void | boolean;\r\n};\r\n\r\nexport class RedirectHandler extends InteractionHandler {\r\n\r\n private browserCrypto: ICrypto;\r\n\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserCrypto: ICrypto) {\r\n super(authCodeModule, storageImpl, authCodeRequest);\r\n this.browserCrypto = browserCrypto;\r\n }\r\n\r\n /**\r\n * Redirects window to given URL.\r\n * @param urlNavigate\r\n */\r\n async initiateAuthRequest(requestUrl: string, params: RedirectParams): Promise {\r\n this.authModule.logger.verbose(\"RedirectHandler.initiateAuthRequest called\");\r\n // Navigate if valid URL\r\n if (!StringUtils.isEmpty(requestUrl)) {\r\n // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\r\n if (params.redirectStartPage) {\r\n this.authModule.logger.verbose(\"RedirectHandler.initiateAuthRequest: redirectStartPage set to true, caching start page\");\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);\r\n }\r\n\r\n // Set interaction status in the library.\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.INTERACTION_STATUS_KEY, BrowserConstants.INTERACTION_IN_PROGRESS_VALUE, true);\r\n this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);\r\n this.authModule.logger.infoPii(\"RedirectHandler.initiateAuthRequest: Navigate to:\" + requestUrl);\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.acquireTokenRedirect,\r\n timeout: params.redirectTimeout,\r\n noHistory: false\r\n };\r\n \r\n // If onRedirectNavigate is implemented, invoke it and provide requestUrl\r\n if (typeof params.onRedirectNavigate === \"function\") {\r\n this.authModule.logger.verbose(\"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\");\r\n const navigate = params.onRedirectNavigate(requestUrl);\r\n\r\n // Returning false from onRedirectNavigate will stop navigation\r\n if (navigate !== false) {\r\n this.authModule.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\r\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\r\n return;\r\n } else {\r\n this.authModule.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\r\n return;\r\n }\r\n } else {\r\n // Navigate window to request URL\r\n this.authModule.logger.verbose(\"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\");\r\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\r\n return;\r\n }\r\n } else {\r\n // Throw error if request URL is empty.\r\n this.authModule.logger.info(\"RedirectHandler.initiateAuthRequest: Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n }\r\n\r\n /**\r\n * Handle authorization code response in the window.\r\n * @param hash\r\n */\r\n async handleCodeResponse(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule, clientId?: string): Promise {\r\n this.authModule.logger.verbose(\"RedirectHandler.handleCodeResponse called\");\r\n\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.INTERACTION_STATUS_KEY));\r\n\r\n // Handle code response.\r\n const stateKey = this.browserStorage.generateStateKey(state);\r\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n const authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n\r\n // Get cached items\r\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n\r\n // Check for new cloud instance\r\n if (authCodeResponse.cloud_instance_host_name) {\r\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\r\n }\r\n\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n authCodeResponse.state = requestState;\r\n\r\n // Remove throttle if it exists\r\n if (clientId) {\r\n ThrottlingUtils.removeThrottle(this.browserStorage, clientId, this.authCodeRequest.authority, this.authCodeRequest.scopes);\r\n }\r\n\r\n // Acquire token with retrieved code.\r\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\r\n\r\n this.browserStorage.cleanRequestByState(state);\r\n return tokenResponse;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CommonEndSessionRequest, Constants, Logger, StringUtils } from \"@azure/msal-common\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\r\nimport { BrowserConstants, InteractionType, TemporaryCacheKeys } from \"./BrowserConstants\";\r\n\r\nexport class PopupUtils {\r\n private browserStorage: BrowserCacheManager;\r\n private logger: Logger;\r\n private currentWindow: Window|undefined;\r\n\r\n constructor(storageImpl: BrowserCacheManager, logger: Logger) {\r\n this.browserStorage = storageImpl;\r\n this.logger = logger;\r\n\r\n // Properly sets this reference for the unload event.\r\n this.unloadWindow = this.unloadWindow.bind(this);\r\n }\r\n\r\n /**\r\n * @hidden\r\n *\r\n * Configures popup window for login.\r\n *\r\n * @param urlNavigate\r\n * @param title\r\n * @param popUpWidth\r\n * @param popUpHeight\r\n * @ignore\r\n * @hidden\r\n */\r\n openPopup(urlNavigate: string, popupName: string, popup?: Window|null): Window {\r\n try {\r\n let popupWindow;\r\n // Popup window passed in, setting url to navigate to\r\n if (popup) {\r\n popupWindow = popup;\r\n this.logger.verbosePii(`Navigating popup window to: ${urlNavigate}`);\r\n popupWindow.location.assign(urlNavigate);\r\n } else if (typeof popup === \"undefined\") {\r\n // Popup will be undefined if it was not passed in\r\n this.logger.verbosePii(`Opening popup window to: ${urlNavigate}`);\r\n popupWindow = PopupUtils.openSizedPopup(urlNavigate, popupName);\r\n }\r\n\r\n // Popup will be null if popups are blocked\r\n if (!popupWindow) {\r\n throw BrowserAuthError.createEmptyWindowCreatedError();\r\n }\r\n if (popupWindow.focus) {\r\n popupWindow.focus();\r\n }\r\n this.currentWindow = popupWindow;\r\n window.addEventListener(\"beforeunload\", this.unloadWindow);\r\n\r\n return popupWindow;\r\n } catch (e) {\r\n this.logger.error(\"error opening popup \" + e.message);\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.INTERACTION_STATUS_KEY));\r\n throw BrowserAuthError.createPopupWindowError(e.toString());\r\n }\r\n }\r\n\r\n static openSizedPopup(urlNavigate: string, popupName: string): Window|null {\r\n /**\r\n * adding winLeft and winTop to account for dual monitor\r\n * using screenLeft and screenTop for IE8 and earlier\r\n */\r\n const winLeft = window.screenLeft ? window.screenLeft : window.screenX;\r\n const winTop = window.screenTop ? window.screenTop : window.screenY;\r\n /**\r\n * window.innerWidth displays browser window\"s height and width excluding toolbars\r\n * using document.documentElement.clientWidth for IE8 and earlier\r\n */\r\n const width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n const height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\r\n const left = Math.max(0, ((width / 2) - (BrowserConstants.POPUP_WIDTH / 2)) + winLeft);\r\n const top = Math.max(0, ((height / 2) - (BrowserConstants.POPUP_HEIGHT / 2)) + winTop);\r\n\r\n return window.open(urlNavigate, popupName, `width=${BrowserConstants.POPUP_WIDTH}, height=${BrowserConstants.POPUP_HEIGHT}, top=${top}, left=${left}, scrollbars=yes`);\r\n }\r\n\r\n /**\r\n * Event callback to unload main window.\r\n */\r\n unloadWindow(e: Event): void {\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Popup);\r\n if (this.currentWindow) {\r\n this.currentWindow.close();\r\n }\r\n // Guarantees browser unload will happen, so no other errors will be thrown.\r\n e.preventDefault();\r\n }\r\n\r\n /**\r\n * Closes popup, removes any state vars created during popup calls.\r\n * @param popupWindow\r\n */\r\n cleanPopup(popupWindow?: Window): void {\r\n if (popupWindow) {\r\n // Close window.\r\n popupWindow.close();\r\n }\r\n // Remove window unload function\r\n window.removeEventListener(\"beforeunload\", this.unloadWindow);\r\n\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.INTERACTION_STATUS_KEY));\r\n }\r\n\r\n /**\r\n * Monitors a window until it loads a url with the same origin.\r\n * @param popupWindow - window that is being monitored\r\n */\r\n monitorPopupForSameOrigin(popupWindow: Window): Promise {\r\n return new Promise((resolve, reject) => {\r\n const intervalId = setInterval(() => {\r\n if (popupWindow.closed) {\r\n // Window is closed\r\n this.cleanPopup();\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createUserCancelledError());\r\n return;\r\n }\r\n\r\n let href: string = Constants.EMPTY_STRING;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = popupWindow.location.href;\r\n } catch (e) {}\r\n\r\n // Don't process blank pages or cross domain\r\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\r\n return;\r\n }\r\n\r\n clearInterval(intervalId);\r\n resolve();\r\n }, BrowserConstants.POLL_INTERVAL_MS);\r\n });\r\n }\r\n\r\n /**\r\n * Generates the name for the popup based on the client id and request\r\n * @param clientId\r\n * @param request\r\n */\r\n static generatePopupName(clientId: string, request: AuthorizationUrlRequest): string {\r\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${clientId}.${request.scopes.join(\"-\")}.${request.authority}.${request.correlationId}`;\r\n }\r\n\r\n /**\r\n * Generates the name for the popup based on the client id and request for logouts\r\n * @param clientId \r\n * @param request \r\n */\r\n static generateLogoutPopupName(clientId: string, request: CommonEndSessionRequest): string {\r\n const homeAccountId = request.account && request.account.homeAccountId;\r\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${clientId}.${homeAccountId}.${request.correlationId}`;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { UrlString, StringUtils, CommonAuthorizationCodeRequest, AuthorizationCodeClient } from \"@azure/msal-common\";\r\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { BrowserConstants, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { PopupUtils } from \"../utils/PopupUtils\";\r\n\r\nexport type PopupParams = InteractionParams & {\r\n popup?: Window|null;\r\n popupName: string\r\n};\r\n\r\n/**\r\n * This class implements the interaction handler base class for browsers. It is written specifically for handling\r\n * popup window scenarios. It includes functions for monitoring the popup window for a hash.\r\n */\r\nexport class PopupHandler extends InteractionHandler {\r\n private popupUtils: PopupUtils;\r\n\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest) {\r\n super(authCodeModule, storageImpl, authCodeRequest);\r\n\r\n // Properly sets this reference for the unload event.\r\n this.popupUtils = new PopupUtils(storageImpl, authCodeModule.logger);\r\n }\r\n\r\n /**\r\n * Opens a popup window with given request Url.\r\n * @param requestUrl\r\n */\r\n initiateAuthRequest(requestUrl: string, params: PopupParams): Window {\r\n // Check that request url is not empty.\r\n if (!StringUtils.isEmpty(requestUrl)) {\r\n // Set interaction status in the library.\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.INTERACTION_STATUS_KEY, BrowserConstants.INTERACTION_IN_PROGRESS_VALUE, true);\r\n this.authModule.logger.infoPii(\"Navigate to:\" + requestUrl);\r\n // Open the popup window to requestUrl.\r\n return this.popupUtils.openPopup(requestUrl, params.popupName, params.popup);\r\n } else {\r\n // Throw error if request URL is empty.\r\n this.authModule.logger.error(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n }\r\n\r\n /**\r\n * Monitors a window until it loads a url with a known hash, or hits a specified timeout.\r\n * @param popupWindow - window that is being monitored\r\n * @param timeout - milliseconds until timeout\r\n */\r\n monitorPopupForHash(popupWindow: Window): Promise {\r\n return this.popupUtils.monitorPopupForSameOrigin(popupWindow).then(() => {\r\n const contentHash = popupWindow.location.hash;\r\n this.popupUtils.cleanPopup(popupWindow);\r\n\r\n if (!contentHash) {\r\n throw BrowserAuthError.createEmptyHashError(popupWindow.location.href);\r\n }\r\n\r\n if (UrlString.hashContainsKnownProperties(contentHash)) {\r\n return contentHash;\r\n } else {\r\n throw BrowserAuthError.createHashDoesNotContainKnownPropertiesError();\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { UrlString, StringUtils, CommonAuthorizationCodeRequest, AuthorizationCodeClient, Constants } from \"@azure/msal-common\";\r\nimport { InteractionHandler } from \"./InteractionHandler\";\r\nimport { BrowserConstants } from \"../utils/BrowserConstants\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { DEFAULT_IFRAME_TIMEOUT_MS } from \"../config/Configuration\";\r\n\r\nexport class SilentHandler extends InteractionHandler {\r\n\r\n private navigateFrameWait: number;\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, navigateFrameWait: number) {\r\n super(authCodeModule, storageImpl, authCodeRequest);\r\n this.navigateFrameWait = navigateFrameWait;\r\n }\r\n\r\n /**\r\n * Creates a hidden iframe to given URL using user-requested scopes as an id.\r\n * @param urlNavigate\r\n * @param userRequestScopes\r\n */\r\n async initiateAuthRequest(requestUrl: string): Promise {\r\n if (StringUtils.isEmpty(requestUrl)) {\r\n // Throw error if request URL is empty.\r\n this.authModule.logger.info(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n\r\n return this.navigateFrameWait ? await this.loadFrame(requestUrl) : this.loadFrameSync(requestUrl);\r\n }\r\n\r\n /**\r\n * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.\r\n * @param iframe\r\n * @param timeout\r\n */\r\n monitorIframeForHash(iframe: HTMLIFrameElement, timeout: number): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {\r\n this.authModule.logger.warning(`system.loadFrameTimeout or system.iframeHashTimeout set to lower (${timeout}ms) than the default (${DEFAULT_IFRAME_TIMEOUT_MS}ms). This may result in timeouts.`);\r\n }\r\n\r\n /*\r\n * Polling for iframes can be purely timing based,\r\n * since we don't need to account for interaction.\r\n */\r\n const nowMark = window.performance.now();\r\n const timeoutMark = nowMark + timeout;\r\n\r\n const intervalId = setInterval(() => {\r\n if (window.performance.now() > timeoutMark) {\r\n this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createMonitorIframeTimeoutError());\r\n return;\r\n }\r\n\r\n let href: string = Constants.EMPTY_STRING;\r\n const contentWindow = iframe.contentWindow;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = contentWindow ? contentWindow.location.href : Constants.EMPTY_STRING;\r\n } catch (e) {}\r\n\r\n if (StringUtils.isEmpty(href)) {\r\n return;\r\n }\r\n\r\n const contentHash = contentWindow ? contentWindow.location.hash: Constants.EMPTY_STRING;\r\n if (UrlString.hashContainsKnownProperties(contentHash)) {\r\n // Success case\r\n this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n resolve(contentHash);\r\n return;\r\n }\r\n }, BrowserConstants.POLL_INTERVAL_MS);\r\n });\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Loads iframe with authorization endpoint URL\r\n * @ignore\r\n */\r\n private loadFrame(urlNavigate: string): Promise {\r\n /*\r\n * This trick overcomes iframe navigation in IE\r\n * IE does not load the page consistently in iframe\r\n */\r\n\r\n return new Promise((resolve, reject) => {\r\n const frameHandle = this.createHiddenIframe();\r\n\r\n setTimeout(() => {\r\n if (!frameHandle) {\r\n reject(\"Unable to load iframe\");\r\n return;\r\n }\r\n\r\n frameHandle.src = urlNavigate;\r\n\r\n resolve(frameHandle);\r\n }, this.navigateFrameWait);\r\n });\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Loads the iframe synchronously when the navigateTimeFrame is set to `0`\r\n * @param urlNavigate\r\n * @param frameName\r\n * @param logger\r\n */\r\n private loadFrameSync(urlNavigate: string): HTMLIFrameElement{\r\n const frameHandle = this.createHiddenIframe();\r\n\r\n frameHandle.src = urlNavigate;\r\n\r\n return frameHandle;\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Creates a new hidden iframe or gets an existing one for silent token renewal.\r\n * @ignore\r\n */\r\n private createHiddenIframe(): HTMLIFrameElement {\r\n const authFrame = document.createElement(\"iframe\");\r\n\r\n authFrame.style.visibility = \"hidden\";\r\n authFrame.style.position = \"absolute\";\r\n authFrame.style.width = authFrame.style.height = \"0\";\r\n authFrame.style.border = \"0\";\r\n authFrame.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(authFrame);\r\n\r\n return authFrame;\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Removes a hidden iframe from the page.\r\n * @ignore\r\n */\r\n private removeHiddenIframe(iframe: HTMLIFrameElement): void {\r\n if (document.body === iframe.parentNode) {\r\n document.body.removeChild(iframe);\r\n }\r\n }\r\n}\r\n","/* eslint-disable header/header */\nexport const name = \"@azure/msal-browser\";\nexport const version = \"2.13.0\";\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CryptoOps } from \"../crypto/CryptoOps\";\r\nimport { Authority, StringUtils, UrlString, ServerAuthorizationCodeResponse, CommonAuthorizationCodeRequest, AuthorizationCodeClient, PromptValue, ServerError, InteractionRequiredAuthError, AccountInfo, AuthorityFactory, ServerTelemetryManager, SilentFlowClient, ClientConfiguration, BaseAuthRequest, ServerTelemetryRequest, PersistentCacheKeys, IdToken, ProtocolUtils, ResponseMode, Constants, INetworkModule, AuthenticationResult, Logger, ThrottlingUtils, RefreshTokenClient, AuthenticationScheme, CommonSilentFlowRequest, CommonEndSessionRequest, AccountEntity, ICrypto, DEFAULT_CRYPTO_IMPLEMENTATION, AuthorityOptions } from \"@azure/msal-common\";\r\nimport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserConfiguration, buildConfiguration, Configuration } from \"../config/Configuration\";\r\nimport { TemporaryCacheKeys, InteractionType, ApiId, BrowserConstants, BrowserCacheLocation, WrapperSKU } from \"../utils/BrowserConstants\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { BrowserStateObject, BrowserProtocolUtils } from \"../utils/BrowserProtocolUtils\";\r\nimport { RedirectHandler } from \"../interaction_handler/RedirectHandler\";\r\nimport { PopupHandler, PopupParams } from \"../interaction_handler/PopupHandler\";\r\nimport { SilentHandler } from \"../interaction_handler/SilentHandler\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\nimport { version, name } from \"../packageMetadata\";\r\nimport { EventError, EventMessage, EventPayload, EventCallbackFunction } from \"../event/EventMessage\";\r\nimport { EventType } from \"../event/EventType\";\r\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\r\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\r\nimport { PopupUtils } from \"../utils/PopupUtils\";\r\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\r\n\r\nexport abstract class ClientApplication {\r\n\r\n // Crypto interface implementation\r\n protected readonly browserCrypto: ICrypto;\r\n\r\n // Storage interface implementation\r\n protected readonly browserStorage: BrowserCacheManager;\r\n\r\n // Network interface implementation\r\n protected readonly networkClient: INetworkModule;\r\n\r\n // Navigation interface implementation\r\n protected navigationClient: INavigationClient;\r\n\r\n // Input configuration by developer/user\r\n protected config: BrowserConfiguration;\r\n\r\n // Logger\r\n protected logger: Logger;\r\n\r\n // Flag to indicate if in browser environment\r\n protected isBrowserEnvironment: boolean;\r\n\r\n // Sets the account to use if no account info is given\r\n private activeLocalAccountId: string | null;\r\n\r\n // Set the SKU and Version for wrapper library if applicable\r\n private wrapperSKU: string | undefined;\r\n private wrapperVer: string | undefined;\r\n\r\n // Callback for subscribing to events\r\n private eventCallbacks: Map;\r\n\r\n // Redirect Response Object\r\n private redirectResponse: Map>;\r\n\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration Object for the MSAL PublicClientApplication instance\r\n */\r\n constructor(configuration: Configuration) {\r\n /*\r\n * If loaded in an environment where window is not available,\r\n * set internal flag to false so that further requests fail.\r\n * This is to support server-side rendering environments.\r\n */\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n // Set the configuration.\r\n this.config = buildConfiguration(configuration, this.isBrowserEnvironment);\r\n\r\n this.activeLocalAccountId = null;\r\n\r\n // Array of events\r\n this.eventCallbacks = new Map();\r\n\r\n // Initialize logger\r\n this.logger = new Logger(this.config.system.loggerOptions, name, version);\r\n\r\n // Initialize the network module class.\r\n this.networkClient = this.config.system.networkClient;\r\n\r\n // Initialize the navigation client class.\r\n this.navigationClient = this.config.system.navigationClient;\r\n \r\n // Initialize redirectResponse Map\r\n this.redirectResponse = new Map();\r\n\r\n if (!this.isBrowserEnvironment) {\r\n this.browserStorage = DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger);\r\n this.browserCrypto = DEFAULT_CRYPTO_IMPLEMENTATION;\r\n return;\r\n }\r\n\r\n // Initialize the crypto class.\r\n this.browserCrypto = new CryptoOps();\r\n\r\n // Initialize the browser storage class.\r\n this.browserStorage = new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger);\r\n }\r\n\r\n // #region Redirect Flow\r\n\r\n /**\r\n * Event handler function which allows users to fire events after the PublicClientApplication object\r\n * has loaded during redirect flows. This should be invoked on all page loads involved in redirect\r\n * auth flows.\r\n * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value.\r\n * @returns Token response or null. If the return value is null, then no auth redirect was detected.\r\n */\r\n async handleRedirectPromise(hash?: string): Promise {\r\n this.emitEvent(EventType.HANDLE_REDIRECT_START, InteractionType.Redirect);\r\n this.logger.verbose(\"handleRedirectPromise called\");\r\n const loggedInAccounts = this.getAllAccounts();\r\n if (this.isBrowserEnvironment) {\r\n /**\r\n * Store the promise on the PublicClientApplication instance if this is the first invocation of handleRedirectPromise,\r\n * otherwise return the promise from the first invocation. Prevents race conditions when handleRedirectPromise is called\r\n * several times concurrently.\r\n */\r\n const redirectResponseKey = hash || Constants.EMPTY_STRING;\r\n let response = this.redirectResponse.get(redirectResponseKey);\r\n if (typeof response === \"undefined\") {\r\n this.logger.verbose(\"handleRedirectPromise has been called for the first time, storing the promise\");\r\n response = this.handleRedirectResponse(hash)\r\n .then((result: AuthenticationResult | null) => {\r\n if (result) {\r\n // Emit login event if number of accounts change\r\n const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n this.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result);\r\n this.logger.verbose(\"handleRedirectResponse returned result, login success\");\r\n } else {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Redirect, result);\r\n this.logger.verbose(\"handleRedirectResponse returned result, acquire token success\");\r\n }\r\n }\r\n this.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n\r\n return result;\r\n })\r\n .catch((e) => {\r\n // Emit login event if there is an account\r\n if (loggedInAccounts.length > 0) {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n } else {\r\n this.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n this.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n\r\n throw e;\r\n });\r\n this.redirectResponse.set(redirectResponseKey, response);\r\n } else {\r\n this.logger.verbose(\"handleRedirectPromise has been called previously, returning the result from the first call\");\r\n }\r\n \r\n return response;\r\n }\r\n this.logger.verbose(\"handleRedirectPromise returns null, not browser environment\");\r\n return null;\r\n }\r\n\r\n /**\r\n * Checks if navigateToLoginRequestUrl is set, and:\r\n * - if true, performs logic to cache and navigate\r\n * - if false, handles hash string and parses response\r\n * @param hash\r\n */\r\n private async handleRedirectResponse(hash?: string): Promise {\r\n if (!this.interactionInProgress()) {\r\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\r\n return null;\r\n }\r\n\r\n const responseHash = this.getRedirectResponseHash(hash || window.location.hash);\r\n if (!responseHash) {\r\n // Not a recognized server response hash or hash not associated with a redirect request\r\n this.logger.info(\"handleRedirectPromise did not detect a response hash as a result of a redirect. Cleaning temporary cache.\");\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return null;\r\n }\r\n\r\n let state: string;\r\n try {\r\n state = this.validateAndExtractStateFromHash(responseHash, InteractionType.Redirect);\r\n BrowserUtils.clearHash();\r\n this.logger.verbose(\"State extracted from hash\");\r\n } catch (e) {\r\n this.logger.info(`handleRedirectPromise was unable to extract state due to: ${e}`);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return null;\r\n }\r\n\r\n // If navigateToLoginRequestUrl is true, get the url where the redirect request was initiated\r\n const loginRequestUrl = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, true) || \"\";\r\n const loginRequestUrlNormalized = UrlString.removeHashFromUrl(loginRequestUrl);\r\n const currentUrlNormalized = UrlString.removeHashFromUrl(window.location.href);\r\n\r\n if (loginRequestUrlNormalized === currentUrlNormalized && this.config.auth.navigateToLoginRequestUrl) {\r\n // We are on the page we need to navigate to - handle hash\r\n this.logger.verbose(\"Current page is loginRequestUrl, handling hash\");\r\n const handleHashResult = await this.handleHash(responseHash, state);\r\n\r\n if (loginRequestUrl.indexOf(\"#\") > -1) {\r\n // Replace current hash with non-msal hash, if present\r\n BrowserUtils.replaceHash(loginRequestUrl);\r\n }\r\n\r\n return handleHashResult;\r\n } else if (!this.config.auth.navigateToLoginRequestUrl) {\r\n this.logger.verbose(\"NavigateToLoginRequestUrl set to false, handling hash\");\r\n return this.handleHash(responseHash, state);\r\n } else if (!BrowserUtils.isInIframe()) {\r\n /*\r\n * Returned from authority using redirect - need to perform navigation before processing response\r\n * Cache the hash to be retrieved after the next redirect\r\n */\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseHash, true);\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.handleRedirectPromise,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: true\r\n };\r\n\r\n /**\r\n * Default behavior is to redirect to the start page and not process the hash now. \r\n * The start page is expected to also call handleRedirectPromise which will process the hash in one of the checks above.\r\n */ \r\n let processHashOnRedirect: boolean = true;\r\n if (!loginRequestUrl || loginRequestUrl === \"null\") {\r\n // Redirect to home page if login request url is null (real null or the string null)\r\n const homepage = BrowserUtils.getHomepage();\r\n // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true);\r\n this.logger.warning(\"Unable to get valid login request url from cache, redirecting to home page\");\r\n processHashOnRedirect = await this.navigationClient.navigateInternal(homepage, navigationOptions);\r\n } else {\r\n // Navigate to page that initiated the redirect request\r\n this.logger.verbose(`Navigating to loginRequestUrl: ${loginRequestUrl}`);\r\n processHashOnRedirect = await this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions);\r\n }\r\n\r\n // If navigateInternal implementation returns false, handle the hash now\r\n if (!processHashOnRedirect) {\r\n return this.handleHash(responseHash, state);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the response hash for a redirect request\r\n * Returns null if interactionType in the state value is not \"redirect\" or the hash does not contain known properties\r\n * @param hash\r\n */\r\n private getRedirectResponseHash(hash: string): string | null {\r\n this.logger.verbose(\"getRedirectResponseHash called\");\r\n // Get current location hash from window or cache.\r\n const isResponseHash: boolean = UrlString.hashContainsKnownProperties(hash);\r\n const cachedHash = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.URL_HASH, true);\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n\r\n if (isResponseHash) {\r\n this.logger.verbose(\"Hash contains known properties, returning response hash\");\r\n return hash;\r\n }\r\n\r\n this.logger.verbose(\"Hash does not contain known properties, returning cached hash\");\r\n return cachedHash;\r\n }\r\n\r\n /**\r\n * @param hash\r\n * @param interactionType\r\n */\r\n private validateAndExtractStateFromHash(hash: string, interactionType: InteractionType): string {\r\n this.logger.verbose(\"validateAndExtractStateFromHash called\");\r\n // Deserialize hash fragment response parameters.\r\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\r\n if (!serverParams.state) {\r\n throw BrowserAuthError.createHashDoesNotContainStateError();\r\n }\r\n\r\n const platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\r\n if (!platformStateObj) {\r\n throw BrowserAuthError.createUnableToParseStateError();\r\n }\r\n\r\n if (platformStateObj.interactionType !== interactionType) {\r\n throw BrowserAuthError.createStateInteractionTypeMismatchError();\r\n }\r\n\r\n this.logger.verbose(\"Returning state from hash\");\r\n return serverParams.state;\r\n }\r\n\r\n /**\r\n * Checks if hash exists and handles in window.\r\n * @param hash\r\n * @param state\r\n */\r\n private async handleHash(hash: string, state: string): Promise {\r\n this.logger.verbose(\"handleHash called\");\r\n const cachedRequest = this.browserStorage.getCachedRequest(state, this.browserCrypto);\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.handleRedirectPromise, cachedRequest.correlationId);\r\n\r\n try {\r\n // Hash contains known properties - handle and return in callback\r\n const currentAuthority = this.browserStorage.getCachedAuthority(state);\r\n if (!currentAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n\r\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, currentAuthority);\r\n const interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.browserCrypto);\r\n return await interactionHandler.handleCodeResponse(hash, state, authClient.authority, this.networkClient, this.config.auth.clientId);\r\n } catch (e) {\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects\r\n * the page, so any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n async acquireTokenRedirect(request: RedirectRequest): Promise {\r\n // Preflight request\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n this.logger.verbose(\"acquireTokenRedirect called\");\r\n\r\n // If logged in, emit acquire token events\r\n const isLoggedIn = this.getAllAccounts().length > 0;\r\n if (isLoggedIn) {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Redirect, request);\r\n } else {\r\n this.emitEvent(EventType.LOGIN_START, InteractionType.Redirect, request);\r\n }\r\n\r\n const validRequest: AuthorizationUrlRequest = this.preflightInteractiveRequest(request, InteractionType.Redirect);\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenRedirect, validRequest.correlationId);\r\n\r\n try {\r\n // Create auth code request and generate PKCE params\r\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\r\n\r\n // Initialize the client\r\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority);\r\n\r\n // Create redirect interaction handler.\r\n const interactionHandler = new RedirectHandler(authClient, this.browserStorage, authCodeRequest, this.browserCrypto);\r\n\r\n // Create acquire token url.\r\n const navigateUrl = await authClient.getAuthCodeUrl(validRequest);\r\n\r\n const redirectStartPage = this.getRedirectStartPage(request.redirectStartPage);\r\n\r\n // Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function.\r\n return interactionHandler.initiateAuthRequest(navigateUrl, {\r\n navigationClient: this.navigationClient,\r\n redirectTimeout: this.config.system.redirectNavigationTimeout,\r\n redirectStartPage: redirectStartPage,\r\n onRedirectNavigate: request.onRedirectNavigate\r\n });\r\n } catch (e) {\r\n // If logged in, emit acquire token events\r\n if (isLoggedIn) {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n } else {\r\n this.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e;\r\n }\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Popup Flow\r\n\r\n /**\r\n * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n acquireTokenPopup(request: PopupRequest): Promise {\r\n let validRequest: AuthorizationUrlRequest;\r\n try {\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n this.logger.verbose(\"acquireTokenPopup called\");\r\n validRequest = this.preflightInteractiveRequest(request, InteractionType.Popup);\r\n } catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n\r\n const popupName = PopupUtils.generatePopupName(this.config.auth.clientId, validRequest);\r\n\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true, acquiring token\");\r\n return this.acquireTokenPopupAsync(validRequest, popupName);\r\n } else {\r\n // asyncPopups flag is set to false. Opens popup before acquiring token.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup before acquiring token\");\r\n const popup = PopupUtils.openSizedPopup(\"about:blank\", popupName);\r\n return this.acquireTokenPopupAsync(validRequest, popupName, popup);\r\n }\r\n }\r\n\r\n /**\r\n * Helper which obtains an access_token for your API via opening a popup window in the user's browser\r\n * @param validRequest\r\n * @param popupName\r\n * @param popup\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n private async acquireTokenPopupAsync(validRequest: AuthorizationUrlRequest, popupName: string, popup?: Window|null): Promise {\r\n this.logger.verbose(\"acquireTokenPopupAsync called\");\r\n // If logged in, emit acquire token events\r\n const loggedInAccounts = this.getAllAccounts();\r\n if (loggedInAccounts.length > 0) {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, validRequest);\r\n } else {\r\n this.emitEvent(EventType.LOGIN_START, InteractionType.Popup, validRequest);\r\n }\r\n\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenPopup, validRequest.correlationId);\r\n\r\n try {\r\n // Create auth code request and generate PKCE params\r\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\r\n\r\n // Initialize the client\r\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority);\r\n\r\n // Create acquire token url.\r\n const navigateUrl = await authClient.getAuthCodeUrl(validRequest);\r\n\r\n // Create popup interaction handler.\r\n const interactionHandler = new PopupHandler(authClient, this.browserStorage, authCodeRequest);\r\n\r\n // Show the UI once the url has been created. Get the window handle for the popup.\r\n const popupParameters: PopupParams = {\r\n popup,\r\n popupName\r\n };\r\n const popupWindow: Window = interactionHandler.initiateAuthRequest(navigateUrl, popupParameters);\r\n this.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, {popupWindow}, null);\r\n\r\n // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\r\n const hash = await interactionHandler.monitorPopupForHash(popupWindow);\r\n const state = this.validateAndExtractStateFromHash(hash, InteractionType.Popup);\r\n\r\n // Remove throttle if it exists\r\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, authCodeRequest.authority, authCodeRequest.scopes);\r\n\r\n // Handle response from hash string.\r\n const result = await interactionHandler.handleCodeResponse(hash, state, authClient.authority, this.networkClient);\r\n\r\n // If logged in, emit acquire token events\r\n const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n this.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Popup, result);\r\n } else {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result);\r\n }\r\n\r\n return result;\r\n } catch (e) {\r\n if (loggedInAccounts.length > 0) {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e);\r\n } else {\r\n this.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Popup, null, e);\r\n }\r\n\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e;\r\n }\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Silent Flow\r\n\r\n /**\r\n * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work:\r\n * - Any browser using a form of Intelligent Tracking Prevention\r\n * - If there is not an established session with the service\r\n *\r\n * In these cases, the request must be done inside a popup or full frame redirect.\r\n *\r\n * For the cases where interaction is required, you cannot send a request with prompt=none.\r\n *\r\n * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as\r\n * you session on the server still exists.\r\n * @param request {@link SsoSilentRequest}\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n async ssoSilent(request: SsoSilentRequest): Promise {\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.verbose(\"ssoSilent called\");\r\n this.emitEvent(EventType.SSO_SILENT_START, InteractionType.Silent, request);\r\n\r\n try {\r\n const silentTokenResult = await this.acquireTokenByIframe(request, ApiId.ssoSilent);\r\n this.emitEvent(EventType.SSO_SILENT_SUCCESS, InteractionType.Silent, silentTokenResult);\r\n return silentTokenResult;\r\n } catch (e) {\r\n this.emitEvent(EventType.SSO_SILENT_FAILURE, InteractionType.Silent, null, e);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * This function uses a hidden iframe to fetch an authorization code from the eSTS. To be used for silent refresh token acquisition and renewal.\r\n * @param request\r\n * @param apiId - ApiId of the calling function. Used for telemetry.\r\n */\r\n private async acquireTokenByIframe(request: SsoSilentRequest, apiId: ApiId): Promise {\r\n this.logger.verbose(\"acquireTokenByIframe called\");\r\n // Check that we have some SSO data\r\n if (StringUtils.isEmpty(request.loginHint) && StringUtils.isEmpty(request.sid) && (!request.account || StringUtils.isEmpty(request.account.username))) {\r\n throw BrowserAuthError.createSilentSSOInsufficientInfoError();\r\n }\r\n\r\n // Check that prompt is set to none, throw error if it is set to anything else.\r\n if (request.prompt && request.prompt !== PromptValue.NONE) {\r\n throw BrowserAuthError.createSilentPromptValueError(request.prompt);\r\n }\r\n\r\n // Create silent request\r\n const silentRequest: AuthorizationUrlRequest = this.initializeAuthorizationRequest({\r\n ...request,\r\n prompt: PromptValue.NONE\r\n }, InteractionType.Silent);\r\n\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(apiId, silentRequest.correlationId);\r\n\r\n try {\r\n // Create auth code request and generate PKCE params\r\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(silentRequest);\r\n\r\n // Initialize the client\r\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority);\r\n\r\n // Create authorize request url\r\n const navigateUrl = await authClient.getAuthCodeUrl(silentRequest);\r\n\r\n return await this.silentTokenHelper(navigateUrl, authCodeRequest, authClient);\r\n } catch (e) {\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByState(silentRequest.state);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Use this function to obtain a token before every call to the API / resource provider\r\n *\r\n * MSAL return's a cached token when available\r\n * Or it send's a request to the STS to obtain a new token using a refresh token.\r\n *\r\n * @param {@link SilentRequest}\r\n *\r\n * To renew idToken, please pass clientId as the only scope in the Authentication Parameters\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n protected async acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, InteractionType.Silent, request);\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n const silentRequest: CommonSilentFlowRequest = {\r\n ...request,\r\n ...this.initializeBaseRequest(request)\r\n };\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow, silentRequest.correlationId);\r\n try {\r\n const refreshTokenClient = await this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority);\r\n // Send request to renew token. Auth module will throw errors if token cannot be renewed.\r\n return await refreshTokenClient.acquireTokenByRefreshToken(silentRequest);\r\n } catch (e) {\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n const isServerError = e instanceof ServerError;\r\n const isInteractionRequiredError = e instanceof InteractionRequiredAuthError;\r\n const isInvalidGrantError = (e.errorCode === BrowserConstants.INVALID_GRANT_ERROR);\r\n if (isServerError && isInvalidGrantError && !isInteractionRequiredError) {\r\n this.logger.verbose(\"Refresh token expired or invalid, attempting acquire token by iframe\");\r\n return await this.acquireTokenByIframe(request, ApiId.acquireTokenSilent_authCode);\r\n }\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Helper which acquires an authorization code silently using a hidden iframe from given url\r\n * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.\r\n * @param navigateUrl\r\n * @param userRequestScopes\r\n */\r\n private async silentTokenHelper(navigateUrl: string, authCodeRequest: CommonAuthorizationCodeRequest, authClient: AuthorizationCodeClient): Promise {\r\n // Create silent handler\r\n const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.config.system.navigateFrameWait);\r\n // Get the frame handle for the silent request\r\n const msalFrame = await silentHandler.initiateAuthRequest(navigateUrl);\r\n // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\r\n const hash = await silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout);\r\n const state = this.validateAndExtractStateFromHash(hash, InteractionType.Silent);\r\n\r\n // Handle response from hash string\r\n return silentHandler.handleCodeResponse(hash, state, authClient.authority, this.networkClient);\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Logout\r\n\r\n /**\r\n * Deprecated logout function. Use logoutRedirect or logoutPopup instead\r\n * @param logoutRequest \r\n * @deprecated\r\n */\r\n async logout(logoutRequest?: EndSessionRequest): Promise {\r\n this.logger.warning(\"logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.\");\r\n return this.logoutRedirect(logoutRequest);\r\n }\r\n\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param logoutRequest\r\n */\r\n async logoutRedirect(logoutRequest?: EndSessionRequest): Promise {\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n this.logger.verbose(\"logoutRedirect called\");\r\n const validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logout, validLogoutRequest.correlationId);\r\n\r\n try {\r\n this.emitEvent(EventType.LOGOUT_START, InteractionType.Redirect, logoutRequest);\r\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, logoutRequest && logoutRequest.authority);\r\n // create logout string and navigate user window to logout. Auth module will clear cache.\r\n const logoutUri: string = authClient.getLogoutUri(validLogoutRequest);\r\n \r\n if (!validLogoutRequest.account || AccountEntity.accountInfoIsEqual(validLogoutRequest.account, this.getActiveAccount())) {\r\n this.logger.verbose(\"Setting active account to null\");\r\n this.setActiveAccount(null);\r\n }\r\n \r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.logout,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n \r\n this.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Redirect, validLogoutRequest);\r\n // Check if onRedirectNavigate is implemented, and invoke it if so\r\n if (logoutRequest && typeof logoutRequest.onRedirectNavigate === \"function\") {\r\n const navigate = logoutRequest.onRedirectNavigate(logoutUri);\r\n\r\n if (navigate !== false) {\r\n this.logger.verbose(\"Logout onRedirectNavigate did not return false, navigating\");\r\n await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\r\n return;\r\n } else {\r\n this.logger.verbose(\"Logout onRedirectNavigate returned false, stopping navigation\");\r\n }\r\n } else {\r\n await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\r\n return;\r\n }\r\n } catch(e) {\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Redirect, null, e);\r\n throw e;\r\n }\r\n\r\n this.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\r\n }\r\n\r\n /**\r\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\r\n * @param logoutRequest \r\n */\r\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise {\r\n let validLogoutRequest: CommonEndSessionRequest;\r\n try {\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n this.logger.verbose(\"logoutPopup called\");\r\n validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n } catch (e) {\r\n // Since this function is synchronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n\r\n const popupName = PopupUtils.generateLogoutPopupName(this.config.auth.clientId, validLogoutRequest);\r\n let popup;\r\n\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true\");\r\n } else {\r\n // asyncPopups flag is set to false. Opens popup before logging out.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup\");\r\n popup = PopupUtils.openSizedPopup(\"about:blank\", popupName);\r\n }\r\n\r\n const authority = logoutRequest && logoutRequest.authority;\r\n const mainWindowRedirectUri = logoutRequest && logoutRequest.mainWindowRedirectUri;\r\n return this.logoutPopupAsync(validLogoutRequest, popupName, authority, popup, mainWindowRedirectUri);\r\n }\r\n\r\n /**\r\n * \r\n * @param request \r\n * @param popupName \r\n * @param requestAuthority\r\n * @param popup \r\n */\r\n private async logoutPopupAsync(validRequest: CommonEndSessionRequest, popupName: string, requestAuthority?: string, popup?: Window|null, mainWindowRedirectUri?: string): Promise {\r\n this.logger.verbose(\"logoutPopupAsync called\");\r\n this.emitEvent(EventType.LOGOUT_START, InteractionType.Popup, validRequest);\r\n \r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logoutPopup, validRequest.correlationId);\r\n \r\n try {\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.INTERACTION_STATUS_KEY, BrowserConstants.INTERACTION_IN_PROGRESS_VALUE, true);\r\n // Initialize the client\r\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, requestAuthority);\r\n\r\n // create logout string and navigate user window to logout. Auth module will clear cache.\r\n const logoutUri: string = authClient.getLogoutUri(validRequest);\r\n if (!validRequest.account || AccountEntity.accountInfoIsEqual(validRequest.account, this.getActiveAccount())) {\r\n this.logger.verbose(\"Setting active account to null\");\r\n this.setActiveAccount(null);\r\n }\r\n\r\n this.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Popup, validRequest);\r\n\r\n const popupUtils = new PopupUtils(this.browserStorage, this.logger);\r\n // Open the popup window to requestUrl.\r\n const popupWindow = popupUtils.openPopup(logoutUri, popupName, popup);\r\n this.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, {popupWindow}, null);\r\n\r\n try {\r\n // Don't care if this throws an error (User Cancelled)\r\n await popupUtils.monitorPopupForSameOrigin(popupWindow);\r\n this.logger.verbose(\"Popup successfully redirected to postLogoutRedirectUri\");\r\n } catch (e) {\r\n this.logger.verbose(`Error occurred while monitoring popup for same origin. Session on server may remain active. Error: ${e}`);\r\n }\r\n\r\n popupUtils.cleanPopup(popupWindow);\r\n\r\n if (mainWindowRedirectUri) {\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.logoutPopup,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n const absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, BrowserUtils.getCurrentUri());\r\n\r\n this.logger.verbose(\"Redirecting main window to url specified in the request\");\r\n this.logger.verbosePii(`Redirecing main window to: ${absoluteUrl}`);\r\n this.navigationClient.navigateInternal(absoluteUrl, navigationOptions);\r\n } else {\r\n this.logger.verbose(\"No main window navigation requested\");\r\n }\r\n\r\n } catch (e) {\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.INTERACTION_STATUS_KEY));\r\n this.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Popup, null, e);\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n throw e;\r\n }\r\n\r\n this.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Account APIs\r\n\r\n /**\r\n * Returns all accounts that MSAL currently has data for.\r\n * (the account object is created at the time of successful login)\r\n * or empty array when no accounts are found\r\n * @returns Array of account objects in cache\r\n */\r\n getAllAccounts(): AccountInfo[] {\r\n this.logger.verbose(\"getAllAccounts called\");\r\n return this.isBrowserEnvironment ? this.browserStorage.getAllAccounts() : [];\r\n }\r\n\r\n /**\r\n * Returns the signed in account matching username.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found.\r\n * This API is provided for convenience but getAccountById should be used for best reliability\r\n * @param userName\r\n * @returns The account object stored in MSAL\r\n */\r\n getAccountByUsername(userName: string): AccountInfo|null {\r\n const allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(userName) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching username found, returning\");\r\n this.logger.verbosePii(`Returning signed-in accounts matching username: ${userName}`);\r\n return allAccounts.filter(accountObj => accountObj.username.toLowerCase() === userName.toLowerCase())[0] || null;\r\n } else {\r\n this.logger.verbose(\"getAccountByUsername: No matching account found, returning null\");\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the signed in account matching homeAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param homeAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n getAccountByHomeId(homeAccountId: string): AccountInfo|null {\r\n const allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(homeAccountId) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching homeAccountId found, returning\");\r\n this.logger.verbosePii(`Returning signed-in accounts matching homeAccountId: ${homeAccountId}`);\r\n return allAccounts.filter(accountObj => accountObj.homeAccountId === homeAccountId)[0] || null;\r\n } else {\r\n this.logger.verbose(\"getAccountByHomeId: No matching account found, returning null\");\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the signed in account matching localAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param localAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n getAccountByLocalId(localAccountId: string): AccountInfo | null {\r\n const allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(localAccountId) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching localAccountId found, returning\");\r\n this.logger.verbosePii(`Returning signed-in accounts matching localAccountId: ${localAccountId}`);\r\n return allAccounts.filter(accountObj => accountObj.localAccountId === localAccountId)[0] || null;\r\n } else {\r\n this.logger.verbose(\"getAccountByLocalId: No matching account found, returning null\");\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account.\r\n * @param account\r\n */\r\n setActiveAccount(account: AccountInfo | null): void {\r\n if (account) {\r\n this.logger.verbose(\"setActiveAccount: Active account set\");\r\n this.activeLocalAccountId = account.localAccountId;\r\n } else {\r\n this.logger.verbose(\"setActiveAccount: No account passed, active account not set\");\r\n this.activeLocalAccountId = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the currently active account\r\n */\r\n getActiveAccount(): AccountInfo | null {\r\n if (!this.activeLocalAccountId) {\r\n this.logger.verbose(\"getActiveAccount: No active account\");\r\n return null;\r\n }\r\n\r\n return this.getAccountByLocalId(this.activeLocalAccountId);\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Helpers\r\n\r\n /**\r\n *\r\n * Use to get the redirect uri configured in MSAL or null.\r\n * @param requestRedirectUri\r\n * @returns Redirect URL\r\n *\r\n */\r\n protected getRedirectUri(requestRedirectUri?: string): string {\r\n this.logger.verbose(\"getRedirectUri called\");\r\n const redirectUri = requestRedirectUri || this.config.auth.redirectUri || BrowserUtils.getCurrentUri();\r\n return UrlString.getAbsoluteUrl(redirectUri, BrowserUtils.getCurrentUri());\r\n }\r\n\r\n /**\r\n * Use to get the redirectStartPage either from request or use current window\r\n * @param requestStartPage\r\n */\r\n protected getRedirectStartPage(requestStartPage?: string): string {\r\n this.logger.verbose(\"getRedirectStartPage called\");\r\n const redirectStartPage = requestStartPage || window.location.href;\r\n return UrlString.getAbsoluteUrl(redirectStartPage, BrowserUtils.getCurrentUri());\r\n }\r\n\r\n /**\r\n * Used to get a discovered version of the default authority.\r\n * @param requestAuthority\r\n */\r\n async getDiscoveredAuthority(requestAuthority?: string): Promise {\r\n this.logger.verbose(\"getDiscoveredAuthority called\");\r\n const authorityOptions: AuthorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata\r\n };\r\n\r\n if (requestAuthority) {\r\n this.logger.verbose(\"Creating discovered authority with request authority\");\r\n return await AuthorityFactory.createDiscoveredInstance(requestAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions);\r\n }\r\n\r\n this.logger.verbose(\"Creating discovered authority with configured authority\");\r\n return await AuthorityFactory.createDiscoveredInstance(this.config.auth.authority, this.config.system.networkClient, this.browserStorage, authorityOptions);\r\n }\r\n\r\n /**\r\n * Helper to check whether interaction is in progress.\r\n */\r\n protected interactionInProgress(): boolean {\r\n // Check whether value in cache is present and equal to expected value\r\n return (this.browserStorage.getTemporaryCache(TemporaryCacheKeys.INTERACTION_STATUS_KEY, true)) === BrowserConstants.INTERACTION_IN_PROGRESS_VALUE;\r\n }\r\n\r\n /**\r\n * Creates an Authorization Code Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n protected async createAuthCodeClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string): Promise {\r\n this.logger.verbose(\"createAuthCodeClient called\");\r\n // Create auth module.\r\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl);\r\n return new AuthorizationCodeClient(clientConfig);\r\n }\r\n\r\n /**\r\n * Creates an Silent Flow Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n protected async createSilentFlowClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string): Promise {\r\n this.logger.verbose(\"createSilentFlowClient called\");\r\n // Create auth module.\r\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl);\r\n return new SilentFlowClient(clientConfig);\r\n }\r\n\r\n /**\r\n * Creates a Refresh Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n protected async createRefreshTokenClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string): Promise {\r\n this.logger.verbose(\"createRefreshTokenClient called\");\r\n // Create auth module.\r\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl);\r\n return new RefreshTokenClient(clientConfig);\r\n }\r\n\r\n /**\r\n * Creates a Client Configuration object with the given request authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param requestAuthority\r\n */\r\n protected async getClientConfiguration(serverTelemetryManager: ServerTelemetryManager, requestAuthority?: string): Promise {\r\n this.logger.verbose(\"getClientConfiguration called\");\r\n const discoveredAuthority = await this.getDiscoveredAuthority(requestAuthority);\r\n\r\n return {\r\n authOptions: {\r\n clientId: this.config.auth.clientId,\r\n authority: discoveredAuthority,\r\n clientCapabilities: this.config.auth.clientCapabilities\r\n },\r\n systemOptions: {\r\n tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds\r\n },\r\n loggerOptions: {\r\n loggerCallback: this.config.system.loggerOptions.loggerCallback,\r\n piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled\r\n },\r\n cryptoInterface: this.browserCrypto,\r\n networkInterface: this.networkClient,\r\n storageInterface: this.browserStorage,\r\n serverTelemetryManager: serverTelemetryManager,\r\n libraryInfo: {\r\n sku: BrowserConstants.MSAL_SKU,\r\n version: version,\r\n cpu: \"\",\r\n os: \"\"\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Helper to validate app environment before making a request.\r\n * @param request\r\n * @param interactionType\r\n */\r\n protected preflightInteractiveRequest(request: RedirectRequest|PopupRequest, interactionType: InteractionType): AuthorizationUrlRequest {\r\n this.logger.verbose(\"preflightInteractiveRequest called, validating app environment\");\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n\r\n // Check if interaction is in progress. Throw error if true.\r\n if (this.interactionInProgress()) {\r\n throw BrowserAuthError.createInteractionInProgressError();\r\n }\r\n\r\n return this.initializeAuthorizationRequest(request, interactionType);\r\n }\r\n\r\n /**\r\n * Helper to validate app environment before making an auth request\r\n * * @param interactionType\r\n */\r\n protected preflightBrowserEnvironmentCheck(interactionType: InteractionType): void {\r\n this.logger.verbose(\"preflightBrowserEnvironmentCheck started\");\r\n // Block request if not in browser environment\r\n BrowserUtils.blockNonBrowserEnvironment(this.isBrowserEnvironment);\r\n\r\n // Block redirects if in an iframe\r\n BrowserUtils.blockRedirectInIframe(interactionType, this.config.system.allowRedirectInIframe);\r\n\r\n // Block auth requests inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n\r\n // Block redirectUri opened in a popup from calling MSAL APIs\r\n BrowserUtils.blockAcquireTokenInPopups();\r\n\r\n // Block redirects if memory storage is enabled but storeAuthStateInCookie is not\r\n if (interactionType === InteractionType.Redirect &&\r\n this.config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage &&\r\n !this.config.cache.storeAuthStateInCookie) {\r\n throw BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError();\r\n }\r\n }\r\n\r\n /**\r\n * Initializer function for all request APIs\r\n * @param request\r\n */\r\n protected initializeBaseRequest(request: Partial): BaseAuthRequest {\r\n this.logger.verbose(\"Initializing BaseAuthRequest\");\r\n const authority = request.authority || this.config.auth.authority;\r\n\r\n const scopes = [...((request && request.scopes) || [])];\r\n const correlationId = (request && request.correlationId) || this.browserCrypto.createNewGuid();\r\n\r\n const validatedRequest: BaseAuthRequest = {\r\n ...request,\r\n correlationId,\r\n authority,\r\n scopes\r\n };\r\n\r\n return validatedRequest;\r\n }\r\n\r\n /**\r\n *\r\n * @param apiId\r\n * @param correlationId\r\n * @param forceRefresh\r\n */\r\n protected initializeServerTelemetryManager(apiId: number, correlationId: string, forceRefresh?: boolean): ServerTelemetryManager {\r\n this.logger.verbose(\"initializeServerTelemetryManager called\");\r\n const telemetryPayload: ServerTelemetryRequest = {\r\n clientId: this.config.auth.clientId,\r\n correlationId: correlationId,\r\n apiId: apiId,\r\n forceRefresh: forceRefresh || false,\r\n wrapperSKU: this.wrapperSKU,\r\n wrapperVer: this.wrapperVer\r\n };\r\n\r\n return new ServerTelemetryManager(telemetryPayload, this.browserStorage);\r\n }\r\n\r\n /**\r\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\r\n * @param request\r\n * @param interactionType\r\n */\r\n protected initializeAuthorizationRequest(request: RedirectRequest|PopupRequest|SsoSilentRequest, interactionType: InteractionType): AuthorizationUrlRequest {\r\n this.logger.verbose(\"initializeAuthorizationRequest called\");\r\n const redirectUri = this.getRedirectUri(request.redirectUri);\r\n const browserState: BrowserStateObject = {\r\n interactionType: interactionType\r\n };\r\n\r\n const state = ProtocolUtils.setRequestState(\r\n this.browserCrypto,\r\n (request && request.state) || \"\",\r\n browserState\r\n );\r\n\r\n const authenticationScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n\r\n const validatedRequest: AuthorizationUrlRequest = {\r\n ...this.initializeBaseRequest(request),\r\n redirectUri: redirectUri,\r\n state: state,\r\n nonce: request.nonce || this.browserCrypto.createNewGuid(),\r\n responseMode: ResponseMode.FRAGMENT,\r\n authenticationScheme: authenticationScheme\r\n };\r\n\r\n const account = request.account || this.getActiveAccount();\r\n if (account) {\r\n this.logger.verbose(\"Setting validated request account\");\r\n this.logger.verbosePii(`Setting validated request account: ${account}`);\r\n validatedRequest.account = account;\r\n }\r\n\r\n // Check for ADAL SSO\r\n if (StringUtils.isEmpty(validatedRequest.loginHint)) {\r\n // Only check for adal token if no SSO params are being used\r\n const adalIdTokenString = this.browserStorage.getTemporaryCache(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n if (adalIdTokenString) {\r\n const adalIdToken = new IdToken(adalIdTokenString, this.browserCrypto);\r\n this.browserStorage.removeItem(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n if (adalIdToken.claims && adalIdToken.claims.upn) {\r\n this.logger.verbose(\"No SSO params used and ADAL token retrieved, setting ADAL upn as loginHint\");\r\n validatedRequest.loginHint = adalIdToken.claims.upn;\r\n }\r\n }\r\n }\r\n\r\n this.browserStorage.updateCacheEntries(validatedRequest.state, validatedRequest.nonce, validatedRequest.authority);\r\n\r\n return validatedRequest;\r\n }\r\n\r\n /**\r\n * Generates an auth code request tied to the url request.\r\n * @param request\r\n */\r\n protected async initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise {\r\n const generatedPkceParams = await this.browserCrypto.generatePkceCodes();\r\n\r\n const authCodeRequest: CommonAuthorizationCodeRequest = {\r\n ...request,\r\n redirectUri: request.redirectUri,\r\n code: \"\",\r\n codeVerifier: generatedPkceParams.verifier\r\n };\r\n\r\n request.codeChallenge = generatedPkceParams.challenge;\r\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\r\n\r\n return authCodeRequest;\r\n }\r\n\r\n /**\r\n * Initializer for the logout request.\r\n * @param logoutRequest\r\n */\r\n protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest {\r\n this.logger.verbose(\"initializeLogoutRequest called\");\r\n\r\n // Check if interaction is in progress. Throw error if true.\r\n if (this.interactionInProgress()) {\r\n throw BrowserAuthError.createInteractionInProgressError();\r\n }\r\n\r\n const validLogoutRequest: CommonEndSessionRequest = {\r\n correlationId: this.browserCrypto.createNewGuid(),\r\n ...logoutRequest\r\n };\r\n\r\n /*\r\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\r\n * Otherwise, use passed uri, config, or current page.\r\n */\r\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\r\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\");\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n } else if (this.config.auth.postLogoutRedirectUri === null) {\r\n this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\");\r\n } else if (this.config.auth.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\");\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n } else {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to current page\");\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\r\n }\r\n } else {\r\n this.logger.verbose(\"postLogoutRedirectUri passed as null, not settibng post logout redirect uri\");\r\n }\r\n\r\n return validLogoutRequest;\r\n }\r\n\r\n /**\r\n * Emits events by calling callback with event message\r\n * @param eventType\r\n * @param interactionType\r\n * @param payload\r\n * @param error\r\n */\r\n protected emitEvent(eventType: EventType, interactionType?: InteractionType, payload?: EventPayload, error?: EventError): void {\r\n if (this.isBrowserEnvironment) {\r\n const message: EventMessage = {\r\n eventType: eventType,\r\n interactionType: interactionType || null,\r\n payload: payload || null,\r\n error: error || null,\r\n timestamp: Date.now()\r\n };\r\n\r\n this.logger.info(`Emitting event: ${eventType}`);\r\n\r\n this.eventCallbacks.forEach((callback: EventCallbackFunction, callbackId: string) => {\r\n this.logger.verbose(`Emitting event to callback ${callbackId}: ${eventType}`);\r\n callback.apply(null, [message]);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n addEventCallback(callback: EventCallbackFunction): string | null {\r\n if (this.isBrowserEnvironment) {\r\n const callbackId = this.browserCrypto.createNewGuid();\r\n this.eventCallbacks.set(callbackId, callback);\r\n this.logger.verbose(`Event callback registered with id: ${callbackId}`);\r\n\r\n return callbackId;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n removeEventCallback(callbackId: string): void {\r\n this.eventCallbacks.delete(callbackId);\r\n this.logger.verbose(`Event callback ${callbackId} removed.`);\r\n }\r\n\r\n /**\r\n * Returns the logger instance\r\n */\r\n getLogger(): Logger {\r\n return this.logger;\r\n }\r\n\r\n /**\r\n * Replaces the default logger set in configurations with new Logger with new configurations\r\n * @param logger Logger instance\r\n */\r\n setLogger(logger: Logger): void {\r\n this.logger = logger;\r\n }\r\n\r\n /**\r\n * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc.\r\n * @param sku\r\n * @param version\r\n */\r\n initializeWrapperLibrary(sku: WrapperSKU, version: string): void {\r\n // Validate the SKU passed in is one we expect\r\n this.wrapperSKU = sku;\r\n this.wrapperVer = version;\r\n }\r\n\r\n /**\r\n * Sets navigation client\r\n * @param navigationClient\r\n */\r\n setNavigationClient(navigationClient: INavigationClient): void {\r\n this.navigationClient = navigationClient;\r\n }\r\n // #endregion\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, CommonSilentFlowRequest } from \"@azure/msal-common\";\r\nimport { Configuration } from \"../config/Configuration\";\r\nimport { DEFAULT_REQUEST, ApiId, InteractionType } from \"../utils/BrowserConstants\";\r\nimport { IPublicClientApplication } from \"./IPublicClientApplication\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { ClientApplication } from \"./ClientApplication\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { EventType } from \"../event/EventType\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\n\r\n/**\r\n * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications\r\n * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification.\r\n */\r\nexport class PublicClientApplication extends ClientApplication implements IPublicClientApplication {\r\n\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration object for the MSAL PublicClientApplication instance\r\n */\r\n constructor(configuration: Configuration) {\r\n super(configuration);\r\n }\r\n\r\n /**\r\n * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so\r\n * any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n async loginRedirect(request?: RedirectRequest): Promise {\r\n this.logger.verbose(\"loginRedirect called\");\r\n return this.acquireTokenRedirect(request || DEFAULT_REQUEST);\r\n }\r\n\r\n /**\r\n * Use when initiating the login process via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n loginPopup(request?: PopupRequest): Promise {\r\n this.logger.verbose(\"loginPopup called\");\r\n return this.acquireTokenPopup(request || DEFAULT_REQUEST);\r\n }\r\n\r\n /**\r\n * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token.\r\n *\r\n * @param {@link (SilentRequest:type)}\r\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object\r\n */\r\n async acquireTokenSilent(request: SilentRequest): Promise {\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.verbose(\"acquireTokenSilent called\");\r\n const account = request.account || this.getActiveAccount();\r\n if (!account) {\r\n throw BrowserAuthError.createNoAccountError();\r\n }\r\n const silentRequest: CommonSilentFlowRequest = {\r\n ...request,\r\n ...this.initializeBaseRequest(request),\r\n account: account,\r\n forceRefresh: request.forceRefresh || false\r\n };\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);\r\n try {\r\n // Telemetry manager only used to increment cacheHits here\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow, silentRequest.correlationId);\r\n const silentAuthClient = await this.createSilentFlowClient(serverTelemetryManager, silentRequest.authority);\r\n const cachedToken = await silentAuthClient.acquireCachedToken(silentRequest);\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, cachedToken);\r\n return cachedToken;\r\n } catch (e) {\r\n try {\r\n const tokenRenewalResult = await this.acquireTokenByRefreshToken(silentRequest);\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, tokenRenewalResult);\r\n return tokenRenewalResult;\r\n } catch (tokenRenewalError) {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, tokenRenewalError);\r\n throw tokenRenewalError;\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, AccountInfo, Logger } from \"@azure/msal-common\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\r\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\r\nimport { WrapperSKU } from \"../utils/BrowserConstants\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\n\r\nexport interface IPublicClientApplication {\r\n acquireTokenPopup(request: PopupRequest): Promise;\r\n acquireTokenRedirect(request: RedirectRequest): Promise;\r\n acquireTokenSilent(silentRequest: SilentRequest): Promise;\r\n addEventCallback(callback: Function): string | null;\r\n removeEventCallback(callbackId: string): void;\r\n getAccountByHomeId(homeAccountId: string): AccountInfo | null;\r\n getAccountByLocalId(localId: string): AccountInfo | null;\r\n getAccountByUsername(userName: string): AccountInfo | null;\r\n getAllAccounts(): AccountInfo[];\r\n handleRedirectPromise(hash?: string): Promise;\r\n loginPopup(request?: PopupRequest): Promise;\r\n loginRedirect(request?: RedirectRequest): Promise;\r\n logout(logoutRequest?: EndSessionRequest): Promise;\r\n logoutRedirect(logoutRequest?: EndSessionRequest): Promise;\r\n logoutPopup(logoutRequest?: EndSessionRequest): Promise;\r\n ssoSilent(request: SsoSilentRequest): Promise;\r\n getLogger(): Logger;\r\n setLogger(logger: Logger): void;\r\n setActiveAccount(account: AccountInfo | null): void;\r\n getActiveAccount(): AccountInfo | null;\r\n initializeWrapperLibrary(sku: WrapperSKU, version: string): void;\r\n setNavigationClient(navigationClient: INavigationClient): void;\r\n}\r\n\r\nexport const stubbedPublicClientApplication: IPublicClientApplication = {\r\n acquireTokenPopup: () => {\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\r\n },\r\n acquireTokenRedirect: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n acquireTokenSilent: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n getAllAccounts: () => {\r\n return [];\t\r\n },\t\r\n getAccountByHomeId: () => {\r\n return null;\r\n },\r\n getAccountByUsername: () => {\t\r\n return null;\t\r\n },\t\r\n getAccountByLocalId: () => {\r\n return null;\r\n },\r\n handleRedirectPromise: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n loginPopup: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n loginRedirect: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n logout: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n logoutRedirect: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\r\n logoutPopup: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\r\n ssoSilent: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\r\n addEventCallback: () => {\r\n return null;\r\n },\r\n removeEventCallback: () => {\r\n return;\r\n },\r\n getLogger: () => {\r\n throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\r\n },\r\n setLogger: () => {\r\n return;\r\n },\r\n setActiveAccount: () => {\r\n return;\r\n },\r\n getActiveAccount: () => {\r\n return null;\r\n },\r\n initializeWrapperLibrary: () => {\r\n return;\r\n },\r\n setNavigationClient: () => {\r\n return;\r\n }\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, AuthError } from \"@azure/msal-common\";\r\nimport { EventType } from \"./EventType\";\r\nimport { InteractionStatus, InteractionType } from \"../utils/BrowserConstants\";\r\nimport { PopupRequest, RedirectRequest, SilentRequest, SsoSilentRequest, EndSessionRequest } from \"..\";\r\n\r\nexport type EventMessage = {\r\n eventType: EventType;\r\n interactionType: InteractionType | null;\r\n payload: EventPayload;\r\n error: EventError;\r\n timestamp: number;\r\n};\r\n\r\nexport type PopupEvent = {\r\n popupWindow: Window;\r\n};\r\n\r\nexport type EventPayload = PopupRequest | RedirectRequest | SilentRequest | SsoSilentRequest | EndSessionRequest | AuthenticationResult | PopupEvent | null;\r\n\r\nexport type EventError = AuthError | Error | null;\r\n\r\nexport type EventCallbackFunction = (message: EventMessage) => void;\r\n\r\nexport class EventMessageUtils {\r\n\r\n /**\r\n * Gets interaction status from event message\r\n * @param message\r\n */\r\n static getInteractionStatusFromEvent(message: EventMessage): InteractionStatus|null {\r\n switch (message.eventType) {\r\n case EventType.LOGIN_START:\r\n return InteractionStatus.Login;\r\n case EventType.SSO_SILENT_START:\r\n return InteractionStatus.SsoSilent;\r\n case EventType.ACQUIRE_TOKEN_START:\r\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\r\n return InteractionStatus.AcquireToken;\r\n }\r\n break;\r\n case EventType.HANDLE_REDIRECT_START:\r\n return InteractionStatus.HandleRedirect;\r\n case EventType.LOGOUT_START:\r\n return InteractionStatus.Logout;\r\n case EventType.LOGIN_SUCCESS:\r\n case EventType.SSO_SILENT_SUCCESS:\r\n case EventType.HANDLE_REDIRECT_END:\r\n case EventType.LOGIN_FAILURE:\r\n case EventType.SSO_SILENT_FAILURE:\r\n case EventType.LOGOUT_END:\r\n return InteractionStatus.None;\r\n case EventType.ACQUIRE_TOKEN_SUCCESS:\r\n case EventType.ACQUIRE_TOKEN_FAILURE:\r\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\r\n return InteractionStatus.None;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Configuration } from \"@azure/msal-browser\";\r\n\r\nexport const msalConfig: Configuration = {\r\n auth: {\r\n clientId: process.env.REACT_APP_ENV_B2C_CLIENT_ID!,\r\n authority: process.env.REACT_APP_ENV_B2C_AUTHORITY,\r\n knownAuthorities: [process.env.REACT_APP_ENV_B2C_KNOWN_AUTHORITY!],\r\n redirectUri: process.env.REACT_APP_ENV_B2C_REDIRECT_URI,\r\n postLogoutRedirectUri: process.env.REACT_APP_ENV_B2C_REDIRECT_URI\r\n },\r\n cache: {\r\n cacheLocation: \"localStorage\", // Configures cache location. \"sessionStorage\" is more secure, but \"localStorage\" gives you SSO.\r\n storeAuthStateInCookie: false,\r\n },\r\n};\r\n\r\nexport const apiRequest = {\r\n scopes: [process.env.REACT_APP_ENV_B2C_SCOPE_API!]\r\n};\r\n","import { PublicClientApplication, EventType, InteractionType } from '@azure/msal-browser'\r\nimport { msalConfig } from './authConfig'\r\n\r\nconst authInstance = new PublicClientApplication(msalConfig)\r\n\r\nconst setActiveAccount = () => {\r\n const accounts = authInstance.getAllAccounts()\r\n if (accounts.length > 0) {\r\n authInstance.setActiveAccount(accounts[0])\r\n }\r\n}\r\n\r\nsetActiveAccount();\r\n\r\nauthInstance.addEventCallback(message => {\r\n switch (message.eventType) {\r\n case EventType.LOGIN_SUCCESS:\r\n case EventType.ACQUIRE_TOKEN_SUCCESS:\r\n if (message.interactionType === InteractionType.Redirect) {\r\n setActiveAccount()\r\n }\r\n }\r\n})\r\n\r\nexport default authInstance\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nexport const Constants = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // Prefix for all library cache entries\r\n CACHE_PREFIX: \"msal\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n // Default response type for authorization code flow\r\n CODE_RESPONSE_TYPE: \"code\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n FRAGMENT_RESPONSE_MODE: \"fragment\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n FORWARD_SLASH: \"/\"\r\n};\r\n\r\nexport const OIDC_DEFAULT_SCOPES = [\r\n Constants.OPENID_SCOPE,\r\n Constants.PROFILE_SCOPE,\r\n Constants.OFFLINE_ACCESS_SCOPE\r\n];\r\n\r\nexport const OIDC_SCOPES = [\r\n ...OIDC_DEFAULT_SCOPES,\r\n Constants.EMAIL_SCOPE\r\n];\r\n\r\n/**\r\n * Request header names\r\n */\r\nexport enum HeaderNames {\r\n CONTENT_TYPE = \"Content-Type\",\r\n X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\",\r\n X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\",\r\n RETRY_AFTER = \"Retry-After\",\r\n X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\",\r\n X_MS_LIB_CAPABILITY_VALUE = \"retry-after, h429\"\r\n}\r\n\r\n/**\r\n * Persistent cache keys MSAL which stay while user is logged in.\r\n */\r\nexport enum PersistentCacheKeys {\r\n ID_TOKEN = \"idtoken\",\r\n CLIENT_INFO = \"client.info\",\r\n ADAL_ID_TOKEN = \"adal.idtoken\",\r\n ERROR = \"error\",\r\n ERROR_DESC = \"error.description\"\r\n}\r\n\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nexport enum AADAuthorityConstants {\r\n COMMON = \"common\",\r\n ORGANIZATIONS = \"organizations\",\r\n CONSUMERS = \"consumers\"\r\n}\r\n\r\n/**\r\n * Keys in the hashParams sent by AAD Server\r\n */\r\nexport enum AADServerParamKeys {\r\n CLIENT_ID = \"client_id\",\r\n REDIRECT_URI = \"redirect_uri\",\r\n RESPONSE_TYPE = \"response_type\",\r\n RESPONSE_MODE = \"response_mode\",\r\n GRANT_TYPE = \"grant_type\",\r\n CLAIMS = \"claims\",\r\n SCOPE = \"scope\",\r\n ERROR = \"error\",\r\n ERROR_DESCRIPTION = \"error_description\",\r\n ACCESS_TOKEN = \"access_token\",\r\n ID_TOKEN = \"id_token\",\r\n REFRESH_TOKEN = \"refresh_token\",\r\n EXPIRES_IN = \"expires_in\",\r\n STATE = \"state\",\r\n NONCE = \"nonce\",\r\n PROMPT = \"prompt\",\r\n SESSION_STATE = \"session_state\",\r\n CLIENT_INFO = \"client_info\",\r\n CODE = \"code\",\r\n CODE_CHALLENGE = \"code_challenge\",\r\n CODE_CHALLENGE_METHOD = \"code_challenge_method\",\r\n CODE_VERIFIER = \"code_verifier\",\r\n CLIENT_REQUEST_ID = \"client-request-id\",\r\n X_CLIENT_SKU = \"x-client-SKU\",\r\n X_CLIENT_VER = \"x-client-VER\",\r\n X_CLIENT_OS = \"x-client-OS\",\r\n X_CLIENT_CPU = \"x-client-CPU\",\r\n POST_LOGOUT_URI = \"post_logout_redirect_uri\",\r\n ID_TOKEN_HINT= \"id_token_hint\",\r\n DEVICE_CODE = \"device_code\",\r\n CLIENT_SECRET = \"client_secret\",\r\n CLIENT_ASSERTION = \"client_assertion\",\r\n CLIENT_ASSERTION_TYPE = \"client_assertion_type\",\r\n TOKEN_TYPE = \"token_type\",\r\n REQ_CNF = \"req_cnf\",\r\n OBO_ASSERTION = \"assertion\",\r\n REQUESTED_TOKEN_USE = \"requested_token_use\",\r\n ON_BEHALF_OF = \"on_behalf_of\",\r\n FOCI = \"foci\"\r\n}\r\n\r\n/**\r\n * Claims request keys\r\n */\r\nexport enum ClaimsRequestKeys {\r\n ACCESS_TOKEN = \"access_token\",\r\n XMS_CC = \"xms_cc\"\r\n}\r\n\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nexport const PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n};\r\n\r\n/**\r\n * SSO Types - generated to populate hints\r\n */\r\nexport enum SSOTypes {\r\n ACCOUNT = \"account\",\r\n SID = \"sid\",\r\n LOGIN_HINT = \"login_hint\",\r\n ID_TOKEN = \"id_token\",\r\n DOMAIN_HINT = \"domain_hint\",\r\n ORGANIZATIONS = \"organizations\",\r\n CONSUMERS = \"consumers\",\r\n ACCOUNT_ID = \"accountIdentifier\",\r\n HOMEACCOUNT_ID = \"homeAccountIdentifier\"\r\n}\r\n\r\n/**\r\n * Disallowed extra query parameters.\r\n */\r\nexport const BlacklistedEQParams = [\r\n SSOTypes.SID,\r\n SSOTypes.LOGIN_HINT\r\n];\r\n\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nexport const CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\"\r\n};\r\n\r\n/**\r\n * The method used to encode the code verifier for the code challenge parameter. can be one\r\n * of plain or s256. if excluded, code challenge is assumed to be plaintext. for more\r\n * information, see the pkce rcf: https://tools.ietf.org/html/rfc7636\r\n */\r\nexport const CodeChallengeMethodValuesArray: string[] = [\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256\r\n];\r\n\r\n/**\r\n * allowed values for response_mode\r\n */\r\nexport enum ResponseMode {\r\n QUERY = \"query\",\r\n FRAGMENT = \"fragment\",\r\n FORM_POST = \"form_post\"\r\n}\r\n\r\n/**\r\n * allowed grant_type\r\n */\r\nexport enum GrantType {\r\n IMPLICIT_GRANT = \"implicit\",\r\n AUTHORIZATION_CODE_GRANT = \"authorization_code\",\r\n CLIENT_CREDENTIALS_GRANT = \"client_credentials\",\r\n RESOURCE_OWNER_PASSWORD_GRANT = \"password\",\r\n REFRESH_TOKEN_GRANT = \"refresh_token\",\r\n DEVICE_CODE_GRANT = \"device_code\",\r\n JWT_BEARER = \"urn:ietf:params:oauth:grant-type:jwt-bearer\"\r\n}\r\n\r\n/**\r\n * Account types in Cache\r\n */\r\nexport enum CacheAccountType {\r\n MSSTS_ACCOUNT_TYPE = \"MSSTS\",\r\n ADFS_ACCOUNT_TYPE = \"ADFS\",\r\n MSAV1_ACCOUNT_TYPE = \"MSA\",\r\n GENERIC_ACCOUNT_TYPE = \"Generic\" // NTLM, Kerberos, FBA, Basic etc\r\n}\r\n\r\n/**\r\n * Separators used in cache\r\n */\r\nexport enum Separators {\r\n CACHE_KEY_SEPARATOR = \"-\",\r\n CLIENT_INFO_SEPARATOR = \".\"\r\n}\r\n\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nexport enum CredentialType {\r\n ID_TOKEN = \"IdToken\",\r\n ACCESS_TOKEN = \"AccessToken\",\r\n REFRESH_TOKEN = \"RefreshToken\",\r\n}\r\n\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nexport enum CacheSchemaType {\r\n ACCOUNT = \"Account\",\r\n CREDENTIAL = \"Credential\",\r\n ID_TOKEN = \"IdToken\",\r\n ACCESS_TOKEN = \"AccessToken\",\r\n REFRESH_TOKEN = \"RefreshToken\",\r\n APP_METADATA = \"AppMetadata\",\r\n TEMPORARY = \"TempCache\",\r\n TELEMETRY = \"Telemetry\",\r\n UNDEFINED = \"Undefined\",\r\n THROTTLING = \"Throttling\"\r\n}\r\n\r\n/**\r\n * Combine all cache types\r\n */\r\nexport enum CacheType {\r\n ADFS = 1001,\r\n MSA = 1002,\r\n MSSTS = 1003,\r\n GENERIC = 1004,\r\n ACCESS_TOKEN = 2001,\r\n REFRESH_TOKEN = 2002,\r\n ID_TOKEN = 2003,\r\n APP_METADATA = 3001,\r\n UNDEFINED = 9999\r\n}\r\n\r\n/**\r\n * More Cache related constants\r\n */\r\nexport const APP_METADATA = \"appmetadata\";\r\nexport const ClientInfo = \"client_info\";\r\nexport const THE_FAMILY_ID = \"1\";\r\n\r\nexport const AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24 // 24 Hours\r\n};\r\n\r\nexport enum AuthorityMetadataSource {\r\n CONFIG = \"config\",\r\n CACHE = \"cache\",\r\n NETWORK = \"network\"\r\n}\r\n\r\nexport const SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 2,\r\n MAX_HEADER_BYTES: 4000, // Max is 4KB, 4000 Bytes provides 96 Byte buffer for separators, schema version, etc. \r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\"\r\n};\r\n\r\n/**\r\n * Type of the authentication request\r\n */\r\nexport enum AuthenticationScheme {\r\n POP = \"pop\",\r\n BEARER = \"Bearer\"\r\n}\r\n\r\n/**\r\n * Constants related to throttling\r\n */\r\nexport const ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\"\r\n};\r\n\r\nexport const Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n\r\n/**\r\n * Password grant parameters\r\n */\r\nexport enum PasswordGrantConstants {\r\n username = \"username\",\r\n password = \"password\"\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants } from \"../utils/Constants\";\r\n\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const AuthErrorMessage = {\r\n unexpectedError: {\r\n code: \"unexpected_error\",\r\n desc: \"Unexpected error in authentication.\"\r\n }\r\n};\r\n\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nexport class AuthError extends Error {\r\n\r\n /**\r\n * Short string denoting error\r\n */\r\n errorCode: string;\r\n\r\n /**\r\n * Detailed description of error\r\n */\r\n errorMessage: string;\r\n\r\n /**\r\n * Describes the subclass of an error\r\n */\r\n subError: string;\r\n\r\n constructor(errorCode?: string, errorMessage?: string, suberror?: string) {\r\n const errorString = errorMessage ? `${errorCode}: ${errorMessage}` : errorCode;\r\n super(errorString);\r\n Object.setPrototypeOf(this, AuthError.prototype);\r\n\r\n this.errorCode = errorCode || Constants.EMPTY_STRING;\r\n this.errorMessage = errorMessage || \"\";\r\n this.subError = suberror || \"\";\r\n this.name = \"AuthError\";\r\n }\r\n\r\n /**\r\n * Creates an error that is thrown when something unexpected happens in the library.\r\n * @param errDesc\r\n */\r\n static createUnexpectedError(errDesc: string): AuthError {\r\n return new AuthError(AuthErrorMessage.unexpectedError.code, `${AuthErrorMessage.unexpectedError.desc}: ${errDesc}`);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { LoggerOptions } from \"../config/ClientConfiguration\";\r\nimport { Constants } from \"../utils/Constants\";\r\n\r\n/**\r\n * Options for logger messages.\r\n */\r\nexport type LoggerMessageOptions = {\r\n logLevel: LogLevel,\r\n correlationId?: string,\r\n containsPii?: boolean,\r\n context?: string\r\n};\r\n\r\n/**\r\n * Log message level.\r\n */\r\nexport enum LogLevel {\r\n Error,\r\n Warning,\r\n Info,\r\n Verbose\r\n}\r\n\r\n/**\r\n * Callback to send the messages to.\r\n */\r\nexport interface ILoggerCallback {\r\n (level: LogLevel, message: string, containsPii: boolean): void;\r\n}\r\n\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nexport class Logger {\r\n\r\n // Correlation ID for request, usually set by user.\r\n private correlationId: string;\r\n\r\n // Current log level, defaults to info.\r\n private level: LogLevel = LogLevel.Info;\r\n\r\n // Boolean describing whether PII logging is allowed.\r\n private piiLoggingEnabled: boolean;\r\n\r\n // Callback to send messages to.\r\n private localCallback: ILoggerCallback;\r\n\r\n // Package name implementing this logger\r\n private packageName: string;\r\n\r\n // Package version implementing this logger\r\n private packageVersion: string;\r\n\r\n constructor(loggerOptions: LoggerOptions, packageName?: string, packageVersion?: string) {\r\n const defaultLoggerCallback = () => {};\r\n this.localCallback = loggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = loggerOptions.piiLoggingEnabled || false;\r\n this.level = loggerOptions.logLevel || LogLevel.Info;\r\n\r\n this.packageName = packageName || Constants.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\r\n }\r\n\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n public clone(packageName: string, packageVersion: string): Logger {\r\n return new Logger({loggerCallback: this.localCallback, piiLoggingEnabled: this.piiLoggingEnabled, logLevel: this.level}, packageName, packageVersion);\r\n }\r\n\r\n /**\r\n * Log message with required options.\r\n */\r\n private logMessage(logMessage: string, options: LoggerMessageOptions): void {\r\n if ((options.logLevel > this.level) || (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n const timestamp = new Date().toUTCString();\r\n const logHeader: string = StringUtils.isEmpty(this.correlationId) ? `[${timestamp}] : ` : `[${timestamp}] : [${this.correlationId}]`;\r\n const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel[options.logLevel]} - ${logMessage}`;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": \"\"}${options.context ? `:${options.context}` : \"\"}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n }\r\n\r\n /**\r\n * Execute callback with message.\r\n */\r\n executeCallback(level: LogLevel, message: string, containsPii: boolean): void {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n }\r\n\r\n /**\r\n * Logs error messages.\r\n */\r\n error(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n errorPii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs warning messages.\r\n */\r\n warning(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n warningPii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs info messages.\r\n */\r\n info(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n infoPii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs verbose messages.\r\n */\r\n verbose(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n verbosePii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n isPiiLoggingEnabled(): boolean {\r\n return this.piiLoggingEnabled || false;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { SignedHttpRequest } from \"./SignedHttpRequest\";\r\n\r\n/**\r\n * The PkceCodes type describes the structure\r\n * of objects that contain PKCE code\r\n * challenge and verifier pairs\r\n */\r\nexport type PkceCodes = {\r\n verifier: string,\r\n challenge: string\r\n};\r\n\r\n/**\r\n * Interface for crypto functions used by library\r\n */\r\nexport interface ICrypto {\r\n /**\r\n * Creates a guid randomly.\r\n */\r\n createNewGuid(): string;\r\n /**\r\n * base64 Encode string\r\n * @param input \r\n */\r\n base64Encode(input: string): string;\r\n /**\r\n * base64 decode string\r\n * @param input \r\n */\r\n base64Decode(input: string): string;\r\n /**\r\n * Generate PKCE codes for OAuth. See RFC here: https://tools.ietf.org/html/rfc7636\r\n */\r\n generatePkceCodes(): Promise;\r\n /**\r\n * Generates an JWK RSA S256 Thumbprint\r\n * @param resourceRequestMethod \r\n * @param resourceRequestUri \r\n */\r\n getPublicKeyThumbprint(resourceRequestMethod: string, resourceRequestUri: string): Promise;\r\n /** \r\n * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid.\r\n * @param accessToken \r\n */\r\n signJwt(payload: SignedHttpRequest, kid: string): Promise;\r\n}\r\n\r\nexport const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto = {\r\n createNewGuid: (): string => {\r\n const notImplErr = \"Crypto interface - createNewGuid() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Decode: (): string => {\r\n const notImplErr = \"Crypto interface - base64Decode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Encode: (): string => {\r\n const notImplErr = \"Crypto interface - base64Encode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async generatePkceCodes(): Promise {\r\n const notImplErr = \"Crypto interface - generatePkceCodes() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async getPublicKeyThumbprint(): Promise {\r\n const notImplErr = \"Crypto interface - getPublicKeyThumbprint() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async signJwt(): Promise {\r\n const notImplErr = \"Crypto interface - signJwt() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"./AuthError\";\r\nimport { ScopeSet } from \"../request/ScopeSet\";\r\n\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: \"client_info_decoding_error\",\r\n desc: \"The client info could not be parsed/decoded correctly. Please review the trace to determine the root cause.\"\r\n },\r\n clientInfoEmptyError: {\r\n code: \"client_info_empty_error\",\r\n desc: \"The client info was empty. Please review the trace to determine the root cause.\"\r\n },\r\n tokenParsingError: {\r\n code: \"token_parsing_error\",\r\n desc: \"Token cannot be parsed. Please review stack trace to determine root cause.\"\r\n },\r\n nullOrEmptyToken: {\r\n code: \"null_or_empty_token\",\r\n desc: \"The token is null or empty. Please review the trace to determine the root cause.\"\r\n },\r\n endpointResolutionError: {\r\n code: \"endpoints_resolution_error\",\r\n desc: \"Error: could not resolve endpoints. Please check network and try again.\"\r\n },\r\n networkError: {\r\n code: \"network_error\",\r\n desc: \"Network request failed. Please check network trace to determine root cause.\"\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: \"openid_config_error\",\r\n desc: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\"\r\n },\r\n hashNotDeserialized: {\r\n code: \"hash_not_deserialized\",\r\n desc: \"The hash parameters could not be deserialized. Please review the trace to determine the root cause.\"\r\n },\r\n blankGuidGenerated: {\r\n code: \"blank_guid_generated\",\r\n desc: \"The guid generated was blank. Please review the trace to determine the root cause.\"\r\n },\r\n invalidStateError: {\r\n code: \"invalid_state\",\r\n desc: \"State was not the expected format. Please check the logs to determine whether the request was sent using ProtocolUtils.setRequestState().\"\r\n },\r\n stateMismatchError: {\r\n code: \"state_mismatch\",\r\n desc: \"State mismatch error. Please check your network. Continued requests may cause cache overflow.\"\r\n },\r\n stateNotFoundError: {\r\n code: \"state_not_found\",\r\n desc: \"State not found\"\r\n },\r\n nonceMismatchError: {\r\n code: \"nonce_mismatch\",\r\n desc: \"Nonce mismatch error. This may be caused by a race condition in concurrent requests.\"\r\n },\r\n nonceNotFoundError: {\r\n code: \"nonce_not_found\",\r\n desc: \"nonce not found\"\r\n },\r\n noTokensFoundError: {\r\n code: \"no_tokens_found\",\r\n desc: \"No tokens were found for the given scopes, and no authorization code was passed to acquireToken. You must retrieve an authorization code before making a call to acquireToken().\"\r\n },\r\n multipleMatchingTokens: {\r\n code: \"multiple_matching_tokens\",\r\n desc: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\"\r\n },\r\n multipleMatchingAccounts: {\r\n code: \"multiple_matching_accounts\",\r\n desc: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\"\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: \"multiple_matching_appMetadata\",\r\n desc: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\"\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: \"request_cannot_be_made\",\r\n desc: \"Token request cannot be made without authorization code or refresh token.\"\r\n },\r\n appendEmptyScopeError: {\r\n code: \"cannot_append_empty_scope\",\r\n desc: \"Cannot append null or empty scope to ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n removeEmptyScopeError: {\r\n code: \"cannot_remove_empty_scope\",\r\n desc: \"Cannot remove null or empty scope from ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n appendScopeSetError: {\r\n code: \"cannot_append_scopeset\",\r\n desc: \"Cannot append ScopeSet due to error.\"\r\n },\r\n emptyInputScopeSetError: {\r\n code: \"empty_input_scopeset\",\r\n desc: \"Empty input ScopeSet cannot be processed.\"\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: \"device_code_polling_cancelled\",\r\n desc: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\"\r\n },\r\n DeviceCodeExpired: {\r\n code: \"device_code_expired\",\r\n desc: \"Device code is expired.\"\r\n },\r\n NoAccountInSilentRequest: {\r\n code: \"no_account_in_silent_request\",\r\n desc: \"Please pass an account object, silent flow is not supported without account information\"\r\n },\r\n invalidCacheRecord: {\r\n code: \"invalid_cache_record\",\r\n desc: \"Cache record object was null or undefined.\"\r\n },\r\n invalidCacheEnvironment: {\r\n code: \"invalid_cache_environment\",\r\n desc: \"Invalid environment when attempting to create cache entry\"\r\n },\r\n noAccountFound: {\r\n code: \"no_account_found\",\r\n desc: \"No account found in cache for given key.\"\r\n },\r\n CachePluginError: {\r\n code: \"no cache plugin set on CacheManager\",\r\n desc: \"ICachePlugin needs to be set before using readFromStorage or writeFromStorage\"\r\n },\r\n noCryptoObj: {\r\n code: \"no_crypto_object\",\r\n desc: \"No crypto object detected. This is required for the following operation: \"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n unexpectedAccountType: {\r\n code: \"unexpected_account_type\",\r\n desc: \"Unexpected account type.\"\r\n },\r\n unexpectedCredentialType: {\r\n code: \"unexpected_credential_type\",\r\n desc: \"Unexpected credential type.\"\r\n },\r\n invalidAssertion: {\r\n code: \"invalid_assertion\",\r\n desc: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\"\r\n },\r\n invalidClientCredential: {\r\n code: \"invalid_client_credential\",\r\n desc: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\"\r\n },\r\n tokenRefreshRequired: {\r\n code: \"token_refresh_required\",\r\n desc: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\"\r\n },\r\n userTimeoutReached: {\r\n code: \"user_timeout_reached\",\r\n desc: \"User defined timeout for device code polling reached\",\r\n },\r\n tokenClaimsRequired: {\r\n code: \"token_claims_cnf_required_for_signedjwt\",\r\n desc: \"Cannot generate a POP jwt if the token_claims are not populated\"\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: \"authorization_code_missing_from_server_response\",\r\n desc: \"Srver response does not contain an authorization code to proceed\"\r\n }\r\n};\r\n\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nexport class ClientAuthError extends AuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n this.name = \"ClientAuthError\";\r\n\r\n Object.setPrototypeOf(this, ClientAuthError.prototype);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when client info object doesn't decode correctly.\r\n * @param caughtError\r\n */\r\n static createClientInfoDecodingError(caughtError: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoDecodingError.code,\r\n `${ClientAuthErrorMessage.clientInfoDecodingError.desc} Failed with error: ${caughtError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if the client info is empty.\r\n * @param rawClientInfo\r\n */\r\n static createClientInfoEmptyError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoEmptyError.code,\r\n `${ClientAuthErrorMessage.clientInfoEmptyError.desc}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the id token extraction errors out.\r\n * @param err\r\n */\r\n static createTokenParsingError(caughtExtractionError: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenParsingError.code,\r\n `${ClientAuthErrorMessage.tokenParsingError.desc} Failed with error: ${caughtExtractionError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the id token string is null or empty.\r\n * @param invalidRawTokenString\r\n */\r\n static createTokenNullOrEmptyError(invalidRawTokenString: string) : ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.nullOrEmptyToken.code,\r\n `${ClientAuthErrorMessage.nullOrEmptyToken.desc} Raw Token Value: ${invalidRawTokenString}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the endpoint discovery doesn't complete correctly.\r\n */\r\n static createEndpointDiscoveryIncompleteError(errDetail: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.endpointResolutionError.code,\r\n `${ClientAuthErrorMessage.endpointResolutionError.desc} Detail: ${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the fetch client throws\r\n */\r\n static createNetworkError(endpoint: string, errDetail: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.networkError.code,\r\n `${ClientAuthErrorMessage.networkError.desc} | Fetch client threw: ${errDetail} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the openid-configuration endpoint cannot be reached or does not contain the required data\r\n */\r\n static createUnableToGetOpenidConfigError(errDetail: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.unableToGetOpenidConfigError.code,\r\n `${ClientAuthErrorMessage.unableToGetOpenidConfigError.desc} Attempted to retrieve endpoints from: ${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash cannot be deserialized.\r\n * @param hashParamObj\r\n */\r\n static createHashNotDeserializedError(hashParamObj: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.hashNotDeserialized.code,\r\n `${ClientAuthErrorMessage.hashNotDeserialized.desc} Given Object: ${hashParamObj}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the state cannot be parsed.\r\n * @param invalidState\r\n */\r\n static createInvalidStateError(invalidState: string, errorString?: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidStateError.code,\r\n `${ClientAuthErrorMessage.invalidStateError.desc} Invalid State: ${invalidState}, Root Err: ${errorString}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when two states do not match.\r\n */\r\n static createStateMismatchError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateMismatchError.code,\r\n ClientAuthErrorMessage.stateMismatchError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the state is not present\r\n * @param missingState\r\n */\r\n static createStateNotFoundError(missingState: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateNotFoundError.code,\r\n `${ClientAuthErrorMessage.stateNotFoundError.desc}: ${missingState}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the nonce does not match.\r\n */\r\n static createNonceMismatchError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceMismatchError.code,\r\n ClientAuthErrorMessage.nonceMismatchError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the mnonce is not present\r\n * @param missingNonce\r\n */\r\n static createNonceNotFoundError(missingNonce: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceNotFoundError.code,\r\n `${ClientAuthErrorMessage.nonceNotFoundError.desc}: ${missingNonce}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the authorization code required for a token request is null or empty.\r\n */\r\n static createNoTokensFoundError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noTokensFoundError.code, ClientAuthErrorMessage.noTokensFoundError.desc);\r\n }\r\n\r\n /**\r\n * Throws error when multiple tokens are in cache.\r\n */\r\n static createMultipleMatchingTokensInCacheError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingTokens.code,\r\n `${ClientAuthErrorMessage.multipleMatchingTokens.desc}.`);\r\n }\r\n\r\n /**\r\n * Throws error when multiple accounts are in cache for the given params\r\n */\r\n static createMultipleMatchingAccountsInCacheError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAccounts.code,\r\n ClientAuthErrorMessage.multipleMatchingAccounts.desc);\r\n }\r\n\r\n /**\r\n * Throws error when multiple appMetada are in cache for the given clientId.\r\n */\r\n static createMultipleMatchingAppMetadataInCacheError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAppMetadata.code,\r\n ClientAuthErrorMessage.multipleMatchingAppMetadata.desc);\r\n }\r\n\r\n /**\r\n * Throws error when no auth code or refresh token is given to ServerTokenRequestParameters.\r\n */\r\n static createTokenRequestCannotBeMadeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRequestCannotBeMade.code, ClientAuthErrorMessage.tokenRequestCannotBeMade.desc);\r\n }\r\n\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n static createAppendEmptyScopeToSetError(givenScope: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendEmptyScopeError.code, `${ClientAuthErrorMessage.appendEmptyScopeError.desc} Given Scope: ${givenScope}`);\r\n }\r\n\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n static createRemoveEmptyScopeFromSetError(givenScope: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.removeEmptyScopeError.code, `${ClientAuthErrorMessage.removeEmptyScopeError.desc} Given Scope: ${givenScope}`);\r\n }\r\n\r\n /**\r\n * Throws error when attempting to append null or empty ScopeSet.\r\n * @param appendError\r\n */\r\n static createAppendScopeSetError(appendError: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendScopeSetError.code, `${ClientAuthErrorMessage.appendScopeSetError.desc} Detail Error: ${appendError}`);\r\n }\r\n\r\n /**\r\n * Throws error if ScopeSet is null or undefined.\r\n * @param givenScopeSet\r\n */\r\n static createEmptyInputScopeSetError(givenScopeSet: ScopeSet): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.emptyInputScopeSetError.code, `${ClientAuthErrorMessage.emptyInputScopeSetError.desc} Given ScopeSet: ${givenScopeSet}`);\r\n }\r\n\r\n /**\r\n * Throws error if user sets CancellationToken.cancel = true during polling of token endpoint during device code flow\r\n */\r\n static createDeviceCodeCancelledError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodePollingCancelled.code, `${ClientAuthErrorMessage.DeviceCodePollingCancelled.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if device code is expired\r\n */\r\n static createDeviceCodeExpiredError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeExpired.code, `${ClientAuthErrorMessage.DeviceCodeExpired.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error when silent requests are made without an account object\r\n */\r\n static createNoAccountInSilentRequestError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.NoAccountInSilentRequest.code, `${ClientAuthErrorMessage.NoAccountInSilentRequest.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error when cache record is null or undefined.\r\n */\r\n static createNullOrUndefinedCacheRecord(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheRecord.code, ClientAuthErrorMessage.invalidCacheRecord.desc);\r\n }\r\n\r\n /**\r\n * Throws error when provided environment is not part of the CloudDiscoveryMetadata object\r\n */\r\n static createInvalidCacheEnvironmentError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheEnvironment.code, ClientAuthErrorMessage.invalidCacheEnvironment.desc);\r\n }\r\n\r\n /**\r\n * Throws error when account is not found in cache.\r\n */\r\n static createNoAccountFoundError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAccountFound.code, ClientAuthErrorMessage.noAccountFound.desc);\r\n }\r\n\r\n /**\r\n * Throws error if ICachePlugin not set on CacheManager.\r\n */\r\n static createCachePluginError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.CachePluginError.code, `${ClientAuthErrorMessage.CachePluginError.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if crypto object not found.\r\n * @param operationName\r\n */\r\n static createNoCryptoObjectError(operationName: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noCryptoObj.code, `${ClientAuthErrorMessage.noCryptoObj.desc}${operationName}`);\r\n }\r\n\r\n /**\r\n * Throws error if cache type is invalid.\r\n */\r\n static createInvalidCacheTypeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheType.code, `${ClientAuthErrorMessage.invalidCacheType.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if unexpected account type.\r\n */\r\n static createUnexpectedAccountTypeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedAccountType.code, `${ClientAuthErrorMessage.unexpectedAccountType.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if unexpected credential type.\r\n */\r\n static createUnexpectedCredentialTypeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedCredentialType.code, `${ClientAuthErrorMessage.unexpectedCredentialType.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n static createInvalidAssertionError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidAssertion.code, `${ClientAuthErrorMessage.invalidAssertion.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n static createInvalidCredentialError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidClientCredential.code, `${ClientAuthErrorMessage.invalidClientCredential.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if token cannot be retrieved from cache due to refresh being required.\r\n */\r\n static createRefreshRequiredError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRefreshRequired.code, ClientAuthErrorMessage.tokenRefreshRequired.desc);\r\n }\r\n\r\n /**\r\n * Throws error if the user defined timeout is reached.\r\n */\r\n static createUserTimeoutReachedError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.userTimeoutReached.code, ClientAuthErrorMessage.userTimeoutReached.desc);\r\n }\r\n\r\n /*\r\n * Throws error if token claims are not populated for a signed jwt generation\r\n */\r\n static createTokenClaimsRequiredError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenClaimsRequired.code, ClientAuthErrorMessage.tokenClaimsRequired.desc);\r\n }\r\n\r\n /**\r\n * Throws error when the authorization code is missing from the server response\r\n */\r\n static createNoAuthCodeInServerResponseError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAuthorizationCodeFromServer.code, ClientAuthErrorMessage.noAuthorizationCodeFromServer.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { DecodedAuthToken } from \"../account/DecodedAuthToken\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n\r\n/**\r\n * @hidden\r\n */\r\nexport class StringUtils {\r\n\r\n /**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\n static decodeAuthToken(authToken: string): DecodedAuthToken {\r\n if (StringUtils.isEmpty(authToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(authToken);\r\n }\r\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n const matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw ClientAuthError.createTokenParsingError(`Given token is malformed: ${JSON.stringify(authToken)}`);\r\n }\r\n const crackedToken: DecodedAuthToken = {\r\n header: matches[1],\r\n JWSPayload: matches[2],\r\n JWSSig: matches[3]\r\n };\r\n return crackedToken;\r\n }\r\n\r\n /**\r\n * Check if a string is empty.\r\n *\r\n * @param str\r\n */\r\n static isEmpty(str?: string): boolean {\r\n return (typeof str === \"undefined\" || !str || 0 === str.length);\r\n }\r\n\r\n static startsWith(str: string, search: string): boolean {\r\n return str.indexOf(search) === 0;\r\n }\r\n\r\n static endsWith(str: string, search: string): boolean {\r\n return (str.length >= search.length) && (str.lastIndexOf(search) === (str.length - search.length));\r\n }\r\n\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n static queryStringToObject(query: string): T {\r\n let match: Array | null; // Regex for replacing addition symbol with a space\r\n const pl = /\\+/g;\r\n const search = /([^&=]+)=([^&]*)/g;\r\n const decode = (s: string): string => decodeURIComponent(decodeURIComponent(s.replace(pl, \" \")));\r\n const obj: {} = {};\r\n match = search.exec(query);\r\n while (match) {\r\n obj[decode(match[1])] = decode(match[2]);\r\n match = search.exec(query);\r\n }\r\n return obj as T;\r\n }\r\n\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n static trimArrayEntries(arr: Array): Array {\r\n return arr.map(entry => entry.trim());\r\n }\r\n\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n static removeEmptyStringsFromArray(arr: Array): Array {\r\n return arr.filter(entry => {\r\n return !StringUtils.isEmpty(entry);\r\n });\r\n }\r\n\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n static jsonParseHelper(str: string): T | null {\r\n try {\r\n return JSON.parse(str) as T;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards\r\n * @param input String to match against\r\n */\r\n static matchPattern(pattern: string, input: string): boolean {\r\n // https://stackoverflow.com/a/3117248/4888559\r\n const regex: RegExp = new RegExp(pattern.replace(/\\*/g, \"[^ ]*\"));\r\n\r\n return regex.test(input);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nexport enum AuthorityType {\r\n Default,\r\n Adfs\r\n}\r\n","/* eslint-disable header/header */\nexport const name = \"@azure/msal-common\";\nexport const version = \"4.1.0\";\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Separators, CredentialType, CacheType, Constants } from \"../../utils/Constants\";\r\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\r\n\r\n/**\r\n * Base type for credentials to be stored in the cache: eg: ACCESS_TOKEN, ID_TOKEN etc\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: -----\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * oboAssertion: access token passed in as part of OBO request\r\n * }\r\n */\r\nexport class CredentialEntity {\r\n homeAccountId: string;\r\n environment: string;\r\n credentialType: CredentialType;\r\n clientId: string;\r\n secret: string;\r\n familyId?: string;\r\n realm?: string;\r\n target?: string;\r\n oboAssertion?: string;\r\n\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n generateAccountId(): string {\r\n return CredentialEntity.generateAccountIdForCacheKey(this.homeAccountId, this.environment);\r\n }\r\n\r\n /**\r\n * Generate Credential Id key component as per the schema: --\r\n */\r\n generateCredentialId(): string {\r\n return CredentialEntity.generateCredentialIdForCacheKey(\r\n this.credentialType,\r\n this.clientId,\r\n this.realm,\r\n this.familyId\r\n );\r\n }\r\n\r\n /**\r\n * Generate target key component as per schema: \r\n */\r\n generateTarget(): string {\r\n return CredentialEntity.generateTargetForCacheKey(this.target);\r\n }\r\n\r\n /**\r\n * generates credential key\r\n */\r\n generateCredentialKey(): string {\r\n return CredentialEntity.generateCredentialCacheKey(\r\n this.homeAccountId,\r\n this.environment,\r\n this.credentialType,\r\n this.clientId,\r\n this.realm,\r\n this.target,\r\n this.familyId\r\n );\r\n }\r\n\r\n /**\r\n * returns the type of the cache (in this case credential)\r\n */\r\n generateType(): number {\r\n switch (this.credentialType) {\r\n case CredentialType.ID_TOKEN:\r\n return CacheType.ID_TOKEN;\r\n case CredentialType.ACCESS_TOKEN:\r\n return CacheType.ACCESS_TOKEN;\r\n case CredentialType.REFRESH_TOKEN:\r\n return CacheType.REFRESH_TOKEN;\r\n default: {\r\n throw ClientAuthError.createUnexpectedCredentialTypeError();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * helper function to return `CredentialType`\r\n * @param key\r\n */\r\n static getCredentialType(key: string): string {\r\n if (key.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) !== -1) {\r\n return CredentialType.ACCESS_TOKEN;\r\n } else if (key.indexOf(CredentialType.ID_TOKEN.toLowerCase()) !== -1) {\r\n return CredentialType.ID_TOKEN;\r\n } else if (key.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) !== -1) {\r\n return CredentialType.REFRESH_TOKEN;\r\n }\r\n\r\n return Constants.NOT_DEFINED;\r\n }\r\n\r\n /**\r\n * generates credential key\r\n */\r\n static generateCredentialCacheKey(\r\n homeAccountId: string,\r\n environment: string,\r\n credentialType: CredentialType,\r\n clientId: string,\r\n realm?: string,\r\n target?: string,\r\n familyId?: string\r\n ): string {\r\n const credentialKey = [\r\n this.generateAccountIdForCacheKey(homeAccountId, environment),\r\n this.generateCredentialIdForCacheKey(credentialType, clientId, realm, familyId),\r\n this.generateTargetForCacheKey(target),\r\n ];\r\n\r\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * generates Account Id for keys\r\n * @param homeAccountId\r\n * @param environment\r\n */\r\n private static generateAccountIdForCacheKey(\r\n homeAccountId: string,\r\n environment: string\r\n ): string {\r\n const accountId: Array = [homeAccountId, environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generates Credential Id for keys\r\n * @param credentialType\r\n * @param realm\r\n * @param clientId\r\n * @param familyId\r\n */\r\n private static generateCredentialIdForCacheKey(\r\n credentialType: CredentialType,\r\n clientId: string,\r\n realm?: string,\r\n familyId?: string\r\n ): string {\r\n const clientOrFamilyId =\r\n credentialType === CredentialType.REFRESH_TOKEN\r\n ? familyId || clientId\r\n : clientId;\r\n const credentialId: Array = [\r\n credentialType,\r\n clientOrFamilyId,\r\n realm || \"\",\r\n ];\r\n\r\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generate target key component as per schema: \r\n */\r\n private static generateTargetForCacheKey(scopes?: string): string {\r\n return (scopes || \"\").toLowerCase();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientAuthError } from \"./ClientAuthError\";\r\n\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n claimsRequestParsingError: {\r\n code: \"claims_request_parsing_error\",\r\n desc: \"Could not parse the given claims request object.\"\r\n },\r\n authorityUriInsecure: {\r\n code: \"authority_uri_insecure\",\r\n desc: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\"\r\n },\r\n urlParseError: {\r\n code: \"url_parse_error\",\r\n desc: \"URL could not be parsed into appropriate segments.\"\r\n },\r\n urlEmptyError: {\r\n code: \"empty_url_error\",\r\n desc: \"URL was empty or null.\"\r\n },\r\n emptyScopesError: {\r\n code: \"empty_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\"\r\n },\r\n nonArrayScopesError: {\r\n code: \"nonarray_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as non-array.\"\r\n },\r\n clientIdSingleScopeError: {\r\n code: \"clientid_input_scopes_error\",\r\n desc: \"Client ID can only be provided as a single scope.\"\r\n },\r\n invalidPrompt: {\r\n code: \"invalid_prompt_value\",\r\n desc: \"Supported prompt values are 'login', 'select_account', 'consent' and 'none'. Please see here for valid configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\",\r\n },\r\n invalidClaimsRequest: {\r\n code: \"invalid_claims\",\r\n desc: \"Given claims parameter must be a stringified JSON object.\"\r\n },\r\n tokenRequestEmptyError: {\r\n code: \"token_request_empty\",\r\n desc: \"Token request was empty and not found in cache.\"\r\n },\r\n logoutRequestEmptyError: {\r\n code: \"logout_request_empty\",\r\n desc: \"The logout request was null or undefined.\"\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: \"invalid_code_challenge_method\",\r\n desc: \"code_challenge_method passed is invalid. Valid values are \\\"plain\\\" and \\\"S256\\\".\"\r\n },\r\n invalidCodeChallengeParams: {\r\n code: \"pkce_params_missing\",\r\n desc: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\"\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: \"invalid_cloud_discovery_metadata\",\r\n desc: \"Invalid cloudDiscoveryMetadata provided. Must be a JSON object containing tenant_discovery_endpoint and metadata fields\"\r\n },\r\n invalidAuthorityMetadata: {\r\n code: \"invalid_authority_metadata\",\r\n desc: \"Invalid authorityMetadata provided. Must by a JSON object containing authorization_endpoint, token_endpoint, end_session_endpoint, issuer fields.\"\r\n },\r\n untrustedAuthority: {\r\n code: \"untrusted_authority\",\r\n desc: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\"\r\n },\r\n resourceRequestParametersRequired: {\r\n code: \"resourceRequest_parameters_required\",\r\n desc: \"resourceRequestMethod and resourceRequestUri are required\"\r\n }\r\n};\r\n\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nexport class ClientConfigurationError extends ClientAuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(this, ClientConfigurationError.prototype);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n static createRedirectUriEmptyError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.redirectUriNotSet.code,\r\n ClientConfigurationErrorMessage.redirectUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n static createPostLogoutRedirectUriEmptyError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.postLogoutUriNotSet.code,\r\n ClientConfigurationErrorMessage.postLogoutUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the claims request could not be successfully parsed\r\n */\r\n static createClaimsRequestParsingError(claimsRequestParseError: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.claimsRequestParsingError.code,\r\n `${ClientConfigurationErrorMessage.claimsRequestParsingError.desc} Given value: ${claimsRequestParseError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if authority uri is given an insecure protocol.\r\n * @param urlString\r\n */\r\n static createInsecureAuthorityUriError(urlString: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.authorityUriInsecure.code,\r\n `${ClientConfigurationErrorMessage.authorityUriInsecure.desc} Given URI: ${urlString}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if URL string does not parse into separate segments.\r\n * @param urlString\r\n */\r\n static createUrlParseError(urlParseError: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlParseError.code,\r\n `${ClientConfigurationErrorMessage.urlParseError.desc} Given Error: ${urlParseError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if URL string is empty or null.\r\n * @param urlString\r\n */\r\n static createUrlEmptyError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlEmptyError.code,\r\n ClientConfigurationErrorMessage.urlEmptyError.desc);\r\n }\r\n\r\n /**\r\n * Error thrown when scopes are not an array\r\n * @param inputScopes\r\n */\r\n static createScopesNonArrayError(inputScopes: Array): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.nonArrayScopesError.code,\r\n `${ClientConfigurationErrorMessage.nonArrayScopesError.desc} Given Scopes: ${inputScopes}`);\r\n }\r\n\r\n /**\r\n * Error thrown when scopes are empty.\r\n * @param scopesValue\r\n */\r\n static createEmptyScopesArrayError(inputScopes: Array): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.emptyScopesError.code,\r\n `${ClientConfigurationErrorMessage.emptyScopesError.desc} Given Scopes: ${inputScopes}`);\r\n }\r\n\r\n /**\r\n * Error thrown when client id scope is not provided as single scope.\r\n * @param inputScopes\r\n */\r\n static createClientIdSingleScopeError(inputScopes: Array): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.clientIdSingleScopeError.code,\r\n `${ClientConfigurationErrorMessage.clientIdSingleScopeError.desc} Given Scopes: ${inputScopes}`);\r\n }\r\n\r\n /**\r\n * Error thrown when prompt is not an allowed type.\r\n * @param promptValue\r\n */\r\n static createInvalidPromptError(promptValue: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidPrompt.code,\r\n `${ClientConfigurationErrorMessage.invalidPrompt.desc} Given value: ${promptValue}`);\r\n }\r\n\r\n /**\r\n * Creates error thrown when claims parameter is not a stringified JSON object\r\n */\r\n static createInvalidClaimsRequestError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidClaimsRequest.code,\r\n ClientConfigurationErrorMessage.invalidClaimsRequest.desc);\r\n }\r\n\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n static createEmptyLogoutRequestError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.logoutRequestEmptyError.code,\r\n ClientConfigurationErrorMessage.logoutRequestEmptyError.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n static createEmptyTokenRequestError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.tokenRequestEmptyError.code,\r\n ClientConfigurationErrorMessage.tokenRequestEmptyError.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws error when an invalid code_challenge_method is passed by the user\r\n */\r\n static createInvalidCodeChallengeMethodError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.invalidCodeChallengeMethod.code,\r\n ClientConfigurationErrorMessage.invalidCodeChallengeMethod.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws error when both params: code_challenge and code_challenge_method are not passed together\r\n */\r\n static createInvalidCodeChallengeParamsError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.invalidCodeChallengeParams.code,\r\n ClientConfigurationErrorMessage.invalidCodeChallengeParams.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n static createInvalidCloudDiscoveryMetadataError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.code,\r\n ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.desc);\r\n }\r\n\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n static createInvalidAuthorityMetadataError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityMetadata.code,\r\n ClientConfigurationErrorMessage.invalidAuthorityMetadata.desc);\r\n }\r\n\r\n /**\r\n * Throws error when provided authority is not a member of the trusted host list\r\n */\r\n static createUntrustedAuthorityError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.untrustedAuthority.code,\r\n ClientConfigurationErrorMessage.untrustedAuthority.desc);\r\n }\r\n\r\n /**\r\n * Throws error when resourceRequestMethod or resourceRequestUri is missing\r\n */\r\n static createResourceRequestParametersRequiredError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.resourceRequestParametersRequired.code,\r\n ClientConfigurationErrorMessage.resourceRequestParametersRequired.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { OIDC_SCOPES } from \"../utils/Constants\";\r\n\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nexport class ScopeSet {\r\n // Scopes as a Set of strings\r\n private scopes: Set;\r\n\r\n constructor(inputScopes: Array) {\r\n // Filter empty string and null/undefined array items\r\n const scopeArr = inputScopes ? StringUtils.trimArrayEntries([...inputScopes]) : [];\r\n const filteredInput = scopeArr ? StringUtils.removeEmptyStringsFromArray(scopeArr) : [];\r\n\r\n // Validate and filter scopes (validate function throws if validation fails)\r\n this.validateInputScopes(filteredInput);\r\n\r\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach(scope => this.scopes.add(scope));\r\n }\r\n\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n static fromString(inputScopeString: string): ScopeSet {\r\n inputScopeString = inputScopeString || \"\";\r\n const inputScopes: Array = inputScopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n }\r\n\r\n /**\r\n * Used to validate the scopes input parameter requested by the developer.\r\n * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\r\n * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\r\n */\r\n private validateInputScopes(inputScopes: Array): void {\r\n // Check if scopes are required but not given or is an empty array\r\n if (!inputScopes || inputScopes.length < 1) {\r\n throw ClientConfigurationError.createEmptyScopesArrayError(inputScopes);\r\n }\r\n }\r\n\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n containsScope(scope: string): boolean {\r\n const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return !StringUtils.isEmpty(scope) ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) : false;\r\n }\r\n\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n containsScopeSet(scopeSet: ScopeSet): boolean {\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n\r\n return (this.scopes.size >= scopeSet.scopes.size && scopeSet.asArray().every(scope => this.containsScope(scope)));\r\n }\r\n\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n containsOnlyOIDCScopes(): boolean {\r\n let defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach((defaultScope: string) => {\r\n if (this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n\r\n return this.scopes.size === defaultScopeCount;\r\n }\r\n\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n appendScope(newScope: string): void {\r\n if (!StringUtils.isEmpty(newScope)) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n }\r\n\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n appendScopes(newScopes: Array): void {\r\n try {\r\n newScopes.forEach(newScope => this.appendScope(newScope));\r\n } catch (e) {\r\n throw ClientAuthError.createAppendScopeSetError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n removeScope(scope: string): void {\r\n if (StringUtils.isEmpty(scope)) {\r\n throw ClientAuthError.createRemoveEmptyScopeFromSetError(scope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n }\r\n\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n removeOIDCScopes(): void {\r\n OIDC_SCOPES.forEach((defaultScope: string) => {\r\n this.scopes.delete(defaultScope);\r\n });\r\n }\r\n\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n unionScopeSets(otherScopes: ScopeSet): Set {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError(otherScopes);\r\n }\r\n const unionScopes = new Set(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach(scope => unionScopes.add(scope.toLowerCase()));\r\n this.scopes.forEach(scope => unionScopes.add(scope.toLowerCase()));\r\n return unionScopes;\r\n }\r\n\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n intersectingScopeSets(otherScopes: ScopeSet): boolean {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError(otherScopes);\r\n }\r\n \r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n const unionScopes = this.unionScopeSets(otherScopes);\r\n const sizeOtherScopes = otherScopes.getScopeCount();\r\n const sizeThisScopes = this.getScopeCount();\r\n const sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < (sizeThisScopes + sizeOtherScopes);\r\n }\r\n\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n getScopeCount(): number {\r\n return this.scopes.size;\r\n }\r\n\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n asArray(): Array {\r\n const array: Array = [];\r\n this.scopes.forEach(val => array.push(val));\r\n return array;\r\n }\r\n\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n printScopes(): string {\r\n if (this.scopes) {\r\n const scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n printScopesLowerCase(): string {\r\n return this.printScopes().toLowerCase();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\n\r\n/**\r\n * Client info object which consists of two IDs. Need to add more info here.\r\n */\r\nexport type ClientInfo = {\r\n uid: string,\r\n utid: string\r\n};\r\n\r\n/**\r\n * Function to build a client info object\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nexport function buildClientInfo(rawClientInfo: string, crypto: ICrypto): ClientInfo {\r\n if (StringUtils.isEmpty(rawClientInfo)) {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n\r\n try {\r\n const decodedClientInfo: string = crypto.base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo) as ClientInfo;\r\n } catch (e) {\r\n throw ClientAuthError.createClientInfoDecodingError(e);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport {\r\n Separators,\r\n CacheAccountType,\r\n CacheType,\r\n Constants,\r\n} from \"../../utils/Constants\";\r\nimport { Authority } from \"../../authority/Authority\";\r\nimport { AuthToken } from \"../../account/AuthToken\";\r\nimport { ICrypto } from \"../../crypto/ICrypto\";\r\nimport { buildClientInfo } from \"../../account/ClientInfo\";\r\nimport { StringUtils } from \"../../utils/StringUtils\";\r\nimport { AccountInfo } from \"../../account/AccountInfo\";\r\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\r\nimport { AuthorityType } from \"../../authority/AuthorityType\";\r\nimport { Logger } from \"../../logger/Logger\";\r\nimport { TokenClaims } from \"../../account/TokenClaims\";\r\n\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: --\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * clientInfo: Full base64 encoded client info received from ESTS\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * oboAssertion: access token passed in as part of OBO request\r\n * idTokenClaims: Object containing claims parsed from ID token\r\n * }\r\n */\r\nexport class AccountEntity {\r\n homeAccountId: string;\r\n environment: string;\r\n realm: string;\r\n localAccountId: string;\r\n username: string;\r\n authorityType: string;\r\n name?: string;\r\n clientInfo?: string;\r\n lastModificationTime?: string;\r\n lastModificationApp?: string;\r\n oboAssertion?: string;\r\n cloudGraphHostName?: string;\r\n msGraphHost?: string; \r\n idTokenClaims?: TokenClaims;\r\n\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n generateAccountId(): string {\r\n const accountId: Array = [this.homeAccountId, this.environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generate Account Cache Key as per the schema: --\r\n */\r\n generateAccountKey(): string {\r\n return AccountEntity.generateAccountCacheKey({\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId\r\n });\r\n }\r\n\r\n /**\r\n * returns the type of the cache (in this case account)\r\n */\r\n generateType(): number {\r\n switch (this.authorityType) {\r\n case CacheAccountType.ADFS_ACCOUNT_TYPE:\r\n return CacheType.ADFS;\r\n case CacheAccountType.MSAV1_ACCOUNT_TYPE:\r\n return CacheType.MSA;\r\n case CacheAccountType.MSSTS_ACCOUNT_TYPE:\r\n return CacheType.MSSTS;\r\n case CacheAccountType.GENERIC_ACCOUNT_TYPE:\r\n return CacheType.GENERIC;\r\n default: {\r\n throw ClientAuthError.createUnexpectedAccountTypeError();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n getAccountInfo(): AccountInfo {\r\n return {\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId,\r\n name: this.name,\r\n idTokenClaims: this.idTokenClaims\r\n };\r\n }\r\n\r\n /**\r\n * Generates account key from interface\r\n * @param accountInterface\r\n */\r\n static generateAccountCacheKey(accountInterface: AccountInfo): string {\r\n const accountKey = [\r\n accountInterface.homeAccountId,\r\n accountInterface.environment || \"\",\r\n accountInterface.tenantId || \"\",\r\n ];\r\n\r\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param clientInfo\r\n * @param authority\r\n * @param idToken\r\n * @param policy\r\n */\r\n static createAccount(\r\n clientInfo: string,\r\n homeAccountId: string,\r\n authority: Authority,\r\n idToken: AuthToken,\r\n oboAssertion?: string,\r\n cloudGraphHostName?: string,\r\n msGraphHost?: string\r\n ): AccountEntity {\r\n const account: AccountEntity = new AccountEntity();\r\n\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n account.clientInfo = clientInfo;\r\n account.homeAccountId = homeAccountId;\r\n\r\n const env = authority.getPreferredCache();\r\n if (StringUtils.isEmpty(env)) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm = idToken?.claims?.tid || \"\";\r\n account.oboAssertion = oboAssertion;\r\n \r\n if (idToken) {\r\n account.idTokenClaims = idToken.claims;\r\n\r\n // How do you account for MSA CID here?\r\n account.localAccountId = idToken?.claims?.oid || idToken?.claims?.sub || \"\";\r\n\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. In most cases it will contain a single email.\r\n * This field should not be relied upon if a custom policy is configured to return more than 1 email.\r\n */\r\n account.username = idToken?.claims?.preferred_username || (idToken?.claims?.emails? idToken.claims.emails[0]: \"\");\r\n account.name = idToken?.claims?.name;\r\n }\r\n\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n\r\n return account;\r\n }\r\n\r\n /**\r\n * Builds non-AAD/ADFS account.\r\n * @param authority\r\n * @param idToken\r\n */\r\n static createGenericAccount(\r\n authority: Authority,\r\n homeAccountId: string,\r\n idToken: AuthToken,\r\n oboAssertion?: string,\r\n cloudGraphHostName?: string,\r\n msGraphHost?: string\r\n ): AccountEntity {\r\n const account: AccountEntity = new AccountEntity();\r\n\r\n account.authorityType = (authority.authorityType === AuthorityType.Adfs) ? CacheAccountType.ADFS_ACCOUNT_TYPE : CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n account.homeAccountId = homeAccountId;\r\n // non AAD scenarios can have empty realm\r\n account.realm = \"\";\r\n account.oboAssertion = oboAssertion;\r\n\r\n const env = authority.getPreferredCache();\r\n\r\n if (StringUtils.isEmpty(env)) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n\r\n if (idToken) {\r\n // How do you account for MSA CID here?\r\n account.localAccountId = idToken?.claims?.oid || idToken?.claims?.sub || \"\";\r\n // upn claim for most ADFS scenarios\r\n account.username = idToken?.claims?.upn || \"\";\r\n account.name = idToken?.claims?.name || \"\";\r\n account.idTokenClaims = idToken?.claims;\r\n }\r\n\r\n account.environment = env;\r\n\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n\r\n /*\r\n * add uniqueName to claims\r\n * account.name = idToken.claims.uniqueName;\r\n */\r\n\r\n return account;\r\n }\r\n\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n static generateHomeAccountId(serverClientInfo: string, authType: AuthorityType, logger: Logger, cryptoObj: ICrypto, idToken?: AuthToken): string {\r\n\r\n const accountId = idToken?.claims?.sub ? idToken.claims.sub : Constants.EMPTY_STRING;\r\n\r\n // since ADFS does not have tid and does not set client_info\r\n if (authType === AuthorityType.Adfs) {\r\n return accountId;\r\n }\r\n\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n const clientInfo = buildClientInfo(serverClientInfo, cryptoObj);\r\n if (!StringUtils.isEmpty(clientInfo.uid) && !StringUtils.isEmpty(clientInfo.utid)) {\r\n return `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`;\r\n }\r\n }\r\n\r\n // default to \"sub\" claim\r\n logger.verbose(\"No client info in response\");\r\n return accountId;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAccountEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\")\r\n );\r\n }\r\n\r\n /**\r\n * Helper function to determine whether 2 accounts are equal\r\n * Used to avoid unnecessary state updates\r\n * @param arrayA \r\n * @param arrayB \r\n */\r\n static accountInfoIsEqual(accountA: AccountInfo | null, accountB: AccountInfo | null): boolean {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n return (accountA.homeAccountId === accountB.homeAccountId) && \r\n (accountA.localAccountId === accountB.localAccountId) &&\r\n (accountA.username === accountB.username) &&\r\n (accountA.tenantId === accountB.tenantId) &&\r\n (accountA.environment === accountB.environment);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { TokenClaims } from \"./TokenClaims\";\r\nimport { DecodedAuthToken } from \"./DecodedAuthToken\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\n\r\n/**\r\n * JWT Token representation class. Parses token string and generates claims object.\r\n */\r\nexport class AuthToken {\r\n\r\n // Raw Token string\r\n rawToken: string;\r\n // Claims inside token\r\n claims: TokenClaims;\r\n constructor(rawToken: string, crypto: ICrypto) {\r\n if (StringUtils.isEmpty(rawToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(rawToken);\r\n }\r\n\r\n this.rawToken = rawToken;\r\n this.claims = AuthToken.extractTokenClaims(rawToken, crypto);\r\n }\r\n\r\n /**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\n static extractTokenClaims(encodedToken: string, crypto: ICrypto): TokenClaims {\r\n\r\n const decodedToken: DecodedAuthToken = StringUtils.decodeAuthToken(encodedToken);\r\n\r\n // token will be decoded to get the username\r\n try {\r\n const base64TokenPayload = decodedToken.JWSPayload;\r\n\r\n // base64Decode() should throw an error if there is an issue\r\n const base64Decoded = crypto.base64Decode(base64TokenPayload);\r\n return JSON.parse(base64Decoded) as TokenClaims;\r\n } catch (err) {\r\n throw ClientAuthError.createTokenParsingError(err);\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AccountCache, AccountFilter, CredentialFilter, CredentialCache, ValidCredentialType, AppMetadataFilter, AppMetadataCache } from \"./utils/CacheTypes\";\r\nimport { CacheRecord } from \"./entities/CacheRecord\";\r\nimport { CacheSchemaType, CredentialType, Constants, APP_METADATA, THE_FAMILY_ID, AUTHORITY_METADATA_CONSTANTS } from \"../utils/Constants\";\r\nimport { CredentialEntity } from \"./entities/CredentialEntity\";\r\nimport { ScopeSet } from \"../request/ScopeSet\";\r\nimport { AccountEntity } from \"./entities/AccountEntity\";\r\nimport { AccessTokenEntity } from \"./entities/AccessTokenEntity\";\r\nimport { IdTokenEntity } from \"./entities/IdTokenEntity\";\r\nimport { RefreshTokenEntity } from \"./entities/RefreshTokenEntity\";\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { ICacheManager } from \"./interface/ICacheManager\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { AccountInfo } from \"../account/AccountInfo\";\r\nimport { AppMetadataEntity } from \"./entities/AppMetadataEntity\";\r\nimport { ServerTelemetryEntity } from \"./entities/ServerTelemetryEntity\";\r\nimport { ThrottlingEntity } from \"./entities/ThrottlingEntity\";\r\nimport { AuthToken } from \"../account/AuthToken\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { AuthorityMetadataEntity } from \"./entities/AuthorityMetadataEntity\";\r\n\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n */\r\nexport abstract class CacheManager implements ICacheManager {\r\n protected clientId: string;\r\n protected cryptoImpl: ICrypto;\r\n\r\n constructor(clientId: string, cryptoImpl: ICrypto) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n }\r\n\r\n /**\r\n * fetch the account entity from the platform cache\r\n * @param accountKey\r\n */\r\n abstract getAccount(accountKey: string): AccountEntity | null;\r\n\r\n /**\r\n * set account entity in the platform cache\r\n * @param account\r\n */\r\n abstract setAccount(account: AccountEntity): void;\r\n\r\n /**\r\n * fetch the idToken entity from the platform cache\r\n * @param idTokenKey\r\n */\r\n abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null;\r\n\r\n /**\r\n * set idToken entity to the platform cache\r\n * @param idToken\r\n */\r\n abstract setIdTokenCredential(idToken: IdTokenEntity): void;\r\n\r\n /**\r\n * fetch the idToken entity from the platform cache\r\n * @param accessTokenKey\r\n */\r\n abstract getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null;\r\n\r\n /**\r\n * set idToken entity to the platform cache\r\n * @param accessToken\r\n */\r\n abstract setAccessTokenCredential(accessToken: AccessTokenEntity): void;\r\n\r\n /**\r\n * fetch the idToken entity from the platform cache\r\n * @param refreshTokenKey\r\n */\r\n abstract getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null;\r\n\r\n /**\r\n * set idToken entity to the platform cache\r\n * @param refreshToken\r\n */\r\n abstract setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void;\r\n\r\n /**\r\n * fetch appMetadata entity from the platform cache\r\n * @param appMetadataKey\r\n */\r\n abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null;\r\n\r\n /**\r\n * set appMetadata entity to the platform cache\r\n * @param appMetadata\r\n */\r\n abstract setAppMetadata(appMetadata: AppMetadataEntity): void;\r\n\r\n /**\r\n * fetch server telemetry entity from the platform cache\r\n * @param serverTelemetryKey\r\n */\r\n abstract getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null;\r\n\r\n /**\r\n * set server telemetry entity to the platform cache\r\n * @param serverTelemetryKey\r\n * @param serverTelemetry\r\n */\r\n abstract setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void;\r\n\r\n /**\r\n * fetch cloud discovery metadata entity from the platform cache\r\n * @param key\r\n */\r\n abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null;\r\n\r\n /**\r\n * \r\n */\r\n abstract getAuthorityMetadataKeys(): Array;\r\n\r\n /**\r\n * set cloud discovery metadata entity to the platform cache\r\n * @param key\r\n * @param value\r\n */\r\n abstract setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void;\r\n\r\n /**\r\n * fetch throttling entity from the platform cache\r\n * @param throttlingCacheKey\r\n */\r\n abstract getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null;\r\n\r\n /**\r\n * set throttling entity to the platform cache\r\n * @param throttlingCacheKey\r\n * @param throttlingCache\r\n */\r\n abstract setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void;;\r\n\r\n /**\r\n * Function to remove an item from cache given its key.\r\n * @param key\r\n */\r\n abstract removeItem(key: string, type?: string): boolean;\r\n\r\n /**\r\n * Function which returns boolean whether cache contains a specific key.\r\n * @param key\r\n */\r\n abstract containsKey(key: string, type?: string): boolean;\r\n\r\n /**\r\n * Function which retrieves all current keys from the cache.\r\n */\r\n abstract getKeys(): string[];\r\n\r\n /**\r\n * Function which clears cache.\r\n */\r\n abstract clear(): void;\r\n\r\n /**\r\n * Returns all accounts in cache\r\n */\r\n getAllAccounts(): AccountInfo[] {\r\n const currentAccounts: AccountCache = this.getAccountsFilteredBy();\r\n const accountValues: AccountEntity[] = Object.keys(currentAccounts).map(accountKey => currentAccounts[accountKey]);\r\n const numAccounts = accountValues.length;\r\n if (numAccounts < 1) {\r\n return [];\r\n } else {\r\n const allAccounts = accountValues.map((value) => {\r\n const accountEntity = CacheManager.toObject(new AccountEntity(), value);\r\n const accountInfo = accountEntity.getAccountInfo();\r\n const idToken = this.readIdTokenFromCache(this.clientId, accountInfo);\r\n if (idToken && !accountInfo.idTokenClaims) {\r\n accountInfo.idTokenClaims = new AuthToken(idToken.secret, this.cryptoImpl).claims;\r\n }\r\n\r\n return accountInfo;\r\n \r\n });\r\n return allAccounts;\r\n }\r\n }\r\n\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord\r\n */\r\n saveCacheRecord(cacheRecord: CacheRecord): void {\r\n if (!cacheRecord) {\r\n throw ClientAuthError.createNullOrUndefinedCacheRecord();\r\n }\r\n\r\n if (!!cacheRecord.account) {\r\n this.setAccount(cacheRecord.account);\r\n }\r\n\r\n if (!!cacheRecord.idToken) {\r\n this.setIdTokenCredential(cacheRecord.idToken);\r\n }\r\n\r\n if (!!cacheRecord.accessToken) {\r\n this.saveAccessToken(cacheRecord.accessToken);\r\n }\r\n\r\n if (!!cacheRecord.refreshToken) {\r\n this.setRefreshTokenCredential(cacheRecord.refreshToken);\r\n }\r\n\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata);\r\n }\r\n }\r\n\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n private saveAccessToken(credential: AccessTokenEntity): void {\r\n const currentTokenCache = this.getCredentialsFilteredBy({\r\n clientId: credential.clientId,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n });\r\n const currentScopes = ScopeSet.fromString(credential.target);\r\n const currentAccessTokens: AccessTokenEntity[] = Object.keys(currentTokenCache.accessTokens).map(key => currentTokenCache.accessTokens[key]);\r\n if (currentAccessTokens) {\r\n currentAccessTokens.forEach((tokenEntity) => {\r\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n this.removeCredential(tokenEntity);\r\n }\r\n });\r\n }\r\n this.setAccessTokenCredential(credential);\r\n }\r\n\r\n /**\r\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\r\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param homeAccountId\r\n * @param environment\r\n * @param realm\r\n */\r\n getAccountsFilteredBy(accountFilter?: AccountFilter): AccountCache {\r\n return this.getAccountsFilteredByInternal(\r\n accountFilter ? accountFilter.homeAccountId : \"\",\r\n accountFilter ? accountFilter.environment : \"\",\r\n accountFilter ? accountFilter.realm : \"\"\r\n );\r\n }\r\n\r\n /**\r\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\r\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param homeAccountId\r\n * @param environment\r\n * @param realm\r\n */\r\n private getAccountsFilteredByInternal(\r\n homeAccountId?: string,\r\n environment?: string,\r\n realm?: string\r\n ): AccountCache {\r\n const allCacheKeys = this.getKeys();\r\n const matchingAccounts: AccountCache = {};\r\n\r\n allCacheKeys.forEach((cacheKey) => {\r\n const entity: AccountEntity | null = this.getAccount(cacheKey);\r\n\r\n if (!entity) {\r\n return;\r\n }\r\n\r\n if (!!homeAccountId && !this.matchHomeAccountId(entity, homeAccountId)) {\r\n return;\r\n }\r\n\r\n if (!!environment && !this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n\r\n if (!!realm && !this.matchRealm(entity, realm)) {\r\n return;\r\n }\r\n\r\n matchingAccounts[cacheKey] = entity;\r\n });\r\n\r\n return matchingAccounts;\r\n }\r\n\r\n /**\r\n * retrieve credentails matching all provided filters; if no filter is set, get all credentials\r\n * @param homeAccountId\r\n * @param environment\r\n * @param credentialType\r\n * @param clientId\r\n * @param realm\r\n * @param target\r\n */\r\n getCredentialsFilteredBy(filter: CredentialFilter): CredentialCache {\r\n return this.getCredentialsFilteredByInternal(\r\n filter.homeAccountId,\r\n filter.environment,\r\n filter.credentialType,\r\n filter.clientId,\r\n filter.familyId,\r\n filter.realm,\r\n filter.target,\r\n filter.oboAssertion\r\n );\r\n }\r\n\r\n /**\r\n * Support function to help match credentials\r\n * @param homeAccountId\r\n * @param environment\r\n * @param credentialType\r\n * @param clientId\r\n * @param realm\r\n * @param target\r\n */\r\n private getCredentialsFilteredByInternal(\r\n homeAccountId?: string,\r\n environment?: string,\r\n credentialType?: string,\r\n clientId?: string,\r\n familyId?: string,\r\n realm?: string,\r\n target?: string,\r\n oboAssertion?: string\r\n ): CredentialCache {\r\n const allCacheKeys = this.getKeys();\r\n const matchingCredentials: CredentialCache = {\r\n idTokens: {},\r\n accessTokens: {},\r\n refreshTokens: {},\r\n };\r\n\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-credential type cache entities\r\n const credType = CredentialEntity.getCredentialType(cacheKey);\r\n if (credType === Constants.NOT_DEFINED) {\r\n return;\r\n }\r\n\r\n // Attempt retrieval\r\n const entity = this.getSpecificCredential(cacheKey, credType);\r\n if (!entity) {\r\n return;\r\n }\r\n\r\n if (!!oboAssertion && !this.matchOboAssertion(entity, oboAssertion)) {\r\n return;\r\n }\r\n\r\n if (!!homeAccountId && !this.matchHomeAccountId(entity, homeAccountId)) {\r\n return;\r\n }\r\n\r\n if (!!environment && !this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n\r\n if (!!realm && !this.matchRealm(entity, realm)) {\r\n return;\r\n }\r\n\r\n if (!!credentialType && !this.matchCredentialType(entity, credentialType)) {\r\n return;\r\n }\r\n\r\n if (!!clientId && !this.matchClientId(entity, clientId)) {\r\n return;\r\n }\r\n\r\n if (!!familyId && !this.matchFamilyId(entity, familyId)) {\r\n return;\r\n }\r\n\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!target && !this.matchTarget(entity, target)) {\r\n return;\r\n }\r\n\r\n switch (credType) {\r\n case CredentialType.ID_TOKEN:\r\n matchingCredentials.idTokens[cacheKey] = entity as IdTokenEntity;\r\n break;\r\n case CredentialType.ACCESS_TOKEN:\r\n matchingCredentials.accessTokens[cacheKey] = entity as AccessTokenEntity;\r\n break;\r\n case CredentialType.REFRESH_TOKEN:\r\n matchingCredentials.refreshTokens[cacheKey] = entity as RefreshTokenEntity;\r\n break;\r\n }\r\n });\r\n\r\n return matchingCredentials;\r\n }\r\n\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache {\r\n return this.getAppMetadataFilteredByInternal(\r\n filter.environment,\r\n filter.clientId,\r\n );\r\n }\r\n\r\n /**\r\n * Support function to help match appMetadata\r\n * @param environment\r\n * @param clientId\r\n */\r\n private getAppMetadataFilteredByInternal(\r\n environment?: string,\r\n clientId?: string\r\n ): AppMetadataCache {\r\n\r\n const allCacheKeys = this.getKeys();\r\n const matchingAppMetadata: AppMetadataCache = {};\r\n\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n\r\n // Attempt retrieval\r\n const entity = this.getAppMetadata(cacheKey);\r\n\r\n if (!entity) {\r\n return;\r\n }\r\n\r\n if (!!environment && !this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n\r\n if (!!clientId && !this.matchClientId(entity, clientId)) {\r\n return;\r\n }\r\n\r\n matchingAppMetadata[cacheKey] = entity;\r\n\r\n });\r\n\r\n return matchingAppMetadata;\r\n }\r\n\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null {\r\n const allCacheKeys = this.getAuthorityMetadataKeys();\r\n let matchedEntity = null;\r\n\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!this.isAuthorityMetadata(cacheKey) || cacheKey.indexOf(this.clientId) === -1) {\r\n return;\r\n }\r\n\r\n // Attempt retrieval\r\n const entity = this.getAuthorityMetadata(cacheKey);\r\n\r\n if (!entity) {\r\n return;\r\n }\r\n\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n\r\n matchedEntity = entity;\r\n\r\n });\r\n \r\n return matchedEntity;\r\n }\r\n\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n removeAllAccounts(): boolean {\r\n const allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach((cacheKey) => {\r\n const entity = this.getAccount(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n this.removeAccount(cacheKey);\r\n });\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * returns a boolean if the given account is removed\r\n * @param account\r\n */\r\n removeAccount(accountKey: string): boolean {\r\n const account = this.getAccount(accountKey);\r\n if (!account) {\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n return (this.removeAccountContext(account) && this.removeItem(accountKey, CacheSchemaType.ACCOUNT));\r\n }\r\n\r\n /**\r\n * returns a boolean if the given account is removed\r\n * @param account\r\n */\r\n removeAccountContext(account: AccountEntity): boolean {\r\n const allCacheKeys = this.getKeys();\r\n const accountId = account.generateAccountId();\r\n\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-credential type cache entities\r\n const credType = CredentialEntity.getCredentialType(cacheKey);\r\n if (credType === Constants.NOT_DEFINED) {\r\n return;\r\n }\r\n\r\n const cacheEntity = this.getSpecificCredential(cacheKey, credType);\r\n if (!!cacheEntity && accountId === cacheEntity.generateAccountId()) {\r\n this.removeCredential(cacheEntity);\r\n }\r\n });\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * returns a boolean if the given credential is removed\r\n * @param credential\r\n */\r\n removeCredential(credential: CredentialEntity): boolean {\r\n const key = credential.generateCredentialKey();\r\n return this.removeItem(key, CacheSchemaType.CREDENTIAL);\r\n }\r\n\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n removeAppMetadata(): boolean {\r\n const allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach((cacheKey) => {\r\n if (this.isAppMetadata(cacheKey)) {\r\n this.removeItem(cacheKey, CacheSchemaType.APP_METADATA);\r\n }\r\n });\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Retrieve the cached credentials into a cacherecord\r\n * @param account\r\n * @param clientId\r\n * @param scopes\r\n * @param environment\r\n */\r\n readCacheRecord(account: AccountInfo, clientId: string, scopes: ScopeSet, environment: string): CacheRecord {\r\n const cachedAccount = this.readAccountFromCache(account);\r\n const cachedIdToken = this.readIdTokenFromCache(clientId, account);\r\n const cachedAccessToken = this.readAccessTokenFromCache(clientId, account, scopes);\r\n const cachedRefreshToken = this.readRefreshTokenFromCache(clientId, account, false);\r\n const cachedAppMetadata = this.readAppMetadataFromCache(environment, clientId);\r\n\r\n if (cachedAccount && cachedIdToken) {\r\n cachedAccount.idTokenClaims = new AuthToken(cachedIdToken.secret, this.cryptoImpl).claims;\r\n }\r\n\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n }\r\n\r\n /**\r\n * Retrieve AccountEntity from cache\r\n * @param account\r\n */\r\n readAccountFromCache(account: AccountInfo): AccountEntity | null {\r\n const accountKey: string = AccountEntity.generateAccountCacheKey(account);\r\n return this.getAccount(accountKey);\r\n }\r\n\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param inputRealm\r\n */\r\n readIdTokenFromCache(clientId: string, account: AccountInfo): IdTokenEntity | null {\r\n const idTokenFilter: CredentialFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: clientId,\r\n realm: account.tenantId,\r\n };\r\n\r\n const credentialCache: CredentialCache = this.getCredentialsFilteredBy(idTokenFilter);\r\n const idTokens = Object.keys(credentialCache.idTokens).map((key) => credentialCache.idTokens[key]);\r\n const numIdTokens = idTokens.length;\r\n\r\n if (numIdTokens < 1) {\r\n return null;\r\n } else if (numIdTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n\r\n return idTokens[0] as IdTokenEntity;\r\n }\r\n\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param scopes\r\n * @param inputRealm\r\n */\r\n readAccessTokenFromCache(clientId: string, account: AccountInfo, scopes: ScopeSet): AccessTokenEntity | null {\r\n const accessTokenFilter: CredentialFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n clientId,\r\n realm: account.tenantId,\r\n target: scopes.printScopesLowerCase(),\r\n };\r\n\r\n const credentialCache: CredentialCache = this.getCredentialsFilteredBy(accessTokenFilter);\r\n const accessTokens = Object.keys(credentialCache.accessTokens).map((key) => credentialCache.accessTokens[key]);\r\n\r\n const numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n return null;\r\n } else if (numAccessTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n\r\n return accessTokens[0] as AccessTokenEntity;\r\n }\r\n\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param clientId\r\n * @param account\r\n * @param familyRT\r\n */\r\n readRefreshTokenFromCache(clientId: string, account: AccountInfo, familyRT: boolean): RefreshTokenEntity | null {\r\n const id = familyRT ? THE_FAMILY_ID : undefined;\r\n const refreshTokenFilter: CredentialFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: clientId,\r\n familyId: id\r\n };\r\n\r\n const credentialCache: CredentialCache = this.getCredentialsFilteredBy(refreshTokenFilter);\r\n const refreshTokens = Object.keys(credentialCache.refreshTokens).map((key) => credentialCache.refreshTokens[key]);\r\n\r\n const numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n\r\n return refreshTokens[0] as RefreshTokenEntity;\r\n }\r\n\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n readAppMetadataFromCache(environment: string, clientId: string): AppMetadataEntity | null {\r\n const appMetadataFilter: AppMetadataFilter = {\r\n environment,\r\n clientId,\r\n };\r\n\r\n const appMetadata: AppMetadataCache = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n const appMetadataEntries: AppMetadataEntity[] = Object.keys(appMetadata).map((key) => appMetadata[key]);\r\n\r\n const numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n } else if (numAppMetadata > 1) {\r\n throw ClientAuthError.createMultipleMatchingAppMetadataInCacheError();\r\n }\r\n\r\n return appMetadataEntries[0] as AppMetadataEntity;\r\n }\r\n\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n isAppMetadataFOCI(environment: string, clientId: string): boolean {\r\n const appMetadata = this.readAppMetadataFromCache(environment, clientId);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n }\r\n\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n private matchHomeAccountId(entity: AccountEntity | CredentialEntity, homeAccountId: string): boolean {\r\n return !!(entity.homeAccountId && homeAccountId === entity.homeAccountId);\r\n }\r\n\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n private matchOboAssertion(entity: AccountEntity | CredentialEntity, oboAssertion: string): boolean {\r\n return !!(entity.oboAssertion && oboAssertion === entity.oboAssertion);\r\n }\r\n\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n private matchEnvironment(entity: AccountEntity | CredentialEntity | AppMetadataEntity, environment: string): boolean {\r\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n private matchCredentialType(entity: CredentialEntity, credentialType: string): boolean {\r\n return (entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n }\r\n\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n private matchClientId(entity: CredentialEntity | AppMetadataEntity, clientId: string): boolean {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n }\r\n\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n private matchFamilyId(entity: CredentialEntity | AppMetadataEntity, familyId: string): boolean {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n }\r\n\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n private matchRealm(entity: AccountEntity | CredentialEntity, realm: string): boolean {\r\n return !!(entity.realm && realm === entity.realm);\r\n }\r\n\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n private matchTarget(entity: CredentialEntity, target: string): boolean {\r\n if (entity.credentialType !== CredentialType.ACCESS_TOKEN || !entity.target) {\r\n return false;\r\n }\r\n\r\n const entityScopeSet: ScopeSet = ScopeSet.fromString(entity.target);\r\n const requestTargetScopeSet: ScopeSet = ScopeSet.fromString(target);\r\n\r\n if (!requestTargetScopeSet.containsOnlyOIDCScopes()) {\r\n requestTargetScopeSet.removeOIDCScopes(); // ignore OIDC scopes\r\n } else {\r\n requestTargetScopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\r\n }\r\n return entityScopeSet.containsScopeSet(requestTargetScopeSet);\r\n }\r\n\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n private isAppMetadata(key: string): boolean {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n }\r\n\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n protected isAuthorityMetadata(key: string): boolean {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n }\r\n\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n generateAuthorityMetadataCacheKey(authority: string): string {\r\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\r\n }\r\n\r\n /**\r\n * Returns the specific credential (IdToken/AccessToken/RefreshToken) from the cache\r\n * @param key\r\n * @param credType\r\n */\r\n private getSpecificCredential(key: string, credType: string): ValidCredentialType | null {\r\n switch (credType) {\r\n case CredentialType.ID_TOKEN: {\r\n return this.getIdTokenCredential(key);\r\n }\r\n case CredentialType.ACCESS_TOKEN: {\r\n return this.getAccessTokenCredential(key);\r\n }\r\n case CredentialType.REFRESH_TOKEN: {\r\n return this.getRefreshTokenCredential(key);\r\n }\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n static toObject(obj: T, json: object): T {\r\n for (const propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n }\r\n}\r\n\r\nexport class DefaultStorageClass extends CacheManager {\r\n setAccount(): void {\r\n const notImplErr = \"Storage interface - setAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAccount(): AccountEntity {\r\n const notImplErr = \"Storage interface - getAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setIdTokenCredential(): void {\r\n const notImplErr = \"Storage interface - setIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getIdTokenCredential(): IdTokenEntity {\r\n const notImplErr = \"Storage interface - getIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setAccessTokenCredential(): void {\r\n const notImplErr = \"Storage interface - setAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAccessTokenCredential(): AccessTokenEntity {\r\n const notImplErr = \"Storage interface - getAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setRefreshTokenCredential(): void {\r\n const notImplErr = \"Storage interface - setRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getRefreshTokenCredential(): RefreshTokenEntity {\r\n const notImplErr = \"Storage interface - getRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setAppMetadata(): void {\r\n const notImplErr = \"Storage interface - setAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAppMetadata(): AppMetadataEntity {\r\n const notImplErr = \"Storage interface - getAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setServerTelemetry(): void {\r\n const notImplErr = \"Storage interface - setServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getServerTelemetry(): ServerTelemetryEntity {\r\n const notImplErr = \"Storage interface - getServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setAuthorityMetadata(): void {\r\n const notImplErr = \"Storage interface - setAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAuthorityMetadata(): AuthorityMetadataEntity | null {\r\n const notImplErr = \"Storage interface - getAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAuthorityMetadataKeys(): Array {\r\n const notImplErr = \"Storage interface - getAuthorityMetadataKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setThrottlingCache(): void {\r\n const notImplErr = \"Storage interface - setThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getThrottlingCache(): ThrottlingEntity {\r\n const notImplErr = \"Storage interface - getThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n removeItem(): boolean {\r\n const notImplErr = \"Storage interface - removeItem() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n containsKey(): boolean {\r\n const notImplErr = \"Storage interface - containsKey() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getKeys(): string[] {\r\n const notImplErr = \"Storage interface - getKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n clear(): void {\r\n const notImplErr = \"Storage interface - clear() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { DEFAULT_CRYPTO_IMPLEMENTATION, ICrypto } from \"../crypto/ICrypto\";\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { ILoggerCallback, LogLevel } from \"../logger/Logger\";\r\nimport { Constants } from \"../utils/Constants\";\r\nimport { version } from \"../packageMetadata\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { CacheManager, DefaultStorageClass } from \"../cache/CacheManager\";\r\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\r\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin\";\r\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache\";\r\n\r\n// Token renewal offset default in seconds\r\nconst DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\r\n\r\n/**\r\n * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL.\r\n *\r\n * This object allows you to configure important elements of MSAL functionality:\r\n * - authOptions - Authentication for application\r\n * - cryptoInterface - Implementation of crypto functions\r\n * - libraryInfo - Library metadata\r\n * - loggerOptions - Logging for application\r\n * - networkInterface - Network implementation\r\n * - storageInterface - Storage implementation\r\n * - systemOptions - Additional library options\r\n * - clientCredentials - Credentials options for confidential clients\r\n */\r\nexport type ClientConfiguration = {\r\n authOptions: AuthOptions,\r\n systemOptions?: SystemOptions,\r\n loggerOptions?: LoggerOptions,\r\n storageInterface?: CacheManager,\r\n networkInterface?: INetworkModule,\r\n cryptoInterface?: ICrypto,\r\n clientCredentials?: ClientCredentials,\r\n libraryInfo?: LibraryInfo\r\n serverTelemetryManager?: ServerTelemetryManager | null,\r\n persistencePlugin?: ICachePlugin | null,\r\n serializableCache?: ISerializableTokenCache | null\r\n};\r\n\r\nexport type CommonClientConfiguration = {\r\n authOptions: Required,\r\n systemOptions: Required,\r\n loggerOptions : Required,\r\n storageInterface: CacheManager,\r\n networkInterface : INetworkModule,\r\n cryptoInterface : Required,\r\n libraryInfo : LibraryInfo,\r\n serverTelemetryManager: ServerTelemetryManager | null,\r\n clientCredentials: ClientCredentials,\r\n persistencePlugin: ICachePlugin | null,\r\n serializableCache: ISerializableTokenCache | null\r\n};\r\n\r\n/**\r\n * Use this to configure the auth options in the ClientConfiguration object\r\n *\r\n * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\r\n * - authority - You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\r\n * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios.\r\n * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios.\r\n * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\r\n * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\r\n */\r\nexport type AuthOptions = {\r\n clientId: string;\r\n authority: Authority;\r\n clientCapabilities?: Array;\r\n};\r\n\r\n/**\r\n * Use this to configure token renewal info in the Configuration object\r\n *\r\n * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry\r\n */\r\nexport type SystemOptions = {\r\n tokenRenewalOffsetSeconds?: number;\r\n};\r\n\r\n/**\r\n * Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object\r\n *\r\n * - loggerCallback - Callback for logger\r\n * - piiLoggingEnabled - Sets whether pii logging is enabled\r\n * - logLevel - Sets the level at which logging happens\r\n */\r\nexport type LoggerOptions = {\r\n loggerCallback?: ILoggerCallback,\r\n piiLoggingEnabled?: boolean,\r\n logLevel?: LogLevel\r\n};\r\n\r\n/**\r\n * Library-specific options\r\n */\r\nexport type LibraryInfo = {\r\n sku: string,\r\n version: string,\r\n cpu: string,\r\n os: string\r\n};\r\n\r\n/**\r\n * Credentials for confidential clients\r\n */\r\nexport type ClientCredentials = {\r\n clientSecret?: string,\r\n clientAssertion? : {\r\n assertion: string,\r\n assertionType: string\r\n };\r\n};\r\n\r\nexport const DEFAULT_SYSTEM_OPTIONS: Required = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC\r\n};\r\n\r\nconst DEFAULT_LOGGER_IMPLEMENTATION: Required = {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info\r\n};\r\n\r\nconst DEFAULT_NETWORK_IMPLEMENTATION: INetworkModule = {\r\n async sendGetRequestAsync(): Promise {\r\n const notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async sendPostRequestAsync(): Promise {\r\n const notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n};\r\n\r\nconst DEFAULT_LIBRARY_INFO: LibraryInfo = {\r\n sku: Constants.SKU,\r\n version: version,\r\n cpu: \"\",\r\n os: \"\"\r\n};\r\n\r\nconst DEFAULT_CLIENT_CREDENTIALS: ClientCredentials = {\r\n clientSecret: \"\",\r\n clientAssertion: undefined\r\n};\r\n\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nexport function buildClientConfiguration(\r\n {\r\n authOptions: userAuthOptions,\r\n systemOptions: userSystemOptions,\r\n loggerOptions: userLoggerOption,\r\n storageInterface: storageImplementation,\r\n networkInterface: networkImplementation,\r\n cryptoInterface: cryptoImplementation,\r\n clientCredentials: clientCredentials,\r\n libraryInfo: libraryInfo,\r\n serverTelemetryManager: serverTelemetryManager,\r\n persistencePlugin: persistencePlugin,\r\n serializableCache: serializableCache\r\n }: ClientConfiguration): CommonClientConfiguration {\r\n\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },\r\n loggerOptions: { ...DEFAULT_LOGGER_IMPLEMENTATION, ...userLoggerOption },\r\n storageInterface: storageImplementation || new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null\r\n };\r\n}\r\n\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions: AuthOptions): Required {\r\n return {\r\n clientCapabilities: [],\r\n ...authOptions\r\n };\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"./AuthError\";\r\n\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nexport class ServerError extends AuthError {\r\n\r\n constructor(errorCode?: string, errorMessage?: string, subError?: string) {\r\n super(errorCode, errorMessage, subError);\r\n this.name = \"ServerError\";\r\n\r\n Object.setPrototypeOf(this, ServerError.prototype);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ICrypto } from \"./ICrypto\";\r\nimport { AuthToken } from \"../account/AuthToken\";\r\nimport { TokenClaims } from \"../account/TokenClaims\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { IUri } from \"../url/IUri\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n\r\n/**\r\n * See eSTS docs for more info.\r\n * - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded.\r\n * - xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values:\r\n * - sw: software storage\r\n * - uhw: hardware storage\r\n */\r\ntype ReqCnf = {\r\n kid: string;\r\n xms_ksl: KeyLocation;\r\n};\r\n\r\nenum KeyLocation {\r\n SW = \"sw\",\r\n UHW = \"uhw\"\r\n}\r\n\r\nexport class PopTokenGenerator {\r\n\r\n private cryptoUtils: ICrypto;\r\n\r\n constructor(cryptoUtils: ICrypto) {\r\n this.cryptoUtils = cryptoUtils;\r\n }\r\n\r\n async generateCnf(resourceRequestMethod: string, resourceRequestUri: string): Promise {\r\n const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(resourceRequestMethod, resourceRequestUri);\r\n const reqCnf: ReqCnf = {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW\r\n };\r\n return this.cryptoUtils.base64Encode(JSON.stringify(reqCnf));\r\n }\r\n\r\n async signPopToken(accessToken: string, resourceRequestMethod: string, resourceRequestUri: string, shrClaims?: string): Promise {\r\n const tokenClaims: TokenClaims | null = AuthToken.extractTokenClaims(accessToken, this.cryptoUtils);\r\n const resourceUrlString: UrlString = new UrlString(resourceRequestUri);\r\n const resourceUrlComponents: IUri = resourceUrlString.getUrlComponents();\r\n\r\n if (!tokenClaims?.cnf?.kid) {\r\n throw ClientAuthError.createTokenClaimsRequiredError();\r\n }\r\n\r\n return await this.cryptoUtils.signJwt({\r\n at: accessToken,\r\n ts: `${TimeUtils.nowSeconds()}`,\r\n m: resourceRequestMethod.toUpperCase(),\r\n u: resourceUrlComponents.HostNameAndPort || \"\",\r\n nonce: this.cryptoUtils.createNewGuid(),\r\n p: resourceUrlComponents.AbsolutePath,\r\n q: [[], resourceUrlComponents.QueryString],\r\n client_claims: shrClaims || undefined\r\n }, tokenClaims.cnf.kid);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { NetworkResponse } from \"./NetworkManager\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { HeaderNames, CacheSchemaType, ThrottlingConstants, Constants } from \"../utils/Constants\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { ServerError } from \"../error/ServerError\";\r\nimport { RequestThumbprint } from \"./RequestThumbprint\";\r\nimport { ThrottlingEntity } from \"../cache/entities/ThrottlingEntity\";\r\n\r\nexport class ThrottlingUtils {\r\n\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n static generateThrottlingStorageKey(thumbprint: RequestThumbprint): string {\r\n return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`;\r\n }\r\n\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n static preProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint): void {\r\n const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n const value = cacheManager.getThrottlingCache(key);\r\n\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\r\n return;\r\n }\r\n throw new ServerError(value.errorCodes?.join(\" \") || Constants.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n }\r\n\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n static postProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint, response: NetworkResponse): void {\r\n if (ThrottlingUtils.checkResponseStatus(response) || ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n const thumbprintValue: ThrottlingEntity = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror\r\n };\r\n cacheManager.setThrottlingCache(\r\n ThrottlingUtils.generateThrottlingStorageKey(thumbprint),\r\n thumbprintValue\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n static checkResponseStatus(response: NetworkResponse): boolean {\r\n return response.status === 429 || response.status >= 500 && response.status < 600;\r\n }\r\n\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n static checkResponseForRetryAfter(response: NetworkResponse): boolean {\r\n if (response.headers) {\r\n return response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && (response.status < 200 || response.status >= 300);\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n static calculateThrottleTime(throttleTime: number): number {\r\n if(throttleTime <= 0) {\r\n throttleTime = 0;\r\n }\r\n const currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(\r\n currentSeconds + (throttleTime || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS),\r\n currentSeconds + ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS\r\n ) * 1000);\r\n }\r\n\r\n static removeThrottle(cacheManager: CacheManager, clientId: string, authority: string, scopes: Array, homeAccountIdentifier?: string): boolean {\r\n const thumbprint: RequestThumbprint = {\r\n clientId,\r\n authority,\r\n scopes,\r\n homeAccountIdentifier\r\n };\r\n\r\n const key = this.generateThrottlingStorageKey(thumbprint);\r\n return cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule, NetworkRequestOptions } from \"./INetworkModule\";\r\nimport { RequestThumbprint } from \"./RequestThumbprint\";\r\nimport { ThrottlingUtils } from \"./ThrottlingUtils\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { AuthError } from \"../error/AuthError\";\r\n\r\nexport type NetworkResponse = {\r\n headers: Record;\r\n body: T;\r\n status: number;\r\n};\r\n\r\nexport class NetworkManager {\r\n private networkClient: INetworkModule;\r\n private cacheManager: CacheManager;\r\n\r\n constructor(networkClient: INetworkModule, cacheManager: CacheManager) {\r\n this.networkClient = networkClient;\r\n this.cacheManager = cacheManager;\r\n }\r\n\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint\r\n * @param tokenEndpoint\r\n * @param options\r\n */\r\n async sendPostRequest(thumbprint: RequestThumbprint, tokenEndpoint: string, options: NetworkRequestOptions): Promise> {\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\r\n\r\n let response;\r\n try {\r\n response = await this.networkClient.sendPostRequestAsync(tokenEndpoint, options);\r\n } catch (e) {\r\n if (e instanceof AuthError) {\r\n throw e;\r\n } else {\r\n throw ClientAuthError.createNetworkError(tokenEndpoint, e);\r\n }\r\n }\r\n\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\r\n\r\n return response;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientConfiguration, buildClientConfiguration, CommonClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { NetworkManager, NetworkResponse } from \"../network/NetworkManager\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { Logger } from \"../logger/Logger\";\r\nimport { AADServerParamKeys, Constants, HeaderNames } from \"../utils/Constants\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\nimport { version, name } from \"../packageMetadata\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n */\r\nexport abstract class BaseClient {\r\n // Logger object\r\n public logger: Logger;\r\n\r\n // Application config\r\n protected config: CommonClientConfiguration;\r\n\r\n // Crypto Interface\r\n protected cryptoUtils: ICrypto;\r\n\r\n // Storage Interface\r\n protected cacheManager: CacheManager;\r\n\r\n // Network Interface\r\n protected networkClient: INetworkModule;\r\n\r\n // Server Telemetry Manager\r\n protected serverTelemetryManager: ServerTelemetryManager | null;\r\n\r\n // Network Manager\r\n protected networkManager: NetworkManager;\r\n\r\n // Default authority object\r\n public authority: Authority;\r\n\r\n protected constructor(configuration: ClientConfiguration) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name, version);\r\n\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n\r\n // Set the NetworkManager\r\n this.networkManager = new NetworkManager(this.networkClient, this.cacheManager);\r\n\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n }\r\n\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n protected createDefaultTokenRequestHeaders(): Record {\r\n const headers = this.createDefaultLibraryHeaders();\r\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\r\n headers[HeaderNames.X_MS_LIB_CAPABILITY] = HeaderNames.X_MS_LIB_CAPABILITY_VALUE;\r\n\r\n if (this.serverTelemetryManager) {\r\n headers[HeaderNames.X_CLIENT_CURR_TELEM] = this.serverTelemetryManager.generateCurrentRequestHeaderValue();\r\n headers[HeaderNames.X_CLIENT_LAST_TELEM] = this.serverTelemetryManager.generateLastRequestHeaderValue();\r\n }\r\n\r\n return headers;\r\n }\r\n\r\n /**\r\n * addLibraryData\r\n */\r\n protected createDefaultLibraryHeaders(): Record {\r\n const headers: Record = {};\r\n\r\n // client info headers\r\n headers[AADServerParamKeys.X_CLIENT_SKU] = this.config.libraryInfo.sku;\r\n headers[AADServerParamKeys.X_CLIENT_VER] = this.config.libraryInfo.version;\r\n headers[AADServerParamKeys.X_CLIENT_OS] = this.config.libraryInfo.os;\r\n headers[AADServerParamKeys.X_CLIENT_CPU] = this.config.libraryInfo.cpu;\r\n\r\n return headers;\r\n }\r\n\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n protected async executePostToTokenEndpoint(tokenEndpoint: string, queryString: string, headers: Record, thumbprint: RequestThumbprint): Promise> {\r\n const response = await this.networkManager.sendPostRequest(\r\n thumbprint,\r\n tokenEndpoint,\r\n { body: queryString, headers: headers }\r\n );\r\n\r\n if (this.config.serverTelemetryManager && response.status < 500 && response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n\r\n return response;\r\n }\r\n\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority \r\n */\r\n updateAuthority(updatedAuthority: Authority): void {\r\n if (!updatedAuthority.discoveryComplete()) {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Updated authority has not completed endpoint discovery.\");\r\n }\r\n this.authority = updatedAuthority;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { PromptValue, CodeChallengeMethodValues} from \"../utils/Constants\";\r\nimport { StringDict } from \"../utils/MsalTypes\";\r\n\r\n/**\r\n * Validates server consumable params from the \"request\" objects\r\n */\r\nexport class RequestValidator {\r\n\r\n /**\r\n * Utility to check if the `redirectUri` in the request is a non-null value\r\n * @param redirectUri\r\n */\r\n static validateRedirectUri(redirectUri: string) : void {\r\n if (StringUtils.isEmpty(redirectUri)) {\r\n throw ClientConfigurationError.createRedirectUriEmptyError();\r\n }\r\n }\r\n\r\n /**\r\n * Utility to validate prompt sent by the user in the request\r\n * @param prompt\r\n */\r\n static validatePrompt(prompt: string) : void {\r\n if (\r\n [\r\n PromptValue.LOGIN,\r\n PromptValue.SELECT_ACCOUNT,\r\n PromptValue.CONSENT,\r\n PromptValue.NONE\r\n ].indexOf(prompt) < 0\r\n ) {\r\n throw ClientConfigurationError.createInvalidPromptError(prompt);\r\n }\r\n }\r\n\r\n static validateClaims(claims: string) : void {\r\n try {\r\n JSON.parse(claims);\r\n } catch(e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n }\r\n\r\n /**\r\n * Utility to validate code_challenge and code_challenge_method\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n static validateCodeChallengeParams(codeChallenge: string, codeChallengeMethod: string) : void {\r\n if (StringUtils.isEmpty(codeChallenge) || StringUtils.isEmpty(codeChallengeMethod)) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n } else {\r\n this.validateCodeChallengeMethod(codeChallengeMethod);\r\n }\r\n }\r\n\r\n /**\r\n * Utility to validate code_challenge_method\r\n * @param codeChallengeMethod\r\n */\r\n static validateCodeChallengeMethod(codeChallengeMethod: string) : void {\r\n if (\r\n [\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256\r\n ].indexOf(codeChallengeMethod) < 0\r\n ) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeMethodError();\r\n }\r\n }\r\n\r\n /**\r\n * Removes unnecessary or duplicate query parameters from extraQueryParameters\r\n * @param request\r\n */\r\n static sanitizeEQParams(eQParams: StringDict, queryParams: Map) : StringDict {\r\n if (!eQParams) {\r\n return {};\r\n }\r\n\r\n // Remove any query parameters already included in SSO params\r\n queryParams.forEach((value, key) => {\r\n if (eQParams[key]) {\r\n delete eQParams[key];\r\n }\r\n });\r\n\r\n return eQParams;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AADServerParamKeys, Constants, ResponseMode, SSOTypes, ClientInfo, AuthenticationScheme, ClaimsRequestKeys, PasswordGrantConstants, OIDC_DEFAULT_SCOPES} from \"../utils/Constants\";\r\nimport { ScopeSet } from \"./ScopeSet\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { StringDict } from \"../utils/MsalTypes\";\r\nimport { RequestValidator } from \"./RequestValidator\";\r\nimport { LibraryInfo } from \"../config/ClientConfiguration\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\n\r\nexport class RequestParameterBuilder {\r\n\r\n private parameters: Map;\r\n\r\n constructor() {\r\n this.parameters = new Map();\r\n }\r\n\r\n /**\r\n * add response_type = code\r\n */\r\n addResponseTypeCode(): void {\r\n this.parameters.set(\r\n AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE)\r\n );\r\n }\r\n\r\n /**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\n addResponseMode(responseMode?: ResponseMode): void {\r\n this.parameters.set(\r\n AADServerParamKeys.RESPONSE_MODE,\r\n encodeURIComponent((responseMode) ? responseMode : ResponseMode.QUERY)\r\n );\r\n }\r\n\r\n /**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\n addScopes(scopes: string[], addOidcScopes: boolean = true): void {\r\n const requestScopes = addOidcScopes ? [...scopes || [], ...OIDC_DEFAULT_SCOPES] : scopes || [];\r\n const scopeSet = new ScopeSet(requestScopes);\r\n this.parameters.set(AADServerParamKeys.SCOPE, encodeURIComponent(scopeSet.printScopes()));\r\n }\r\n\r\n /**\r\n * add clientId\r\n * @param clientId\r\n */\r\n addClientId(clientId: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ID, encodeURIComponent(clientId));\r\n }\r\n\r\n /**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\n addRedirectUri(redirectUri: string): void {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.REDIRECT_URI, encodeURIComponent(redirectUri));\r\n }\r\n\r\n /**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\n addPostLogoutRedirectUri(redirectUri: string): void {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.POST_LOGOUT_URI, encodeURIComponent(redirectUri));\r\n }\r\n\r\n /**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\n addIdTokenHint(idTokenHint: string): void {\r\n this.parameters.set(AADServerParamKeys.ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\r\n }\r\n\r\n /**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\n addDomainHint(domainHint: string): void {\r\n this.parameters.set(SSOTypes.DOMAIN_HINT, encodeURIComponent(domainHint));\r\n }\r\n\r\n /**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\n addLoginHint(loginHint: string): void {\r\n this.parameters.set(SSOTypes.LOGIN_HINT, encodeURIComponent(loginHint));\r\n }\r\n\r\n /**\r\n * add sid\r\n * @param sid\r\n */\r\n addSid(sid: string): void {\r\n this.parameters.set(SSOTypes.SID, encodeURIComponent(sid));\r\n }\r\n\r\n /**\r\n * add claims\r\n * @param claims\r\n */\r\n addClaims(claims?: string, clientCapabilities?: Array): void {\r\n const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n RequestValidator.validateClaims(mergedClaims);\r\n this.parameters.set(AADServerParamKeys.CLAIMS, encodeURIComponent(mergedClaims));\r\n }\r\n\r\n /**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\n addCorrelationId(correlationId: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\r\n }\r\n\r\n /**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\n addLibraryInfo(libraryInfo: LibraryInfo): void {\r\n // Telemetry Info\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku);\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_VER, libraryInfo.version);\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os);\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CPU, libraryInfo.cpu);\r\n }\r\n\r\n /**\r\n * add prompt\r\n * @param prompt\r\n */\r\n addPrompt(prompt: string): void {\r\n RequestValidator.validatePrompt(prompt);\r\n this.parameters.set(`${AADServerParamKeys.PROMPT}`, encodeURIComponent(prompt));\r\n }\r\n\r\n /**\r\n * add state\r\n * @param state\r\n */\r\n addState(state: string): void {\r\n if (!StringUtils.isEmpty(state)) {\r\n this.parameters.set(AADServerParamKeys.STATE, encodeURIComponent(state));\r\n }\r\n }\r\n\r\n /**\r\n * add nonce\r\n * @param nonce\r\n */\r\n addNonce(nonce: string): void {\r\n this.parameters.set(AADServerParamKeys.NONCE, encodeURIComponent(nonce));\r\n }\r\n\r\n /**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n addCodeChallengeParams(\r\n codeChallenge: string,\r\n codeChallengeMethod: string\r\n ): void {\r\n RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\r\n if (codeChallenge && codeChallengeMethod) {\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE, encodeURIComponent(codeChallenge));\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\r\n } else {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n }\r\n }\r\n\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n addAuthorizationCode(code: string): void {\r\n this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code));\r\n }\r\n\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n addDeviceCode(code: string): void {\r\n this.parameters.set(AADServerParamKeys.DEVICE_CODE, encodeURIComponent(code));\r\n }\r\n\r\n /**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\n addRefreshToken(refreshToken: string): void {\r\n this.parameters.set(AADServerParamKeys.REFRESH_TOKEN, encodeURIComponent(refreshToken));\r\n }\r\n\r\n /**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\n addCodeVerifier(codeVerifier: string): void {\r\n this.parameters.set(AADServerParamKeys.CODE_VERIFIER, encodeURIComponent(codeVerifier));\r\n }\r\n\r\n /**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\n addClientSecret(clientSecret: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_SECRET, encodeURIComponent(clientSecret));\r\n }\r\n\r\n /**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n addClientAssertion(clientAssertion: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\r\n }\r\n\r\n /**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\n addClientAssertionType(clientAssertionType: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\r\n }\r\n\r\n /**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n addOboAssertion(oboAssertion: string): void {\r\n this.parameters.set(AADServerParamKeys.OBO_ASSERTION, encodeURIComponent(oboAssertion));\r\n }\r\n\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n addRequestTokenUse(tokenUse: string): void {\r\n this.parameters.set(AADServerParamKeys.REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\r\n }\r\n\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n addGrantType(grantType: string): void {\r\n this.parameters.set(AADServerParamKeys.GRANT_TYPE, encodeURIComponent(grantType));\r\n }\r\n\r\n /**\r\n * add client info\r\n *\r\n */\r\n addClientInfo(): void {\r\n this.parameters.set(ClientInfo, \"1\");\r\n }\r\n\r\n /**\r\n * add extraQueryParams\r\n * @param eQparams\r\n */\r\n addExtraQueryParameters(eQparams: StringDict): void {\r\n RequestValidator.sanitizeEQParams(eQparams, this.parameters);\r\n Object.keys(eQparams).forEach((key) => {\r\n this.parameters.set(key, eQparams[key]);\r\n });\r\n }\r\n\r\n addClientCapabilitiesToClaims(claims?: string, clientCapabilities?: Array): string {\r\n let mergedClaims: object;\r\n\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n } else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n } catch(e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n }\r\n\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)){\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\r\n values: clientCapabilities\r\n };\r\n }\r\n\r\n return JSON.stringify(mergedClaims);\r\n }\r\n\r\n /**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\n addUsername(username: string): void {\r\n this.parameters.set(PasswordGrantConstants.username, username);\r\n }\r\n\r\n /**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\n addPassword(password: string): void {\r\n this.parameters.set(PasswordGrantConstants.password, password);\r\n }\r\n\r\n /**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\n addPopToken(cnfString: string): void {\r\n if (!StringUtils.isEmpty(cnfString)) {\r\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.POP);\r\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(cnfString));\r\n }\r\n }\r\n\r\n /**\r\n * Utility to create a URL from the params map\r\n */\r\n createQueryString(): string {\r\n const queryParameterArray: Array = new Array();\r\n\r\n this.parameters.forEach((value, key) => {\r\n queryParameterArray.push(`${key}=${value}`);\r\n });\r\n\r\n return queryParameterArray.join(\"&\");\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CredentialEntity } from \"./CredentialEntity\";\r\nimport { CredentialType } from \"../../utils/Constants\";\r\n\r\n/**\r\n * ID_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-idtoken-clientId-contoso.com-\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * }\r\n */\r\nexport class IdTokenEntity extends CredentialEntity {\r\n realm: string;\r\n\r\n /**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n static createIdTokenEntity(\r\n homeAccountId: string,\r\n environment: string,\r\n idToken: string,\r\n clientId: string,\r\n tenantId: string,\r\n oboAssertion?: string\r\n ): IdTokenEntity {\r\n const idTokenEntity = new IdTokenEntity();\r\n\r\n idTokenEntity.credentialType = CredentialType.ID_TOKEN;\r\n idTokenEntity.homeAccountId = homeAccountId;\r\n idTokenEntity.environment = environment;\r\n idTokenEntity.clientId = clientId;\r\n idTokenEntity.secret = idToken;\r\n idTokenEntity.realm = tenantId;\r\n idTokenEntity.oboAssertion = oboAssertion;\r\n\r\n return idTokenEntity;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isIdTokenEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Utility class which exposes functions for managing date and time operations.\r\n */\r\nexport class TimeUtils {\r\n\r\n /**\r\n * return the current time in Unix time (seconds).\r\n */\r\n static nowSeconds(): number {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n }\r\n \r\n /**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\n static isTokenExpired(expiresOn: string, offset: number): boolean {\r\n // check for access token expiry\r\n const expirationSec = Number(expiresOn) || 0;\r\n const offsetCurrentTimeSec = TimeUtils.nowSeconds() + offset; \r\n\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return (offsetCurrentTimeSec > expirationSec);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CredentialEntity } from \"./CredentialEntity\";\r\nimport { CredentialType, AuthenticationScheme } from \"../../utils/Constants\";\r\nimport { TimeUtils } from \"../../utils/TimeUtils\";\r\nimport { StringUtils } from \"../../utils/StringUtils\";\r\n\r\n/**\r\n * ACCESS_TOKEN Credential Type\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-accesstoken-clientId-contoso.com-user.read\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * cachedAt: Absolute device time when entry was created in the cache.\r\n * expiresOn: Token expiry time, calculated based on current UTC time in seconds. Represented as a string.\r\n * extendedExpiresOn: Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds.\r\n * keyId: used for POP and SSH tokenTypes\r\n * tokenType: Type of the token issued. Usually \"Bearer\"\r\n * }\r\n */\r\nexport class AccessTokenEntity extends CredentialEntity {\r\n realm: string;\r\n target: string;\r\n cachedAt: string;\r\n expiresOn: string;\r\n extendedExpiresOn?: string;\r\n refreshOn?: string;\r\n keyId?: string; // for POP and SSH tokenTypes\r\n tokenType?: string;\r\n\r\n /**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\n static createAccessTokenEntity(\r\n homeAccountId: string,\r\n environment: string,\r\n accessToken: string,\r\n clientId: string,\r\n tenantId: string,\r\n scopes: string,\r\n expiresOn: number,\r\n extExpiresOn: number,\r\n tokenType?: string,\r\n oboAssertion?: string\r\n ): AccessTokenEntity {\r\n const atEntity: AccessTokenEntity = new AccessTokenEntity();\r\n\r\n atEntity.homeAccountId = homeAccountId;\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN;\r\n atEntity.secret = accessToken;\r\n\r\n const currentTime = TimeUtils.nowSeconds();\r\n atEntity.cachedAt = currentTime.toString();\r\n\r\n /*\r\n * Token expiry time.\r\n * This value should be  calculated based on the current UTC time measured locally and the value  expires_in Represented as a string in JSON.\r\n */\r\n atEntity.expiresOn = expiresOn.toString();\r\n atEntity.extendedExpiresOn = extExpiresOn.toString();\r\n\r\n atEntity.environment = environment;\r\n atEntity.clientId = clientId;\r\n atEntity.realm = tenantId;\r\n atEntity.target = scopes;\r\n atEntity.oboAssertion = oboAssertion;\r\n\r\n atEntity.tokenType = StringUtils.isEmpty(tokenType) ? AuthenticationScheme.BEARER : tokenType;\r\n return atEntity;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAccessTokenEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CredentialEntity } from \"./CredentialEntity\";\r\nimport { CredentialType } from \"../../utils/Constants\";\r\n\r\n/**\r\n * REFRESH_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-refreshtoken-clientId--\r\n *\r\n * Value:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * }\r\n */\r\nexport class RefreshTokenEntity extends CredentialEntity {\r\n familyId?: string;\r\n\r\n /**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n static createRefreshTokenEntity(\r\n homeAccountId: string,\r\n environment: string,\r\n refreshToken: string,\r\n clientId: string,\r\n familyId?: string,\r\n oboAssertion?: string\r\n ): RefreshTokenEntity {\r\n const rtEntity = new RefreshTokenEntity();\r\n\r\n rtEntity.clientId = clientId;\r\n rtEntity.credentialType = CredentialType.REFRESH_TOKEN;\r\n rtEntity.environment = environment;\r\n rtEntity.homeAccountId = homeAccountId;\r\n rtEntity.secret = refreshToken;\r\n rtEntity.oboAssertion = oboAssertion;\r\n\r\n if (familyId)\r\n rtEntity.familyId = familyId;\r\n\r\n return rtEntity;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isRefreshTokenEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ServerError } from \"./ServerError\";\r\n\r\n/**\r\n * InteractionRequiredAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const InteractionRequiredAuthErrorMessage = [\r\n \"interaction_required\",\r\n \"consent_required\",\r\n \"login_required\"\r\n];\r\n\r\nexport const InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\"\r\n];\r\n\r\n/**\r\n * Error thrown when user interaction is required at the auth server.\r\n */\r\nexport class InteractionRequiredAuthError extends ServerError {\r\n\r\n constructor(errorCode?: string, errorMessage?: string, subError?: string) {\r\n super(errorCode, errorMessage, subError);\r\n this.name = \"InteractionRequiredAuthError\";\r\n\r\n Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\r\n }\r\n\r\n static isInteractionRequiredError(errorCode?: string, errorString?: string, subError?: string) : boolean {\r\n const isInteractionRequiredErrorCode = !!errorCode && InteractionRequiredAuthErrorMessage.indexOf(errorCode) > -1;\r\n const isInteractionRequiredSubError = !!subError && InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n const isInteractionRequiredErrorDesc = !!errorString && InteractionRequiredAuthErrorMessage.some((irErrorCode) => {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n\r\n return isInteractionRequiredErrorCode || isInteractionRequiredErrorDesc || isInteractionRequiredSubError;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { IdTokenEntity } from \"./IdTokenEntity\";\r\nimport { AccessTokenEntity } from \"./AccessTokenEntity\";\r\nimport { RefreshTokenEntity } from \"./RefreshTokenEntity\";\r\nimport { AccountEntity } from \"./AccountEntity\";\r\nimport { AppMetadataEntity } from \"./AppMetadataEntity\";\r\n\r\nexport class CacheRecord {\r\n account: AccountEntity | null;\r\n idToken: IdTokenEntity | null;\r\n accessToken: AccessTokenEntity | null;\r\n refreshToken: RefreshTokenEntity | null;\r\n appMetadata: AppMetadataEntity | null;\r\n\r\n constructor(accountEntity?: AccountEntity | null, idTokenEntity?: IdTokenEntity | null, accessTokenEntity?: AccessTokenEntity | null, refreshTokenEntity?: RefreshTokenEntity | null, appMetadataEntity?: AppMetadataEntity | null) {\r\n this.account = accountEntity || null;\r\n this.idToken = idTokenEntity || null;\r\n this.accessToken = accessTokenEntity || null;\r\n this.refreshToken = refreshTokenEntity || null;\r\n this.appMetadata = appMetadataEntity || null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StringUtils } from \"./StringUtils\";\r\nimport { Constants } from \"./Constants\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n\r\n/**\r\n * Type which defines the object that is stringified, encoded and sent in the state value.\r\n * Contains the following:\r\n * - id - unique identifier for this request\r\n * - ts - timestamp for the time the request was made. Used to ensure that token expiration is not calculated incorrectly.\r\n * - platformState - string value sent from the platform.\r\n */\r\nexport type LibraryStateObject = {\r\n id: string,\r\n meta?: Record\r\n};\r\n\r\n/**\r\n * Type which defines the stringified and encoded object sent to the service in the authorize request.\r\n */\r\nexport type RequestStateObject = {\r\n userRequestState: string,\r\n libraryState: LibraryStateObject\r\n};\r\n\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nexport class ProtocolUtils {\r\n\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState \r\n * @param randomGuid \r\n */\r\n static setRequestState(cryptoObj: ICrypto, userState?: string, meta?: Record): string {\r\n const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return !StringUtils.isEmpty(userState) ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` : libraryState;\r\n }\r\n\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid \r\n * @param cryptoObj \r\n */\r\n static generateLibraryState(cryptoObj: ICrypto, meta?: Record): string {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"generateLibraryState\");\r\n }\r\n\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n const stateObj: LibraryStateObject = {\r\n id: cryptoObj.createNewGuid()\r\n };\r\n\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n\r\n const stateString = JSON.stringify(stateObj);\r\n\r\n return cryptoObj.base64Encode(stateString);\r\n }\r\n\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state \r\n * @param cryptoObj \r\n */\r\n static parseRequestState(cryptoObj: ICrypto, state: string): RequestStateObject {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"parseRequestState\");\r\n }\r\n\r\n if (StringUtils.isEmpty(state)) {\r\n throw ClientAuthError.createInvalidStateError(state, \"Null, undefined or empty state\");\r\n }\r\n\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n const splitState = decodeURIComponent(state).split(Constants.RESOURCE_DELIM);\r\n const libraryState = splitState[0];\r\n const userState = splitState.length > 1 ? splitState.slice(1).join(Constants.RESOURCE_DELIM) : \"\";\r\n const libraryStateString = cryptoObj.base64Decode(libraryState);\r\n const libraryStateObj = JSON.parse(libraryStateString) as LibraryStateObject;\r\n return {\r\n userRequestState: !StringUtils.isEmpty(userState) ? userState : \"\",\r\n libraryState: libraryStateObj\r\n };\r\n } catch(e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { IUri } from \"./IUri\";\r\nimport { AADAuthorityConstants, Constants } from \"../utils/Constants\";\r\n\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nexport class UrlString {\r\n\r\n // internal url string field\r\n private _urlString: string;\r\n public get urlString(): string {\r\n return this._urlString;\r\n }\r\n \r\n constructor(url: string) {\r\n this._urlString = url;\r\n if (StringUtils.isEmpty(this._urlString)) {\r\n // Throws error if url is empty\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n\r\n if (StringUtils.isEmpty(this.getHash())) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url \r\n */\r\n static canonicalizeUri(url: string): string {\r\n if (url) {\r\n url = url.toLowerCase();\r\n\r\n if (StringUtils.endsWith(url, \"?\")) {\r\n url = url.slice(0, -1);\r\n } else if (StringUtils.endsWith(url, \"?/\")) {\r\n url = url.slice(0, -2);\r\n }\r\n\r\n if (!StringUtils.endsWith(url, \"/\")) {\r\n url += \"/\";\r\n }\r\n }\r\n\r\n return url;\r\n }\r\n\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n validateAsUri(): void {\r\n // Attempts to parse url for uri components\r\n let components;\r\n try {\r\n components = this.getUrlComponents();\r\n } catch (e) {\r\n throw ClientConfigurationError.createUrlParseError(e);\r\n }\r\n\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${this.urlString}`);\r\n }\r\n\r\n // Throw error if uri is insecure.\r\n if(!components.Protocol || components.Protocol.toLowerCase() !== \"https:\") {\r\n throw ClientConfigurationError.createInsecureAuthorityUriError(this.urlString);\r\n }\r\n }\r\n\r\n /**\r\n * Function to remove query string params from url. Returns the new url.\r\n * @param url\r\n * @param name\r\n */\r\n urlRemoveQueryStringParameter(name: string): string {\r\n let regex = new RegExp(\"(\\\\&\" + name + \"=)[^\\&]+\");\r\n this._urlString = this.urlString.replace(regex, \"\");\r\n // name=value&\r\n regex = new RegExp(\"(\" + name + \"=)[^\\&]+&\");\r\n this._urlString = this.urlString.replace(regex, \"\");\r\n // name=value\r\n regex = new RegExp(\"(\" + name + \"=)[^\\&]+\");\r\n this._urlString = this.urlString.replace(regex, \"\");\r\n return this.urlString;\r\n }\r\n\r\n static removeHashFromUrl(url: string): string {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n }\r\n\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n replaceTenantPath(tenantId: string): UrlString {\r\n const urlObject = this.getUrlComponents();\r\n const pathArray = urlObject.PathSegments;\r\n if (tenantId && (pathArray.length !== 0 && (pathArray[0] === AADAuthorityConstants.COMMON || pathArray[0] === AADAuthorityConstants.ORGANIZATIONS))) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n }\r\n\r\n /**\r\n * Returns the anchor part(#) of the URL\r\n */\r\n getHash(): string {\r\n return UrlString.parseHash(this.urlString);\r\n }\r\n\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n getUrlComponents(): IUri {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n const regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n\r\n // If url string does not match regEx, we throw an error\r\n const match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${this.urlString}`);\r\n }\r\n\r\n // Url component object\r\n const urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7]\r\n } as IUri;\r\n\r\n let pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n\r\n if (!StringUtils.isEmpty(urlComponents.QueryString) && urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length-1);\r\n }\r\n return urlComponents;\r\n }\r\n\r\n static getDomainFromUrl(url: string): string {\r\n const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n\r\n const match = url.match(regEx);\r\n\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${url}`);\r\n }\r\n\r\n return match[2];\r\n }\r\n\r\n static getAbsoluteUrl(relativeUrl: string, baseUrl: string): string {\r\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\r\n const url = new UrlString(baseUrl);\r\n const baseComponents = url.getUrlComponents();\r\n\r\n return baseComponents.Protocol + \"//\" + baseComponents.HostNameAndPort + relativeUrl;\r\n }\r\n \r\n return relativeUrl;\r\n }\r\n \r\n /**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString \r\n */\r\n static parseHash(hashString: string): string {\r\n const hashIndex1 = hashString.indexOf(\"#\");\r\n const hashIndex2 = hashString.indexOf(\"#/\");\r\n if (hashIndex2 > -1) {\r\n return hashString.substring(hashIndex2 + 2);\r\n } else if (hashIndex1 > -1) {\r\n return hashString.substring(hashIndex1 + 1);\r\n }\r\n return \"\";\r\n }\r\n\r\n static constructAuthorityUriFromObject(urlObject: IUri): UrlString {\r\n return new UrlString(urlObject.Protocol + \"//\" + urlObject.HostNameAndPort + \"/\" + urlObject.PathSegments.join(\"/\"));\r\n }\r\n\r\n /**\r\n * Returns URL hash as server auth code response object.\r\n */\r\n static getDeserializedHash(hash: string): ServerAuthorizationCodeResponse {\r\n // Check if given hash is empty\r\n if (StringUtils.isEmpty(hash)) {\r\n return {};\r\n }\r\n // Strip the # symbol if present\r\n const parsedHash = UrlString.parseHash(hash);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n const deserializedHash: ServerAuthorizationCodeResponse = StringUtils.queryStringToObject(StringUtils.isEmpty(parsedHash) ? hash : parsedHash);\r\n // Check if deserialization didn't work\r\n if (!deserializedHash) {\r\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedHash));\r\n }\r\n return deserializedHash;\r\n }\r\n\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n */\r\n static hashContainsKnownProperties(hash: string): boolean {\r\n if (StringUtils.isEmpty(hash)) {\r\n return false;\r\n }\r\n\r\n const parameters: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\r\n return !!(\r\n parameters.code ||\r\n parameters.error_description ||\r\n parameters.error ||\r\n parameters.state\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nexport enum ProtocolMode {\r\n AAD = \"AAD\",\r\n OIDC = \"OIDC\"\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { APP_METADATA, Separators } from \"../../utils/Constants\";\r\n\r\n/**\r\n * APP_METADATA Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: appmetadata--\r\n *\r\n * Value:\r\n * {\r\n * clientId: client ID of the application\r\n * environment: entity that issued the token, represented as a full host\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * }\r\n */\r\nexport class AppMetadataEntity {\r\n clientId: string;\r\n environment: string;\r\n familyId?: string;\r\n\r\n /**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\r\n */\r\n generateAppMetadataKey(): string {\r\n return AppMetadataEntity.generateAppMetadataCacheKey(this.environment, this.clientId);\r\n }\r\n\r\n /**\r\n * Generate AppMetadata Cache Key\r\n */\r\n static generateAppMetadataCacheKey(environment: string, clientId: string): string {\r\n const appMetaDataKeyArray: Array = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Creates AppMetadataEntity\r\n * @param clientId\r\n * @param environment\r\n * @param familyId\r\n */\r\n static createAppMetadataEntity(clientId: string, environment: string, familyId?: string): AppMetadataEntity {\r\n const appMetadata = new AppMetadataEntity();\r\n\r\n appMetadata.clientId = clientId;\r\n appMetadata.environment = environment;\r\n if (familyId) {\r\n appMetadata.familyId = familyId;\r\n }\r\n\r\n return appMetadata;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAppMetadataEntity(key: string, entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\")\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ISerializableTokenCache } from \"../interface/ISerializableTokenCache\";\r\n\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */export class TokenCacheContext {\r\n /**\r\n * boolean indicating cache change\r\n */\r\n hasChanged: boolean;\r\n /**\r\n * serializable token cache interface\r\n */\r\n cache: ISerializableTokenCache;\r\n\r\n constructor(tokenCache: ISerializableTokenCache, hasChanged: boolean) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get cacheHasChanged(): boolean {\r\n return this.hasChanged;\r\n }\r\n\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get tokenCache(): ISerializableTokenCache {\r\n return this.cache;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ServerAuthorizationTokenResponse } from \"./ServerAuthorizationTokenResponse\";\r\nimport { buildClientInfo} from \"../account/ClientInfo\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ServerAuthorizationCodeResponse } from \"./ServerAuthorizationCodeResponse\";\r\nimport { Logger } from \"../logger/Logger\";\r\nimport { ServerError } from \"../error/ServerError\";\r\nimport { AuthToken } from \"../account/AuthToken\";\r\nimport { ScopeSet } from \"../request/ScopeSet\";\r\nimport { AuthenticationResult } from \"./AuthenticationResult\";\r\nimport { AccountEntity } from \"../cache/entities/AccountEntity\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { AuthorityType } from \"../authority/AuthorityType\";\r\nimport { IdTokenEntity } from \"../cache/entities/IdTokenEntity\";\r\nimport { AccessTokenEntity } from \"../cache/entities/AccessTokenEntity\";\r\nimport { RefreshTokenEntity } from \"../cache/entities/RefreshTokenEntity\";\r\nimport { InteractionRequiredAuthError } from \"../error/InteractionRequiredAuthError\";\r\nimport { CacheRecord } from \"../cache/entities/CacheRecord\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { ProtocolUtils, RequestStateObject } from \"../utils/ProtocolUtils\";\r\nimport { AuthenticationScheme, Constants, THE_FAMILY_ID } from \"../utils/Constants\";\r\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\r\nimport { AppMetadataEntity } from \"../cache/entities/AppMetadataEntity\";\r\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin\";\r\nimport { TokenCacheContext } from \"../cache/persistence/TokenCacheContext\";\r\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache\";\r\nimport { AuthorizationCodePayload } from \"./AuthorizationCodePayload\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\r\n\r\n/**\r\n * Class that handles response parsing.\r\n */\r\nexport class ResponseHandler {\r\n private clientId: string;\r\n private cacheStorage: CacheManager;\r\n private cryptoObj: ICrypto;\r\n private logger: Logger;\r\n private homeAccountIdentifier: string;\r\n private serializableCache: ISerializableTokenCache | null;\r\n private persistencePlugin: ICachePlugin | null;\r\n\r\n constructor(clientId: string, cacheStorage: CacheManager, cryptoObj: ICrypto, logger: Logger, serializableCache: ISerializableTokenCache | null, persistencePlugin: ICachePlugin | null) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n }\r\n\r\n /**\r\n * Function which validates server authorization code response.\r\n * @param serverResponseHash\r\n * @param cachedState\r\n * @param cryptoObj\r\n */\r\n validateServerAuthorizationCodeResponse(serverResponseHash: ServerAuthorizationCodeResponse, cachedState: string, cryptoObj: ICrypto): void {\r\n\r\n if (!serverResponseHash.state || !cachedState) {\r\n throw !serverResponseHash.state ? ClientAuthError.createStateNotFoundError(\"Server State\") : ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n\r\n if (decodeURIComponent(serverResponseHash.state) !== decodeURIComponent(cachedState)) {\r\n throw ClientAuthError.createStateMismatchError();\r\n }\r\n\r\n // Check for error\r\n if (serverResponseHash.error || serverResponseHash.error_description || serverResponseHash.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponseHash.error, serverResponseHash.error_description, serverResponseHash.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\r\n }\r\n\r\n throw new ServerError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\r\n }\r\n\r\n if (serverResponseHash.client_info) {\r\n buildClientInfo(serverResponseHash.client_info, cryptoObj);\r\n }\r\n }\r\n\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n */\r\n validateTokenResponse(serverResponse: ServerAuthorizationTokenResponse): void {\r\n // Check for error\r\n if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror);\r\n }\r\n\r\n const errString = `${serverResponse.error_codes} - [${serverResponse.timestamp}]: ${serverResponse.error_description} - Correlation ID: ${serverResponse.correlation_id} - Trace ID: ${serverResponse.trace_id}`;\r\n throw new ServerError(serverResponse.error, errString);\r\n }\r\n }\r\n\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n async handleServerTokenResponse(\r\n serverTokenResponse: ServerAuthorizationTokenResponse,\r\n authority: Authority,\r\n reqTimestamp: number,\r\n request: BaseAuthRequest,\r\n authCodePayload?: AuthorizationCodePayload,\r\n oboAssertion?: string,\r\n handlingRefreshTokenResponse?: boolean): Promise {\r\n\r\n // create an idToken object (not entity)\r\n let idTokenObj: AuthToken | undefined;\r\n if (serverTokenResponse.id_token) {\r\n idTokenObj = new AuthToken(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj);\r\n \r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && !StringUtils.isEmpty(authCodePayload.nonce)) {\r\n if (idTokenObj.claims.nonce !== authCodePayload.nonce) {\r\n throw ClientAuthError.createNonceMismatchError();\r\n }\r\n }\r\n }\r\n\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenObj);\r\n\r\n // save the response tokens\r\n let requestStateObj: RequestStateObject | undefined;\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n\r\n const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, idTokenObj, request.scopes, oboAssertion, authCodePayload);\r\n let cacheContext;\r\n try {\r\n if (this.persistencePlugin && this.serializableCache) {\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n await this.persistencePlugin.beforeCacheAccess(cacheContext);\r\n }\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal.\r\n */\r\n if (handlingRefreshTokenResponse && cacheRecord.account) {\r\n const key = cacheRecord.account.generateAccountKey();\r\n const account = this.cacheStorage.getAccount(key);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj);\r\n }\r\n }\r\n this.cacheStorage.saveCacheRecord(cacheRecord);\r\n } finally {\r\n if (this.persistencePlugin && this.serializableCache && cacheContext) {\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n await this.persistencePlugin.afterCacheAccess(cacheContext);\r\n }\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj);\r\n }\r\n\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n private generateCacheRecord(serverTokenResponse: ServerAuthorizationTokenResponse, authority: Authority, reqTimestamp: number, idTokenObj?: AuthToken, requestScopes?: string[], oboAssertion?: string, authCodePayload?: AuthorizationCodePayload): CacheRecord {\r\n const env = authority.getPreferredCache();\r\n if (StringUtils.isEmpty(env)) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n\r\n // IdToken: non AAD scenarios can have empty realm\r\n let cachedIdToken: IdTokenEntity | undefined;\r\n let cachedAccount: AccountEntity | undefined;\r\n if (!StringUtils.isEmpty(serverTokenResponse.id_token) && !!idTokenObj) {\r\n cachedIdToken = IdTokenEntity.createIdTokenEntity(\r\n this.homeAccountIdentifier,\r\n env,\r\n serverTokenResponse.id_token || Constants.EMPTY_STRING,\r\n this.clientId,\r\n idTokenObj.claims.tid || Constants.EMPTY_STRING,\r\n oboAssertion\r\n );\r\n\r\n cachedAccount = this.generateAccountEntity(\r\n serverTokenResponse,\r\n idTokenObj,\r\n authority,\r\n oboAssertion,\r\n authCodePayload\r\n );\r\n }\r\n\r\n // AccessToken\r\n let cachedAccessToken: AccessTokenEntity | null = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.access_token)) {\r\n\r\n // If scopes not returned in server response, use request scopes\r\n const responseScopes = serverTokenResponse.scope ? ScopeSet.fromString(serverTokenResponse.scope) : new ScopeSet(requestScopes || []);\r\n\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n const expiresIn: number = (typeof serverTokenResponse.expires_in === \"string\" ? parseInt(serverTokenResponse.expires_in, 10) : serverTokenResponse.expires_in) || 0;\r\n const extExpiresIn: number = (typeof serverTokenResponse.ext_expires_in === \"string\" ? parseInt(serverTokenResponse.ext_expires_in, 10) : serverTokenResponse.ext_expires_in) || 0;\r\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = AccessTokenEntity.createAccessTokenEntity(\r\n this.homeAccountIdentifier,\r\n env,\r\n serverTokenResponse.access_token || Constants.EMPTY_STRING,\r\n this.clientId,\r\n idTokenObj ? idTokenObj.claims.tid || Constants.EMPTY_STRING : authority.tenant,\r\n responseScopes.printScopes(),\r\n tokenExpirationSeconds,\r\n extendedTokenExpirationSeconds,\r\n serverTokenResponse.token_type,\r\n oboAssertion\r\n );\r\n }\r\n\r\n // refreshToken\r\n let cachedRefreshToken: RefreshTokenEntity | null = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.refresh_token)) {\r\n cachedRefreshToken = RefreshTokenEntity.createRefreshTokenEntity(\r\n this.homeAccountIdentifier,\r\n env,\r\n serverTokenResponse.refresh_token || Constants.EMPTY_STRING,\r\n this.clientId,\r\n serverTokenResponse.foci,\r\n oboAssertion\r\n );\r\n }\r\n\r\n // appMetadata\r\n let cachedAppMetadata: AppMetadataEntity | null = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.foci)) {\r\n cachedAppMetadata = AppMetadataEntity.createAppMetadataEntity(this.clientId, env, serverTokenResponse.foci);\r\n }\r\n\r\n return new CacheRecord(cachedAccount, cachedIdToken, cachedAccessToken, cachedRefreshToken, cachedAppMetadata);\r\n }\r\n\r\n /**\r\n * Generate Account\r\n * @param serverTokenResponse\r\n * @param idToken\r\n * @param authority\r\n */\r\n private generateAccountEntity(serverTokenResponse: ServerAuthorizationTokenResponse, idToken: AuthToken, authority: Authority, oboAssertion?: string, authCodePayload?: AuthorizationCodePayload): AccountEntity {\r\n const authorityType = authority.authorityType;\r\n const cloudGraphHostName = authCodePayload ? authCodePayload.cloud_graph_host_name : \"\";\r\n const msGraphhost = authCodePayload ? authCodePayload.msgraph_host : \"\";\r\n\r\n // ADFS does not require client_info in the response\r\n if (authorityType === AuthorityType.Adfs) {\r\n this.logger.verbose(\"Authority type is ADFS, creating ADFS account\");\r\n return AccountEntity.createGenericAccount(authority, this.homeAccountIdentifier, idToken, oboAssertion, cloudGraphHostName, msGraphhost);\r\n }\r\n\r\n // This fallback applies to B2C as well as they fall under an AAD account type.\r\n if (StringUtils.isEmpty(serverTokenResponse.client_info) && authority.protocolMode === \"AAD\") {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n\r\n return serverTokenResponse.client_info ?\r\n AccountEntity.createAccount(serverTokenResponse.client_info, this.homeAccountIdentifier, authority, idToken, oboAssertion, cloudGraphHostName, msGraphhost) :\r\n AccountEntity.createGenericAccount(authority, this.homeAccountIdentifier, idToken, oboAssertion, cloudGraphHostName, msGraphhost);\r\n }\r\n\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n static async generateAuthenticationResult(\r\n cryptoObj: ICrypto, \r\n authority: Authority,\r\n cacheRecord: CacheRecord, \r\n fromTokenCache: boolean, \r\n request: BaseAuthRequest,\r\n idTokenObj?: AuthToken,\r\n requestState?: RequestStateObject): Promise {\r\n let accessToken: string = \"\";\r\n let responseScopes: Array = [];\r\n let expiresOn: Date | null = null;\r\n let extExpiresOn: Date | undefined;\r\n let familyId: string = Constants.EMPTY_STRING;\r\n if (cacheRecord.accessToken) {\r\n if (cacheRecord.accessToken.tokenType === AuthenticationScheme.POP) {\r\n const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n\r\n if (!request.resourceRequestMethod || !request.resourceRequestUri) {\r\n throw ClientConfigurationError.createResourceRequestParametersRequiredError();\r\n }\r\n accessToken = await popTokenGenerator.signPopToken(cacheRecord.accessToken.secret, request.resourceRequestMethod, request.resourceRequestUri, request.shrClaims);\r\n } else {\r\n accessToken = cacheRecord.accessToken.secret;\r\n }\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n }\r\n\r\n if (cacheRecord.appMetadata) {\r\n familyId = cacheRecord.appMetadata.familyId === THE_FAMILY_ID ? THE_FAMILY_ID : Constants.EMPTY_STRING;\r\n }\r\n const uid = idTokenObj?.claims.oid || idTokenObj?.claims.sub || Constants.EMPTY_STRING;\r\n const tid = idTokenObj?.claims.tid || Constants.EMPTY_STRING;\r\n\r\n return {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: cacheRecord.account ? cacheRecord.account.getAccountInfo() : null,\r\n idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\r\n idTokenClaims: idTokenObj ? idTokenObj.claims : {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n extExpiresOn: extExpiresOn,\r\n familyId: familyId,\r\n tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,\r\n state: requestState ? requestState.userRequestState : Constants.EMPTY_STRING,\r\n cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || Constants.EMPTY_STRING,\r\n msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING\r\n };\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { CommonRefreshTokenRequest } from \"../request/CommonRefreshTokenRequest\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\r\nimport { GrantType, AuthenticationScheme, Errors } from \"../utils/Constants\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\nimport { NetworkResponse } from \"../network/NetworkManager\";\r\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ClientAuthError, ClientAuthErrorMessage } from \"../error/ClientAuthError\";\r\nimport { ServerError } from \"../error/ServerError\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\n\r\n/**\r\n * OAuth2.0 refresh token client\r\n */\r\nexport class RefreshTokenClient extends BaseClient {\r\n\r\n constructor(configuration: ClientConfiguration) {\r\n super(configuration);\r\n }\r\n\r\n public async acquireToken(request: CommonRefreshTokenRequest): Promise{\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n const response = await this.executeTokenRequest(request, this.authority);\r\n\r\n const responseHandler = new ResponseHandler(\r\n this.config.authOptions.clientId,\r\n this.cacheManager,\r\n this.cryptoUtils,\r\n this.logger,\r\n this.config.serializableCache,\r\n this.config.persistencePlugin\r\n );\r\n\r\n responseHandler.validateTokenResponse(response.body);\r\n return responseHandler.handleServerTokenResponse(\r\n response.body,\r\n this.authority,\r\n reqTimestamp,\r\n request,\r\n undefined,\r\n undefined,\r\n true\r\n );\r\n }\r\n\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n public async acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n\r\n // try checking if FOCI is enabled for the given application\r\n const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment, this.config.authOptions.clientId);\r\n\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n return this.acquireTokenWithCachedRefreshToken(request, true);\r\n } catch (e) {\r\n const noFamilyRTInCache = e instanceof ClientAuthError && e.errorCode === ClientAuthErrorMessage.noTokensFoundError.code;\r\n const clientMismatchErrorWithFamilyRT = e instanceof ServerError && e.errorCode === Errors.INVALID_GRANT_ERROR && e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n return this.acquireTokenWithCachedRefreshToken(request, false);\r\n // throw in all other cases\r\n } else {\r\n throw e;\r\n }\r\n }\r\n }\r\n\r\n // fall back to application refresh token acquisition\r\n return this.acquireTokenWithCachedRefreshToken(request, false);\r\n }\r\n\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n private async acquireTokenWithCachedRefreshToken(request: CommonSilentFlowRequest, foci: boolean) {\r\n // fetches family RT or application RT based on FOCI value\r\n const refreshToken = this.cacheManager.readRefreshTokenFromCache(this.config.authOptions.clientId, request.account, foci);\r\n\r\n // no refresh Token\r\n if (!refreshToken) {\r\n throw ClientAuthError.createNoTokensFoundError();\r\n }\r\n\r\n const refreshTokenRequest: CommonRefreshTokenRequest = {\r\n ...request,\r\n refreshToken: refreshToken.secret,\r\n authenticationScheme: AuthenticationScheme.BEARER\r\n };\r\n\r\n return this.acquireToken(refreshTokenRequest);\r\n }\r\n\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n private async executeTokenRequest(request: CommonRefreshTokenRequest, authority: Authority)\r\n : Promise> {\r\n\r\n const requestBody = await this.createTokenRequestBody(request);\r\n const headers: Record = this.createDefaultTokenRequestHeaders();\r\n const thumbprint: RequestThumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes\r\n };\r\n\r\n return this.executePostToTokenEndpoint(authority.tokenEndpoint, requestBody, headers, thumbprint);\r\n }\r\n\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n private async createTokenRequestBody(request: CommonRefreshTokenRequest): Promise {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n\r\n parameterBuilder.addScopes(request.scopes);\r\n\r\n parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\r\n\r\n parameterBuilder.addClientInfo();\r\n\r\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n\r\n parameterBuilder.addRefreshToken(request.refreshToken);\r\n\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n if (!request.resourceRequestMethod || !request.resourceRequestUri) {\r\n throw ClientConfigurationError.createResourceRequestParametersRequiredError();\r\n }\r\n\r\n parameterBuilder.addPopToken(await popTokenGenerator.generateCnf(request.resourceRequestMethod, request.resourceRequestUri));\r\n }\r\n\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { CommonAuthorizationUrlRequest } from \"../request/CommonAuthorizationUrlRequest\";\r\nimport { CommonAuthorizationCodeRequest } from \"../request/CommonAuthorizationCodeRequest\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\r\nimport { GrantType, AuthenticationScheme } from \"../utils/Constants\";\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { NetworkResponse } from \"../network/NetworkManager\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse\";\r\nimport { AccountEntity } from \"../cache/entities/AccountEntity\";\r\nimport { CommonEndSessionRequest } from \"../request/CommonEndSessionRequest\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\nimport { AuthorizationCodePayload } from \"../response/AuthorizationCodePayload\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { TokenClaims } from \"../account/TokenClaims\";\r\nimport { AccountInfo } from \"../account/AccountInfo\";\r\n\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n */\r\nexport class AuthorizationCodeClient extends BaseClient {\r\n\r\n constructor(configuration: ClientConfiguration) {\r\n super(configuration);\r\n }\r\n\r\n /**\r\n * Creates the URL of the authorization request letting the user input credentials and consent to the\r\n * application. The URL target the /authorize endpoint of the authority configured in the\r\n * application object.\r\n *\r\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\r\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\r\n * acquireToken(AuthorizationCodeRequest)\r\n * @param request\r\n */\r\n async getAuthCodeUrl(request: CommonAuthorizationUrlRequest): Promise {\r\n const queryString = this.createAuthCodeUrlQueryString(request);\r\n return `${this.authority.authorizationEndpoint}?${queryString}`;\r\n }\r\n\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n async acquireToken(request: CommonAuthorizationCodeRequest, authCodePayload?: AuthorizationCodePayload): Promise {\r\n this.logger.info(\"in acquireToken call\");\r\n if (!request || StringUtils.isEmpty(request.code)) {\r\n throw ClientAuthError.createTokenRequestCannotBeMadeError();\r\n }\r\n\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n const response = await this.executeTokenRequest(this.authority, request);\r\n\r\n const responseHandler = new ResponseHandler(\r\n this.config.authOptions.clientId,\r\n this.cacheManager,\r\n this.cryptoUtils,\r\n this.logger,\r\n this.config.serializableCache,\r\n this.config.persistencePlugin\r\n );\r\n\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n return await responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, authCodePayload);\r\n }\r\n\r\n /**\r\n * Handles the hash fragment response from public client code request. Returns a code response used by\r\n * the client to exchange for a token in acquireToken.\r\n * @param hashFragment\r\n */\r\n handleFragmentResponse(hashFragment: string, cachedState: string): AuthorizationCodePayload {\r\n // Handle responses.\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\r\n\r\n // Deserialize hash fragment response parameters.\r\n const hashUrlString = new UrlString(hashFragment);\r\n // Deserialize hash fragment response parameters.\r\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hashUrlString.getHash());\r\n\r\n // Get code response\r\n responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState, this.cryptoUtils);\r\n\r\n // throw when there is no auth code in the response\r\n if (!serverParams.code) {\r\n throw ClientAuthError.createNoAuthCodeInServerResponseError();\r\n }\r\n\r\n return {\r\n ...serverParams,\r\n // Code param is optional in ServerAuthorizationCodeResponse but required in AuthorizationCodePaylod\r\n code: serverParams.code\r\n };\r\n }\r\n\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n getLogoutUri(logoutRequest: CommonEndSessionRequest): string {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw ClientConfigurationError.createEmptyLogoutRequestError();\r\n }\r\n\r\n if (logoutRequest.account) {\r\n // Clear given account.\r\n this.cacheManager.removeAccount(AccountEntity.generateAccountCacheKey(logoutRequest.account));\r\n } else {\r\n // Clear all accounts and tokens\r\n this.cacheManager.clear();\r\n }\r\n\r\n const queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n\r\n // Construct logout URI.\r\n return StringUtils.isEmpty(queryString) ? this.authority.endSessionEndpoint : `${this.authority.endSessionEndpoint}?${queryString}`;\r\n }\r\n\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n private async executeTokenRequest(authority: Authority, request: CommonAuthorizationCodeRequest): Promise> {\r\n const thumbprint: RequestThumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes\r\n };\r\n\r\n const requestBody = await this.createTokenRequestBody(request);\r\n const headers: Record = this.createDefaultTokenRequestHeaders();\r\n\r\n return this.executePostToTokenEndpoint(authority.tokenEndpoint, requestBody, headers, thumbprint);\r\n }\r\n\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n private async createTokenRequestBody(request: CommonAuthorizationCodeRequest): Promise {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n\r\n // validate the redirectUri (to be a non null value)\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n parameterBuilder.addScopes(request.scopes);\r\n\r\n // add code: user set, not validated\r\n parameterBuilder.addAuthorizationCode(request.code);\r\n\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n parameterBuilder.addCodeVerifier(request.codeVerifier);\r\n }\r\n\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n\r\n parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\r\n parameterBuilder.addClientInfo();\r\n\r\n if (request.authenticationScheme === AuthenticationScheme.POP && !!request.resourceRequestMethod && !!request.resourceRequestUri) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n const cnfString = await popTokenGenerator.generateCnf(request.resourceRequestMethod, request.resourceRequestUri);\r\n parameterBuilder.addPopToken(cnfString);\r\n }\r\n\r\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n\r\n /**\r\n * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\r\n * @param request\r\n */\r\n private createAuthCodeUrlQueryString(request: CommonAuthorizationUrlRequest): string {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n\r\n const requestScopes = [...request.scopes || [], ...request.extraScopesToConsent || []];\r\n parameterBuilder.addScopes(requestScopes);\r\n\r\n // validate the redirectUri (to be a non null value)\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n\r\n // generate the correlationId if not set by the user and add\r\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n\r\n // add response_mode. If not passed in it defaults to query.\r\n parameterBuilder.addResponseMode(request.responseMode);\r\n\r\n // add response_type = code\r\n parameterBuilder.addResponseTypeCode();\r\n\r\n // add library info parameters\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n\r\n // add client_info=1\r\n parameterBuilder.addClientInfo();\r\n\r\n if (request.codeChallenge && request.codeChallengeMethod) {\r\n parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\r\n }\r\n\r\n if (request.prompt) {\r\n parameterBuilder.addPrompt(request.prompt);\r\n }\r\n\r\n if (request.domainHint) {\r\n parameterBuilder.addDomainHint(request.domainHint);\r\n }\r\n\r\n // Add sid or loginHint with preference for sid -> loginHint -> username of AccountInfo object\r\n if (request.sid) {\r\n parameterBuilder.addSid(request.sid);\r\n } else if (request.account) {\r\n const accountSid = this.extractAccountSid(request.account);\r\n // If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n if (accountSid) {\r\n parameterBuilder.addSid(accountSid);\r\n } else if (request.loginHint) {\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n } else if (request.account.username) {\r\n // Fallback to account username if provided\r\n parameterBuilder.addLoginHint(request.account.username);\r\n }\r\n } else if (request.loginHint) {\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n }\r\n\r\n if (request.nonce) {\r\n parameterBuilder.addNonce(request.nonce);\r\n }\r\n\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n private createLogoutUrlQueryString(request: CommonEndSessionRequest): string {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n if (request.postLogoutRedirectUri) {\r\n parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\r\n }\r\n\r\n if (request.correlationId) {\r\n parameterBuilder.addCorrelationId(request.correlationId);\r\n }\r\n\r\n if (request.idTokenHint) {\r\n parameterBuilder.addIdTokenHint(request.idTokenHint);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n\r\n /**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account \r\n */\r\n private extractAccountSid(account: AccountInfo): string | null {\r\n if (account.idTokenClaims) {\r\n const tokenClaims = account.idTokenClaims as TokenClaims;\r\n return tokenClaims.sid || null;\r\n }\r\n return null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { DeviceCodeResponse, ServerDeviceCodeResponse } from \"../response/DeviceCodeResponse\";\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { CommonDeviceCodeRequest } from \"../request/CommonDeviceCodeRequest\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\r\nimport { Constants, GrantType } from \"../utils/Constants\";\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\n\r\n/**\r\n * OAuth2.0 Device code client\r\n */\r\nexport class DeviceCodeClient extends BaseClient {\r\n\r\n constructor(configuration: ClientConfiguration) {\r\n super(configuration);\r\n }\r\n\r\n /**\r\n * Gets device code from device code endpoint, calls back to with device code response, and\r\n * polls token endpoint to exchange device code for tokens\r\n * @param request\r\n */\r\n public async acquireToken(request: CommonDeviceCodeRequest): Promise {\r\n const deviceCodeResponse: DeviceCodeResponse = await this.getDeviceCode(request);\r\n request.deviceCodeCallback(deviceCodeResponse);\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n const response: ServerAuthorizationTokenResponse = await this.acquireTokenWithDeviceCode(\r\n request,\r\n deviceCodeResponse);\r\n\r\n const responseHandler = new ResponseHandler(\r\n this.config.authOptions.clientId,\r\n this.cacheManager,\r\n this.cryptoUtils,\r\n this.logger,\r\n this.config.serializableCache,\r\n this.config.persistencePlugin\r\n );\r\n\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response);\r\n return await responseHandler.handleServerTokenResponse(\r\n response,\r\n this.authority,\r\n reqTimestamp,\r\n request\r\n );\r\n }\r\n\r\n /**\r\n * Creates device code request and executes http GET\r\n * @param request\r\n */\r\n private async getDeviceCode(request: CommonDeviceCodeRequest): Promise {\r\n const queryString = this.createQueryString(request);\r\n const headers = this.createDefaultTokenRequestHeaders();\r\n const thumbprint: RequestThumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes\r\n };\r\n\r\n return this.executePostRequestToDeviceCodeEndpoint(this.authority.deviceCodeEndpoint, queryString, headers, thumbprint);\r\n }\r\n\r\n /**\r\n * Executes POST request to device code endpoint\r\n * @param deviceCodeEndpoint\r\n * @param queryString\r\n * @param headers\r\n */\r\n private async executePostRequestToDeviceCodeEndpoint(\r\n deviceCodeEndpoint: string,\r\n queryString: string,\r\n headers: Record,\r\n thumbprint: RequestThumbprint): Promise {\r\n\r\n const {\r\n body: {\r\n user_code: userCode,\r\n device_code: deviceCode,\r\n verification_uri: verificationUri,\r\n expires_in: expiresIn,\r\n interval,\r\n message\r\n }\r\n } = await this.networkManager.sendPostRequest(\r\n thumbprint,\r\n deviceCodeEndpoint,\r\n {\r\n body: queryString,\r\n headers: headers\r\n });\r\n\r\n return {\r\n userCode,\r\n deviceCode,\r\n verificationUri,\r\n expiresIn,\r\n interval,\r\n message\r\n };\r\n }\r\n\r\n /**\r\n * Create device code endpoint query parameters and returns string\r\n */\r\n private createQueryString(request: CommonDeviceCodeRequest): string {\r\n\r\n const parameterBuilder: RequestParameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addScopes(request.scopes);\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n\r\n /**\r\n * Creates token request with device code response and polls token endpoint at interval set by the device code\r\n * response\r\n * @param request\r\n * @param deviceCodeResponse\r\n */\r\n private async acquireTokenWithDeviceCode(\r\n request: CommonDeviceCodeRequest,\r\n deviceCodeResponse: DeviceCodeResponse): Promise {\r\n\r\n const requestBody = this.createTokenRequestBody(request, deviceCodeResponse);\r\n const headers: Record = this.createDefaultTokenRequestHeaders();\r\n\r\n const userSpecifiedTimeout = request.timeout ? TimeUtils.nowSeconds() + request.timeout : undefined;\r\n const deviceCodeExpirationTime = TimeUtils.nowSeconds() + deviceCodeResponse.expiresIn;\r\n const pollingIntervalMilli = deviceCodeResponse.interval * 1000;\r\n\r\n /*\r\n * Poll token endpoint while (device code is not expired AND operation has not been cancelled by\r\n * setting CancellationToken.cancel = true). POST request is sent at interval set by pollingIntervalMilli\r\n */\r\n return new Promise((resolve, reject) => {\r\n\r\n const intervalId: ReturnType = setInterval(async () => {\r\n try {\r\n if (request.cancel) {\r\n\r\n this.logger.error(\"Token request cancelled by setting DeviceCodeRequest.cancel = true\");\r\n clearInterval(intervalId);\r\n reject(ClientAuthError.createDeviceCodeCancelledError());\r\n\r\n } else if (userSpecifiedTimeout && userSpecifiedTimeout < deviceCodeExpirationTime && TimeUtils.nowSeconds() > userSpecifiedTimeout) {\r\n\r\n this.logger.error(`User defined timeout for device code polling reached. The timeout was set for ${userSpecifiedTimeout}`);\r\n clearInterval(intervalId);\r\n reject(ClientAuthError.createUserTimeoutReachedError());\r\n\r\n } else if (TimeUtils.nowSeconds() > deviceCodeExpirationTime) {\r\n\r\n if (userSpecifiedTimeout) {\r\n this.logger.verbose(`User specified timeout ignored as the device code has expired before the timeout elapsed. The user specified timeout was set for ${userSpecifiedTimeout}`);\r\n }\r\n\r\n this.logger.error(`Device code expired. Expiration time of device code was ${deviceCodeExpirationTime}`);\r\n clearInterval(intervalId);\r\n reject(ClientAuthError.createDeviceCodeExpiredError());\r\n\r\n } else {\r\n const thumbprint: RequestThumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes\r\n };\r\n const response = await this.executePostToTokenEndpoint(\r\n this.authority.tokenEndpoint,\r\n requestBody,\r\n headers,\r\n thumbprint);\r\n\r\n if (response.body && response.body.error === Constants.AUTHORIZATION_PENDING) {\r\n // user authorization is pending. Sleep for polling interval and try again\r\n this.logger.info(response.body.error_description || \"no_error_description\");\r\n } else {\r\n clearInterval(intervalId);\r\n resolve(response.body);\r\n }\r\n }\r\n } catch (error) {\r\n clearInterval(intervalId);\r\n reject(error);\r\n }\r\n }, pollingIntervalMilli);\r\n });\r\n }\r\n\r\n /**\r\n * Creates query parameters and converts to string.\r\n * @param request\r\n * @param deviceCodeResponse\r\n */\r\n private createTokenRequestBody(request: CommonDeviceCodeRequest, deviceCodeResponse: DeviceCodeResponse): string {\r\n\r\n const requestParameters: RequestParameterBuilder = new RequestParameterBuilder();\r\n\r\n requestParameters.addScopes(request.scopes);\r\n requestParameters.addClientId(this.config.authOptions.clientId);\r\n requestParameters.addGrantType(GrantType.DEVICE_CODE_GRANT);\r\n requestParameters.addDeviceCode(deviceCodeResponse.deviceCode);\r\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n requestParameters.addCorrelationId(correlationId);\r\n requestParameters.addClientInfo();\r\n\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n requestParameters.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n return requestParameters.createQueryString();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\r\nimport { ScopeSet } from \"../request/ScopeSet\";\r\nimport { GrantType , CredentialType } from \"../utils/Constants\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { CommonClientCredentialRequest } from \"../request/CommonClientCredentialRequest\";\r\nimport { CredentialFilter, CredentialCache } from \"../cache/utils/CacheTypes\";\r\nimport { AccessTokenEntity } from \"../cache/entities/AccessTokenEntity\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n\r\n/**\r\n * OAuth2.0 client credential grant\r\n */\r\nexport class ClientCredentialClient extends BaseClient {\r\n\r\n private scopeSet: ScopeSet;\r\n\r\n constructor(configuration: ClientConfiguration) {\r\n super(configuration);\r\n }\r\n\r\n /**\r\n * Public API to acquire a token with ClientCredential Flow for Confidential clients\r\n * @param request\r\n */\r\n public async acquireToken(request: CommonClientCredentialRequest): Promise {\r\n\r\n this.scopeSet = new ScopeSet(request.scopes || []);\r\n\r\n if (request.skipCache) {\r\n return await this.executeTokenRequest(request, this.authority);\r\n }\r\n\r\n const cachedAuthenticationResult = await this.getCachedAuthenticationResult(request);\r\n if (cachedAuthenticationResult) {\r\n return cachedAuthenticationResult;\r\n } else {\r\n return await this.executeTokenRequest(request, this.authority);\r\n }\r\n }\r\n\r\n /**\r\n * looks up cache if the tokens are cached already\r\n */\r\n private async getCachedAuthenticationResult(request: CommonClientCredentialRequest): Promise {\r\n const cachedAccessToken = this.readAccessTokenFromCache();\r\n if (!cachedAccessToken ||\r\n TimeUtils.isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n return null;\r\n }\r\n\r\n return await ResponseHandler.generateAuthenticationResult(\r\n this.cryptoUtils,\r\n this.authority,\r\n {\r\n account: null,\r\n idToken: null,\r\n accessToken: cachedAccessToken,\r\n refreshToken: null,\r\n appMetadata: null\r\n },\r\n true,\r\n request\r\n );\r\n }\r\n\r\n /**\r\n * Reads access token from the cache\r\n * TODO: Move this call to cacheManager instead\r\n */\r\n private readAccessTokenFromCache(): AccessTokenEntity | null {\r\n const accessTokenFilter: CredentialFilter = {\r\n homeAccountId: \"\",\r\n environment: this.authority.canonicalAuthorityUrlComponents.HostNameAndPort,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n clientId: this.config.authOptions.clientId,\r\n realm: this.authority.tenant,\r\n target: this.scopeSet.printScopesLowerCase()\r\n };\r\n const credentialCache: CredentialCache = this.cacheManager.getCredentialsFilteredBy(accessTokenFilter);\r\n const accessTokens = Object.keys(credentialCache.accessTokens).map(key => credentialCache.accessTokens[key]);\r\n if (accessTokens.length < 1) {\r\n return null;\r\n } else if (accessTokens.length > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n return accessTokens[0] as AccessTokenEntity;\r\n }\r\n\r\n /**\r\n * Makes a network call to request the token from the service\r\n * @param request\r\n * @param authority\r\n */\r\n private async executeTokenRequest(request: CommonClientCredentialRequest, authority: Authority)\r\n : Promise {\r\n\r\n const requestBody = this.createTokenRequestBody(request);\r\n const headers: Record = this.createDefaultTokenRequestHeaders();\r\n const thumbprint: RequestThumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes\r\n };\r\n\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n const response = await this.executePostToTokenEndpoint(authority.tokenEndpoint, requestBody, headers, thumbprint);\r\n\r\n const responseHandler = new ResponseHandler(\r\n this.config.authOptions.clientId,\r\n this.cacheManager,\r\n this.cryptoUtils,\r\n this.logger,\r\n this.config.serializableCache,\r\n this.config.persistencePlugin\r\n );\r\n\r\n responseHandler.validateTokenResponse(response.body);\r\n const tokenResponse = await responseHandler.handleServerTokenResponse(\r\n response.body,\r\n this.authority,\r\n reqTimestamp,\r\n request\r\n );\r\n\r\n return tokenResponse;\r\n }\r\n\r\n /**\r\n * generate the request to the server in the acceptable format\r\n * @param request\r\n */\r\n private createTokenRequestBody(request: CommonClientCredentialRequest): string {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n\r\n parameterBuilder.addScopes(request.scopes, false);\r\n\r\n parameterBuilder.addGrantType(GrantType.CLIENT_CREDENTIALS_GRANT);\r\n\r\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\r\nimport { ScopeSet } from \"../request/ScopeSet\";\r\nimport { GrantType, AADServerParamKeys , CredentialType, Constants } from \"../utils/Constants\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { CommonOnBehalfOfRequest } from \"../request/CommonOnBehalfOfRequest\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { CredentialFilter, CredentialCache } from \"../cache/utils/CacheTypes\";\r\nimport { AccessTokenEntity } from \"../cache/entities/AccessTokenEntity\";\r\nimport { IdTokenEntity } from \"../cache/entities/IdTokenEntity\";\r\nimport { AccountEntity } from \"../cache/entities/AccountEntity\";\r\nimport { AuthToken } from \"../account/AuthToken\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\nimport { AccountInfo } from \"../account/AccountInfo\";\r\n\r\n/**\r\n * On-Behalf-Of client\r\n */\r\nexport class OnBehalfOfClient extends BaseClient {\r\n\r\n private scopeSet: ScopeSet;\r\n\r\n constructor(configuration: ClientConfiguration) {\r\n super(configuration);\r\n }\r\n\r\n /**\r\n * Public API to acquire tokens with on behalf of flow\r\n * @param request\r\n */\r\n public async acquireToken(request: CommonOnBehalfOfRequest): Promise {\r\n this.scopeSet = new ScopeSet(request.scopes || []);\r\n\r\n if (request.skipCache) {\r\n return await this.executeTokenRequest(request, this.authority);\r\n }\r\n\r\n const cachedAuthenticationResult = await this.getCachedAuthenticationResult(request);\r\n if (cachedAuthenticationResult) {\r\n return cachedAuthenticationResult;\r\n } else {\r\n return await this.executeTokenRequest(request, this.authority);\r\n }\r\n }\r\n\r\n /**\r\n * look up cache for tokens\r\n * @param request\r\n */\r\n private async getCachedAuthenticationResult(request: CommonOnBehalfOfRequest): Promise {\r\n const cachedAccessToken = this.readAccessTokenFromCache(request);\r\n if (!cachedAccessToken ||\r\n TimeUtils.isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n return null;\r\n }\r\n\r\n const cachedIdToken = this.readIdTokenFromCache(request);\r\n let idTokenObject: AuthToken | undefined;\r\n let cachedAccount: AccountEntity | null = null;\r\n if (cachedIdToken) {\r\n idTokenObject = new AuthToken(cachedIdToken.secret, this.config.cryptoInterface);\r\n const localAccountId = idTokenObject.claims.oid ? idTokenObject.claims.oid : idTokenObject.claims.sub;\r\n const accountInfo: AccountInfo = {\r\n homeAccountId: cachedIdToken.homeAccountId,\r\n environment: cachedIdToken.environment,\r\n tenantId: cachedIdToken.realm,\r\n username: Constants.EMPTY_STRING,\r\n localAccountId: localAccountId || \"\"\r\n };\r\n\r\n cachedAccount = this.readAccountFromCache(accountInfo);\r\n }\r\n\r\n return await ResponseHandler.generateAuthenticationResult(\r\n this.cryptoUtils,\r\n this.authority,\r\n {\r\n account: cachedAccount,\r\n accessToken: cachedAccessToken,\r\n idToken: cachedIdToken,\r\n refreshToken: null,\r\n appMetadata: null\r\n },\r\n true,\r\n request,\r\n idTokenObject);\r\n }\r\n\r\n /**\r\n * read access token from cache TODO: CacheManager API should be used here\r\n * @param request\r\n */\r\n private readAccessTokenFromCache(request: CommonOnBehalfOfRequest): AccessTokenEntity | null {\r\n const accessTokenFilter: CredentialFilter = {\r\n environment: this.authority.canonicalAuthorityUrlComponents.HostNameAndPort,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n clientId: this.config.authOptions.clientId,\r\n realm: this.authority.tenant,\r\n target: this.scopeSet.printScopesLowerCase(),\r\n oboAssertion: request.oboAssertion\r\n };\r\n\r\n const credentialCache: CredentialCache = this.cacheManager.getCredentialsFilteredBy(accessTokenFilter);\r\n const accessTokens = Object.keys(credentialCache.accessTokens).map(key => credentialCache.accessTokens[key]);\r\n\r\n const numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n return null;\r\n } else if (numAccessTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n return accessTokens[0] as AccessTokenEntity;\r\n }\r\n\r\n /**\r\n * read idtoken from cache TODO: CacheManager API should be used here instead\r\n * @param request\r\n */\r\n private readIdTokenFromCache(request: CommonOnBehalfOfRequest): IdTokenEntity | null {\r\n const idTokenFilter: CredentialFilter = {\r\n environment: this.authority.canonicalAuthorityUrlComponents.HostNameAndPort,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: this.config.authOptions.clientId,\r\n realm: this.authority.tenant,\r\n oboAssertion: request.oboAssertion\r\n };\r\n\r\n const credentialCache: CredentialCache = this.cacheManager.getCredentialsFilteredBy(idTokenFilter);\r\n const idTokens = Object.keys(credentialCache.idTokens).map(key => credentialCache.idTokens[key]);\r\n // When acquiring a token on behalf of an application, there might not be an id token in the cache\r\n if (idTokens.length < 1) {\r\n return null;\r\n }\r\n return idTokens[0] as IdTokenEntity;\r\n }\r\n\r\n /**\r\n * read account from cache, TODO: CacheManager API should be used here instead\r\n * @param account\r\n */\r\n private readAccountFromCache(account: AccountInfo): AccountEntity | null {\r\n return this.cacheManager.readAccountFromCache(account);\r\n }\r\n\r\n /**\r\n * Make a network call to the server requesting credentials\r\n * @param request\r\n * @param authority\r\n */\r\n private async executeTokenRequest(request: CommonOnBehalfOfRequest, authority: Authority)\r\n : Promise {\r\n\r\n const requestBody = this.createTokenRequestBody(request);\r\n const headers: Record = this.createDefaultTokenRequestHeaders();\r\n const thumbprint: RequestThumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes\r\n };\r\n\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n const response = await this.executePostToTokenEndpoint(authority.tokenEndpoint, requestBody, headers, thumbprint);\r\n\r\n const responseHandler = new ResponseHandler(\r\n this.config.authOptions.clientId,\r\n this.cacheManager,\r\n this.cryptoUtils,\r\n this.logger,\r\n this.config.serializableCache,\r\n this.config.persistencePlugin\r\n );\r\n\r\n responseHandler.validateTokenResponse(response.body);\r\n const tokenResponse = await responseHandler.handleServerTokenResponse(\r\n response.body,\r\n this.authority,\r\n reqTimestamp,\r\n request\r\n );\r\n\r\n return tokenResponse;\r\n }\r\n\r\n /**\r\n * generate a server request in accepable format\r\n * @param request\r\n */\r\n private createTokenRequestBody(request: CommonOnBehalfOfRequest): string {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n\r\n parameterBuilder.addScopes(request.scopes);\r\n\r\n parameterBuilder.addGrantType(GrantType.JWT_BEARER);\r\n\r\n parameterBuilder.addClientInfo();\r\n\r\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n\r\n parameterBuilder.addRequestTokenUse(AADServerParamKeys.ON_BEHALF_OF);\r\n\r\n parameterBuilder.addOboAssertion(request.oboAssertion);\r\n\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { AccessTokenEntity } from \"../cache/entities/AccessTokenEntity\";\r\nimport { ScopeSet } from \"../request/ScopeSet\";\r\nimport { AuthToken } from \"../account/AuthToken\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { RefreshTokenClient } from \"./RefreshTokenClient\";\r\nimport { ClientAuthError, ClientAuthErrorMessage } from \"../error/ClientAuthError\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { CacheRecord } from \"../cache/entities/CacheRecord\";\r\n\r\nexport class SilentFlowClient extends BaseClient {\r\n\r\n constructor(configuration: ClientConfiguration) {\r\n super(configuration);\r\n }\r\n\r\n /**\r\n * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew\r\n * the given token and returns the renewed token\r\n * @param request\r\n */\r\n async acquireToken(request: CommonSilentFlowRequest): Promise {\r\n try {\r\n return await this.acquireCachedToken(request);\r\n } catch (e) {\r\n if (e instanceof ClientAuthError && e.errorCode === ClientAuthErrorMessage.tokenRefreshRequired.code) {\r\n const refreshTokenClient = new RefreshTokenClient(this.config);\r\n return refreshTokenClient.acquireTokenByRefreshToken(request);\r\n } else {\r\n throw e;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n async acquireCachedToken(request: CommonSilentFlowRequest): Promise {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n const requestScopes = new ScopeSet(request.scopes || []);\r\n const environment = request.authority || this.authority.getPreferredCache();\r\n const cacheRecord = this.cacheManager.readCacheRecord(request.account, this.config.authOptions.clientId, requestScopes, environment);\r\n\r\n if (this.isRefreshRequired(request, cacheRecord.accessToken)) {\r\n throw ClientAuthError.createRefreshRequiredError();\r\n } else {\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n return await this.generateResultFromCacheRecord(cacheRecord, request);\r\n }\r\n }\r\n\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n private async generateResultFromCacheRecord(cacheRecord: CacheRecord, request: CommonSilentFlowRequest): Promise {\r\n let idTokenObj: AuthToken | undefined;\r\n if (cacheRecord.idToken) {\r\n idTokenObj = new AuthToken(cacheRecord.idToken.secret, this.config.cryptoInterface);\r\n }\r\n return await ResponseHandler.generateAuthenticationResult(\r\n this.cryptoUtils,\r\n this.authority,\r\n cacheRecord,\r\n true,\r\n request,\r\n idTokenObj\r\n );\r\n }\r\n\r\n /**\r\n * Given a request object and an accessTokenEntity determine if the accessToken needs to be refreshed\r\n * @param request\r\n * @param cachedAccessToken\r\n */\r\n private isRefreshRequired(request: CommonSilentFlowRequest, cachedAccessToken: AccessTokenEntity|null): boolean {\r\n if (request.forceRefresh || request.claims) {\r\n // Must refresh due to request parameters\r\n return true;\r\n } else if (!cachedAccessToken || TimeUtils.isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n // Must refresh due to expired or non-existent access_token\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { CommonUsernamePasswordRequest } from \"../request/CommonUsernamePasswordRequest\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { NetworkResponse } from \"../network/NetworkManager\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\r\nimport { GrantType } from \"../utils/Constants\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\n\r\n/**\r\n * Oauth2.0 Password grant client\r\n * Note: We are only supporting public clients for password grant and for purely testing purposes\r\n */\r\nexport class UsernamePasswordClient extends BaseClient {\r\n\r\n constructor(configuration: ClientConfiguration) {\r\n super(configuration);\r\n }\r\n\r\n /**\r\n * API to acquire a token by passing the username and password to the service in exchage of credentials\r\n * password_grant\r\n * @param request\r\n */\r\n async acquireToken(request: CommonUsernamePasswordRequest): Promise {\r\n this.logger.info(\"in acquireToken call\");\r\n\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n const response = await this.executeTokenRequest(this.authority, request);\r\n\r\n const responseHandler = new ResponseHandler(\r\n this.config.authOptions.clientId,\r\n this.cacheManager,\r\n this.cryptoUtils,\r\n this.logger,\r\n this.config.serializableCache,\r\n this.config.persistencePlugin\r\n );\r\n\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n const tokenResponse = responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request);\r\n\r\n return tokenResponse;\r\n }\r\n\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n private async executeTokenRequest(authority: Authority, request: CommonUsernamePasswordRequest): Promise> {\r\n const thumbprint: RequestThumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes\r\n };\r\n const requestBody = this.createTokenRequestBody(request);\r\n const headers: Record = this.createDefaultTokenRequestHeaders();\r\n\r\n return this.executePostToTokenEndpoint(authority.tokenEndpoint, requestBody, headers, thumbprint);\r\n }\r\n\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n private createTokenRequestBody(request: CommonUsernamePasswordRequest): string {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n parameterBuilder.addUsername(request.username);\r\n parameterBuilder.addPassword(request.password);\r\n\r\n parameterBuilder.addScopes(request.scopes);\r\n\r\n parameterBuilder.addGrantType(GrantType.RESOURCE_OWNER_PASSWORD_GRANT);\r\n parameterBuilder.addClientInfo();\r\n\r\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization.\r\n */\r\nexport type OpenIdConfigResponse = {\r\n authorization_endpoint: string;\r\n token_endpoint: string;\r\n end_session_endpoint: string;\r\n issuer: string;\r\n};\r\n\r\nexport function isOpenIdConfigResponse(response: object): boolean {\r\n return (\r\n response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") && \r\n response.hasOwnProperty(\"end_session_endpoint\") &&\r\n response.hasOwnProperty(\"issuer\")\r\n );\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CloudDiscoveryMetadata } from \"../../authority/CloudDiscoveryMetadata\";\r\nimport { OpenIdConfigResponse } from \"../../authority/OpenIdConfigResponse\";\r\nimport { AUTHORITY_METADATA_CONSTANTS } from \"../../utils/Constants\";\r\nimport { TimeUtils } from \"../../utils/TimeUtils\";\r\n\r\nexport class AuthorityMetadataEntity {\r\n aliases: Array;\r\n preferred_cache: string;\r\n preferred_network: string;\r\n canonical_authority: string;\r\n authorization_endpoint: string;\r\n token_endpoint: string;\r\n end_session_endpoint: string;\r\n issuer: string;\r\n aliasesFromNetwork: boolean;\r\n endpointsFromNetwork: boolean;\r\n expiresAt: number;\r\n\r\n constructor() {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n }\r\n\r\n /**\r\n * Update the entity with new aliases, preferred_cache and preferred_network values\r\n * @param metadata \r\n * @param fromNetwork \r\n */\r\n updateCloudDiscoveryMetadata(metadata: CloudDiscoveryMetadata, fromNetwork: boolean) {\r\n this.aliases = metadata.aliases;\r\n this.preferred_cache = metadata.preferred_cache;\r\n this.preferred_network = metadata.preferred_network;\r\n this.aliasesFromNetwork = fromNetwork;\r\n }\r\n\r\n /**\r\n * Update the entity with new endpoints\r\n * @param metadata \r\n * @param fromNetwork \r\n */\r\n updateEndpointMetadata(metadata: OpenIdConfigResponse, fromNetwork: boolean) {\r\n this.authorization_endpoint = metadata.authorization_endpoint;\r\n this.token_endpoint = metadata.token_endpoint;\r\n this.end_session_endpoint = metadata.end_session_endpoint;\r\n this.issuer = metadata.issuer;\r\n this.endpointsFromNetwork = fromNetwork;\r\n }\r\n\r\n /**\r\n * Save the authority that was used to create this cache entry\r\n * @param authority \r\n */\r\n updateCanonicalAuthority(authority: string) {\r\n this.canonical_authority = authority;\r\n }\r\n\r\n /**\r\n * Reset the exiresAt value\r\n */\r\n resetExpiresAt() {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n }\r\n\r\n /**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\n isExpired(): boolean {\r\n return this.expiresAt <= TimeUtils.nowSeconds();\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAuthorityMetadataEntity(key: string, entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"end_session_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\")\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorityType } from \"./AuthorityType\";\r\nimport { isOpenIdConfigResponse, OpenIdConfigResponse } from \"./OpenIdConfigResponse\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { IUri } from \"../url/IUri\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { AuthorityMetadataSource, Constants } from \"../utils/Constants\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ProtocolMode } from \"./ProtocolMode\";\r\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\r\nimport { AuthorityMetadataEntity } from \"../cache/entities/AuthorityMetadataEntity\";\r\nimport { AuthorityOptions } from \"./AuthorityOptions\";\r\nimport { CloudInstanceDiscoveryResponse, isCloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse\";\r\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\r\n\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n */\r\nexport class Authority {\r\n\r\n // Canonical authority url string\r\n private _canonicalAuthority: UrlString;\r\n // Canonicaly authority url components\r\n private _canonicalAuthorityUrlComponents: IUri | null;\r\n // Network interface to make requests with.\r\n protected networkInterface: INetworkModule;\r\n // Cache Manager to cache network responses\r\n protected cacheManager: ICacheManager;\r\n // Protocol mode to construct endpoints\r\n private authorityOptions: AuthorityOptions;\r\n // Authority metadata\r\n private metadata: AuthorityMetadataEntity;\r\n\r\n constructor(authority: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n }\r\n\r\n // See above for AuthorityType\r\n public get authorityType(): AuthorityType {\r\n const pathSegments = this.canonicalAuthorityUrlComponents.PathSegments;\r\n\r\n if (pathSegments.length && pathSegments[0].toLowerCase() === Constants.ADFS) {\r\n return AuthorityType.Adfs;\r\n }\r\n\r\n return AuthorityType.Default;\r\n }\r\n\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n public get protocolMode(): ProtocolMode {\r\n return this.authorityOptions.protocolMode;\r\n }\r\n\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n public get options(): AuthorityOptions {\r\n return this.authorityOptions;\r\n }\r\n\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n public get canonicalAuthority(): string {\r\n return this._canonicalAuthority.urlString;\r\n }\r\n\r\n /**\r\n * Sets canonical authority.\r\n */\r\n public set canonicalAuthority(url: string) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n }\r\n\r\n /**\r\n * Get authority components.\r\n */\r\n public get canonicalAuthorityUrlComponents(): IUri {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\r\n }\r\n\r\n return this._canonicalAuthorityUrlComponents;\r\n }\r\n\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n public get hostnameAndPort(): string {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n }\r\n\r\n /**\r\n * Get tenant for authority.\r\n */\r\n public get tenant(): string {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n }\r\n\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n public get authorizationEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.authorization_endpoint);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n public get tokenEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.token_endpoint);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n public get deviceCodeEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n public get endSessionEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.end_session_endpoint);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n public get selfSignedJwtAudience(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.issuer);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n private replaceTenant(urlString: string): string {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n }\r\n\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString \r\n */\r\n private replacePath(urlString: string): string {\r\n let endpoint = urlString;\r\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n const cachedAuthorityParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n\r\n currentAuthorityParts.forEach((currentPart, index) => {\r\n const cachedPart = cachedAuthorityParts[index];\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\r\n }\r\n });\r\n\r\n return endpoint;\r\n }\r\n\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n protected get defaultOpenIdConfigurationEndpoint(): string {\r\n if (this.authorityType === AuthorityType.Adfs || this.protocolMode === ProtocolMode.OIDC) {\r\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\r\n }\r\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\r\n }\r\n\r\n /**\r\n * Boolean that returns whethr or not tenant discovery has been completed.\r\n */\r\n discoveryComplete(): boolean {\r\n return !!this.metadata;\r\n }\r\n\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n public async resolveEndpointsAsync(): Promise {\r\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = new AuthorityMetadataEntity();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n\r\n const cloudDiscoverySource = await this.updateCloudDiscoveryMetadata(metadataEntity);\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n const endpointSource = await this.updateEndpointMetadata(metadataEntity);\r\n\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.resetExpiresAt();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n } \r\n\r\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n }\r\n\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity \r\n */\r\n private async updateEndpointMetadata(metadataEntity: AuthorityMetadataEntity): Promise {\r\n let metadata = this.getEndpointMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateEndpointMetadata(metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n\r\n metadata = await this.getEndpointMetadataFromNetwork();\r\n if (metadata) {\r\n metadataEntity.updateEndpointMetadata(metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n } else {\r\n throw ClientAuthError.createUnableToGetOpenidConfigError(this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n }\r\n\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached authority metadata can be used for the requested authority\r\n * Protects against same domain different authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n private isAuthoritySameType(metadataEntity: AuthorityMetadataEntity): boolean {\r\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n \r\n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\r\n }\r\n\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata) as OpenIdConfigResponse;\r\n } catch (e) {\r\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n */\r\n private async getEndpointMetadataFromNetwork(): Promise {\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(this.defaultOpenIdConfigurationEndpoint);\r\n return isOpenIdConfigResponse(response.body) ? response.body : null;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache and returns where the information was retrived from\r\n * @param cachedMetadata \r\n * @param newMetadata \r\n */\r\n private async updateCloudDiscoveryMetadata(metadataEntity: AuthorityMetadataEntity): Promise {\r\n let metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n\r\n // If The cached metadata came from config but that config was not passed to this instance, we must go to the network\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n\r\n metadata = await this.getCloudDiscoveryMetadataFromNetwork();\r\n if (metadata) {\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n } else {\r\n // Metadata could not be obtained from config, cache or network\r\n throw ClientConfigurationError.createUntrustedAuthorityError();\r\n }\r\n }\r\n\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null {\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n try {\r\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata) as CloudInstanceDiscoveryResponse;\r\n const metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n if (metadata) {\r\n return metadata;\r\n }\r\n } catch (e) {\r\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\r\n }\r\n }\r\n\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n * @param networkInterface \r\n */\r\n private async getCloudDiscoveryMetadataFromNetwork(): Promise {\r\n const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\r\n let match = null;\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint);\r\n const metadata = isCloudInstanceDiscoveryResponse(response.body) ? response.body.metadata : [];\r\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n } catch(e) {\r\n return null;\r\n }\r\n\r\n if (!match) {\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded \r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return match;\r\n } \r\n\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n private isInKnownAuthorities(): boolean {\r\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\r\n return UrlString.getDomainFromUrl(authority).toLowerCase() === this.hostnameAndPort;\r\n });\r\n\r\n return matches.length > 0;\r\n }\r\n\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host \r\n */\r\n static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host]\r\n };\r\n }\r\n\r\n /**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response \r\n * @param authority \r\n */\r\n static getCloudDiscoveryMetadataFromNetworkResponse(response: CloudDiscoveryMetadata[], authority: string): CloudDiscoveryMetadata | null {\r\n for (let i = 0; i < response.length; i++) {\r\n const metadata = response[i];\r\n if (metadata.aliases.indexOf(authority) > -1) {\r\n return metadata;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n getPreferredCache(): string {\r\n if(this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host \r\n */\r\n isAlias(host: string): boolean {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\r\n\r\n/**\r\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\r\n */\r\nexport type CloudInstanceDiscoveryResponse = {\r\n tenant_discovery_endpoint: string;\r\n metadata: Array;\r\n};\r\n\r\nexport function isCloudInstanceDiscoveryResponse(response: object): boolean {\r\n return (\r\n response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\")\r\n );\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { SERVER_TELEM_CONSTANTS } from \"../../utils/Constants\";\r\n\r\nexport class ServerTelemetryEntity {\r\n failedRequests: Array;\r\n errors: string[];\r\n cacheHits: number;\r\n\r\n constructor() {\r\n this.failedRequests = [];\r\n this.errors = [];\r\n this.cacheHits = 0;\r\n }\r\n\r\n /**\r\n * validates if a given cache entry is \"Telemetry\", parses \r\n * @param key\r\n * @param entity\r\n */\r\n static isServerTelemetryEntity(key: string, entity?: object): boolean {\r\n\r\n const validateKey: boolean = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n let validateEntity: boolean = true;\r\n\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n\r\n return validateKey && validateEntity;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Authority } from \"./Authority\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\r\nimport { AuthorityOptions } from \"./AuthorityOptions\";\r\n\r\nexport class AuthorityFactory {\r\n\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n */\r\n static async createDiscoveredInstance(authorityUri: string, networkClient: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions): Promise {\r\n // Initialize authority and perform discovery endpoint check.\r\n const acquireTokenAuthority: Authority = AuthorityFactory.createInstance(authorityUri, networkClient, cacheManager, authorityOptions);\r\n\r\n try {\r\n await acquireTokenAuthority.resolveEndpointsAsync();\r\n return acquireTokenAuthority;\r\n } catch (e) {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Does not perform endpoint discovery.\r\n *\r\n * @param authorityUrl\r\n * @param networkInterface\r\n * @param protocolMode\r\n */\r\n static createInstance(authorityUrl: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions): Authority {\r\n // Throw error if authority url is empty\r\n if (StringUtils.isEmpty(authorityUrl)) {\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n\r\n return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ThrottlingConstants } from \"../../utils/Constants\";\r\n\r\nexport class ThrottlingEntity {\r\n // Unix-time value representing the expiration of the throttle\r\n throttleTime: number;\r\n // Information provided by the server\r\n error?: string;\r\n errorCodes?: Array;\r\n errorMessage?: string;\r\n subError?: string;\r\n\r\n /**\r\n * validates if a given cache entry is \"Throttling\", parses \r\n * @param key\r\n * @param entity\r\n */\r\n static isThrottlingEntity(key: string, entity?: object): boolean {\r\n \r\n let validateKey: boolean = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n \r\n let validateEntity: boolean = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n\r\n return validateKey && validateEntity;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { SERVER_TELEM_CONSTANTS, Separators, Constants } from \"../../utils/Constants\";\r\nimport { CacheManager } from \"../../cache/CacheManager\";\r\nimport { AuthError } from \"../../error/AuthError\";\r\nimport { ServerTelemetryRequest } from \"./ServerTelemetryRequest\";\r\nimport { ServerTelemetryEntity } from \"../../cache/entities/ServerTelemetryEntity\";\r\nimport { StringUtils } from \"../../utils/StringUtils\";\r\n\r\nexport class ServerTelemetryManager {\r\n private cacheManager: CacheManager;\r\n private apiId: number;\r\n private correlationId: string;\r\n private forceRefresh: boolean;\r\n private telemetryCacheKey: string;\r\n private wrapperSKU: String;\r\n private wrapperVer: String;\r\n\r\n constructor(telemetryRequest: ServerTelemetryRequest, cacheManager: CacheManager) {\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.forceRefresh = telemetryRequest.forceRefresh || false;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\r\n\r\n this.telemetryCacheKey = SERVER_TELEM_CONSTANTS.CACHE_KEY + Separators.CACHE_KEY_SEPARATOR + telemetryRequest.clientId;\r\n }\r\n\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n generateCurrentRequestHeaderValue(): string {\r\n const forceRefreshInt = this.forceRefresh ? 1 : 0;\r\n const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${forceRefreshInt}`;\r\n const platformFields = [this.wrapperSKU, this.wrapperVer].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, request, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n generateLastRequestHeaderValue(): string {\r\n const lastRequests = this.getLastRequests();\r\n\r\n const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const failedRequests = lastRequests.failedRequests.slice(0, 2*maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errors = lastRequests.errors.slice(0, maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errorCount = lastRequests.errors.length;\r\n\r\n // Indicate whether this header contains all data or partial data\r\n const overflow = maxErrors < errorCount ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, lastRequests.cacheHits, failedRequests, errors, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n cacheFailedRequest(error: AuthError): void {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n\r\n if (!StringUtils.isEmpty(error.subError)) {\r\n lastRequests.errors.push(error.subError);\r\n } else if (!StringUtils.isEmpty(error.errorCode)) {\r\n lastRequests.errors.push(error.errorCode);\r\n } else if (!!error && error.toString()) {\r\n lastRequests.errors.push(error.toString());\r\n } else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n incrementCacheHits(): number {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return lastRequests.cacheHits;\r\n }\r\n\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n getLastRequests(): ServerTelemetryEntity {\r\n const initialValue: ServerTelemetryEntity = new ServerTelemetryEntity();\r\n const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey) as ServerTelemetryEntity;\r\n\r\n return lastRequests || initialValue;\r\n }\r\n\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n clearTelemetryCache(): void {\r\n const lastRequests = this.getLastRequests();\r\n const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey);\r\n } else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n const serverTelemEntity = new ServerTelemetryEntity();\r\n serverTelemEntity.failedRequests = lastRequests.failedRequests.slice(numErrorsFlushed*2); // failedRequests contains 2 items for each error\r\n serverTelemEntity.errors = lastRequests.errors.slice(numErrorsFlushed);\r\n\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n static maxErrorsToSend(serverTelemetryEntity: ServerTelemetryEntity): number {\r\n let i;\r\n let maxErrors = 0;\r\n let dataSize = 0;\r\n const errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n const apiId = serverTelemetryEntity.failedRequests[2*i] || Constants.EMPTY_STRING;\r\n const correlationId = serverTelemetryEntity.failedRequests[2*i + 1] || Constants.EMPTY_STRING;\r\n const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\r\n\r\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\r\n dataSize += apiId.toString().length + correlationId.toString().length + errorCode.length + 3;\r\n\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n return maxErrors;\r\n }\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\n//----------------------\r\n// \r\n// Generated using the NSwag toolchain v13.9.4.0 (NJsonSchema v10.3.1.0 (Newtonsoft.Json v12.0.0.0)) (http://NSwag.org)\r\n// \r\n//----------------------\r\n// ReSharper disable InconsistentNaming\r\n\r\nimport authInstance from '../authInstance';\r\nimport { apiRequest } from '../authConfig';\r\nimport { InteractionRequiredAuthError } from '@azure/msal-common';\r\nexport class ApiClientBase {\r\n\r\n protected transformOptions = async (options: RequestInit): Promise => {\r\n try {\r\n let accessToken = (await authInstance.acquireTokenSilent({\r\n ...apiRequest, account: authInstance.getActiveAccount()!\r\n })).accessToken\r\n \r\n options.headers = {\r\n ...options.headers,\r\n Authorization: 'Bearer ' + accessToken,\r\n };\r\n } catch (err) {\r\n if (err instanceof InteractionRequiredAuthError) {\r\n await authInstance.acquireTokenRedirect(apiRequest)\r\n }\r\n console.log(err);\r\n }\r\n return Promise.resolve(options);\r\n };\r\n}\r\n\r\nexport class ConfigurationClient extends ApiClientBase {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n get(): Promise {\r\n let url_ = this.baseUrl + \"/api/configuration\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGet(_response);\r\n });\r\n }\r\n\r\n protected processGet(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n set(body: ConfigurationSettingsRequestDTO | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/configuration\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processSet(_response);\r\n });\r\n }\r\n\r\n protected processSet(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getFake(): Promise {\r\n let url_ = this.baseUrl + \"/api/configuration/fake\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetFake(_response);\r\n });\r\n }\r\n\r\n protected processGetFake(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport class EmailCheckClient extends ApiClientBase {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n checkEmail(body: UserEmail | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/emailcheck/email-check\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processCheckEmail(_response);\r\n });\r\n }\r\n\r\n protected processCheckEmail(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport class ModemsClient extends ApiClientBase {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getManyAll(): Promise {\r\n let url_ = this.baseUrl + \"/api/modems\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetManyAll(_response);\r\n });\r\n }\r\n\r\n protected processGetManyAll(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n get2(id: string | null): Promise {\r\n let url_ = this.baseUrl + \"/api/modems/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGet2(_response);\r\n });\r\n }\r\n\r\n protected processGet2(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n update(id: string | null, body: ModemRequestDTO | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/modems/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processUpdate(_response);\r\n });\r\n }\r\n\r\n protected processUpdate(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @param requestedType (optional) \r\n * @return Success\r\n */\r\n getDeviceTwin(id: string | null, requestedType: DeviceTwinOrHeartbeatRequestedType | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/modems/{id}/device-twin?\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (requestedType === null)\r\n throw new Error(\"The parameter 'requestedType' cannot be null.\");\r\n else if (requestedType !== undefined)\r\n url_ += \"requestedType=\" + encodeURIComponent(\"\" + requestedType) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetDeviceTwin(_response);\r\n });\r\n }\r\n\r\n protected processGetDeviceTwin(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @param requestedType (optional) \r\n * @param body (optional) \r\n * @return Success\r\n */\r\n getDeviceTwins(requestedType: DeviceTwinOrHeartbeatRequestedType | undefined, body: ModemHeartbeatsRequestDTO | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/modems/device-twins?\";\r\n if (requestedType === null)\r\n throw new Error(\"The parameter 'requestedType' cannot be null.\");\r\n else if (requestedType !== undefined)\r\n url_ += \"requestedType=\" + encodeURIComponent(\"\" + requestedType) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetDeviceTwins(_response);\r\n });\r\n }\r\n\r\n protected processGetDeviceTwins(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @param requestedType (optional) \r\n * @return Success\r\n */\r\n getHeartbeat(id: string | null, requestedType: DeviceTwinOrHeartbeatRequestedType | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/modems/{id}/heartbeat?\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (requestedType === null)\r\n throw new Error(\"The parameter 'requestedType' cannot be null.\");\r\n else if (requestedType !== undefined)\r\n url_ += \"requestedType=\" + encodeURIComponent(\"\" + requestedType) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetHeartbeat(_response);\r\n });\r\n }\r\n\r\n protected processGetHeartbeat(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @param requestedType (optional) \r\n * @param body (optional) \r\n * @return Success\r\n */\r\n getHeartbeats(requestedType: DeviceTwinOrHeartbeatRequestedType | undefined, body: ModemHeartbeatsRequestDTO | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/modems/heartbeats?\";\r\n if (requestedType === null)\r\n throw new Error(\"The parameter 'requestedType' cannot be null.\");\r\n else if (requestedType !== undefined)\r\n url_ += \"requestedType=\" + encodeURIComponent(\"\" + requestedType) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetHeartbeats(_response);\r\n });\r\n }\r\n\r\n protected processGetHeartbeats(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n provisionModem(body: ModemProvisioningRequestDTO | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/modems/provision-new\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processProvisionModem(_response);\r\n });\r\n }\r\n\r\n protected processProvisionModem(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 201) {\r\n return response.text().then((_responseText) => {\r\n let result201: any = null;\r\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result201;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getPassword(id: string | null): Promise {\r\n let url_ = this.baseUrl + \"/api/modems/{id}/admin-password\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetPassword(_response);\r\n });\r\n }\r\n\r\n protected processGetPassword(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n createNewPassword(id: string | null): Promise {\r\n let url_ = this.baseUrl + \"/api/modems/{id}/admin-password\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"POST\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processCreateNewPassword(_response);\r\n });\r\n }\r\n\r\n protected processCreateNewPassword(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n pauseSim(id: string | null, body: ModemPauseSimRequestDTO | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/modems/{id}/sim/pause-sim\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processPauseSim(_response);\r\n });\r\n }\r\n\r\n protected processPauseSim(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport class OrganizationsClient extends ApiClientBase {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getMany(): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetMany(_response);\r\n });\r\n }\r\n\r\n protected processGetMany(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n create(body: OrganizationRequestDTO | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processCreate(_response);\r\n });\r\n }\r\n\r\n protected processCreate(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 201) {\r\n return response.text().then((_responseText) => {\r\n let result201: any = null;\r\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result201;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n get3(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGet3(_response);\r\n });\r\n }\r\n\r\n protected processGet3(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n update2(id: string, body: OrganizationRequestDTO | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processUpdate2(_response);\r\n });\r\n }\r\n\r\n protected processUpdate2(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n delete(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"DELETE\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processDelete(_response);\r\n });\r\n }\r\n\r\n protected processDelete(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 204) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n addModem(id: string, modemId: string | null): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations/{id}/modems/{modemId}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (modemId === undefined || modemId === null)\r\n throw new Error(\"The parameter 'modemId' must be defined.\");\r\n url_ = url_.replace(\"{modemId}\", encodeURIComponent(\"\" + modemId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"POST\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processAddModem(_response);\r\n });\r\n }\r\n\r\n protected processAddModem(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n removeModem(id: string, modemId: string | null): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations/{id}/modems/{modemId}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (modemId === undefined || modemId === null)\r\n throw new Error(\"The parameter 'modemId' must be defined.\");\r\n url_ = url_.replace(\"{modemId}\", encodeURIComponent(\"\" + modemId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"DELETE\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processRemoveModem(_response);\r\n });\r\n }\r\n\r\n protected processRemoveModem(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 204) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getAllModemsAll(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations/{id}/modems\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetAllModemsAll(_response);\r\n });\r\n }\r\n\r\n protected processGetAllModemsAll(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getManyUsersAll(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations/{id}/users\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetManyUsersAll(_response);\r\n });\r\n }\r\n\r\n protected processGetManyUsersAll(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n addUser(id: string, userId: string | null): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations/{id}/users/{userId}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (userId === undefined || userId === null)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"POST\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processAddUser(_response);\r\n });\r\n }\r\n\r\n protected processAddUser(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n deleteUser(id: string, userId: string): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations/{id}/users/{userId}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (userId === undefined || userId === null)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"DELETE\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processDeleteUser(_response);\r\n });\r\n }\r\n\r\n protected processDeleteUser(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 204) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getAllSubgroups(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations/{id}/subgroups\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetAllSubgroups(_response);\r\n });\r\n }\r\n\r\n protected processGetAllSubgroups(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getAllSites(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations/{id}/sites\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetAllSites(_response);\r\n });\r\n }\r\n\r\n protected processGetAllSites(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n addEmail(id: string, email: string | null): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations/{id}/email-whitelist/{email}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (email === undefined || email === null)\r\n throw new Error(\"The parameter 'email' must be defined.\");\r\n url_ = url_.replace(\"{email}\", encodeURIComponent(\"\" + email));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"POST\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processAddEmail(_response);\r\n });\r\n }\r\n\r\n protected processAddEmail(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n removeEmail(id: string, email: string | null): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations/{id}/email-whitelist/{email}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (email === undefined || email === null)\r\n throw new Error(\"The parameter 'email' must be defined.\");\r\n url_ = url_.replace(\"{email}\", encodeURIComponent(\"\" + email));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"DELETE\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processRemoveEmail(_response);\r\n });\r\n }\r\n\r\n protected processRemoveEmail(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 204) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getAllWhitelistedEmails(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/organizations/{id}/email-whitelist\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetAllWhitelistedEmails(_response);\r\n });\r\n }\r\n\r\n protected processGetAllWhitelistedEmails(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport class RelayApiClient extends ApiClientBase {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @param modemHostId (optional) \r\n * @param batchId (optional) \r\n * @param path (optional) \r\n * @return Success\r\n */\r\n postForwardRequest(modemHostId: string | null | undefined, batchId: string | undefined, path: string | null | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/relayapi/forwardrequest?\";\r\n if (modemHostId !== undefined && modemHostId !== null)\r\n url_ += \"modemHostId=\" + encodeURIComponent(\"\" + modemHostId) + \"&\";\r\n if (batchId === null)\r\n throw new Error(\"The parameter 'batchId' cannot be null.\");\r\n else if (batchId !== undefined)\r\n url_ += \"batchId=\" + encodeURIComponent(\"\" + batchId) + \"&\";\r\n if (path !== undefined && path !== null)\r\n url_ += \"path=\" + encodeURIComponent(\"\" + path) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"POST\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processPostForwardRequest(_response);\r\n });\r\n }\r\n\r\n protected processPostForwardRequest(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport class SitesClient extends ApiClientBase {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getMany2(): Promise {\r\n let url_ = this.baseUrl + \"/api/sites\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetMany2(_response);\r\n });\r\n }\r\n\r\n protected processGetMany2(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n create2(body: SiteRequestDTO | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/sites\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processCreate2(_response);\r\n });\r\n }\r\n\r\n protected processCreate2(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 201) {\r\n return response.text().then((_responseText) => {\r\n let result201: any = null;\r\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result201;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n get4(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/sites/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGet4(_response);\r\n });\r\n }\r\n\r\n protected processGet4(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n update3(id: string, body: SiteRequestDTO | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/sites/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processUpdate3(_response);\r\n });\r\n }\r\n\r\n protected processUpdate3(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n delete2(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/sites/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"DELETE\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processDelete2(_response);\r\n });\r\n }\r\n\r\n protected processDelete2(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 204) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n addModem2(id: string, modemId: string | null): Promise {\r\n let url_ = this.baseUrl + \"/api/sites/{id}/modems/{modemId}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (modemId === undefined || modemId === null)\r\n throw new Error(\"The parameter 'modemId' must be defined.\");\r\n url_ = url_.replace(\"{modemId}\", encodeURIComponent(\"\" + modemId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"POST\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processAddModem2(_response);\r\n });\r\n }\r\n\r\n protected processAddModem2(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n removeModem2(id: string, modemId: string | null): Promise {\r\n let url_ = this.baseUrl + \"/api/sites/{id}/modems/{modemId}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (modemId === undefined || modemId === null)\r\n throw new Error(\"The parameter 'modemId' must be defined.\");\r\n url_ = url_.replace(\"{modemId}\", encodeURIComponent(\"\" + modemId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"DELETE\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processRemoveModem2(_response);\r\n });\r\n }\r\n\r\n protected processRemoveModem2(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 204) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getAllModems(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/sites/{id}/modems\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetAllModems(_response);\r\n });\r\n }\r\n\r\n protected processGetAllModems(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport class SubGroupsClient extends ApiClientBase {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n get5(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/subgroups/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGet5(_response);\r\n });\r\n }\r\n\r\n protected processGet5(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n update4(id: string, body: SubGroupUpdateRequestDTO | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/subgroups/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processUpdate4(_response);\r\n });\r\n }\r\n\r\n protected processUpdate4(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n delete3(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/subgroups/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"DELETE\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processDelete3(_response);\r\n });\r\n }\r\n\r\n protected processDelete3(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 204) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n create3(body: SubGroupRequestDTO | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/subgroups\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processCreate3(_response);\r\n });\r\n }\r\n\r\n protected processCreate3(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 201) {\r\n return response.text().then((_responseText) => {\r\n let result201: any = null;\r\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result201;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getAllModems2(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/subgroups/{id}/modems\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetAllModems2(_response);\r\n });\r\n }\r\n\r\n protected processGetAllModems2(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n addModem3(id: string, modemId: string | null): Promise {\r\n let url_ = this.baseUrl + \"/api/subgroups/{id}/modems/{modemId}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (modemId === undefined || modemId === null)\r\n throw new Error(\"The parameter 'modemId' must be defined.\");\r\n url_ = url_.replace(\"{modemId}\", encodeURIComponent(\"\" + modemId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"POST\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processAddModem3(_response);\r\n });\r\n }\r\n\r\n protected processAddModem3(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n removeModem3(id: string, modemId: string | null): Promise {\r\n let url_ = this.baseUrl + \"/api/subgroups/{id}/modems/{modemId}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (modemId === undefined || modemId === null)\r\n throw new Error(\"The parameter 'modemId' must be defined.\");\r\n url_ = url_.replace(\"{modemId}\", encodeURIComponent(\"\" + modemId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"DELETE\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processRemoveModem3(_response);\r\n });\r\n }\r\n\r\n protected processRemoveModem3(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 204) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n addUser2(id: string, userId: string): Promise {\r\n let url_ = this.baseUrl + \"/api/subgroups/{id}/users/{userId}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (userId === undefined || userId === null)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"POST\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processAddUser2(_response);\r\n });\r\n }\r\n\r\n protected processAddUser2(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n removeUser(id: string, userId: string): Promise {\r\n let url_ = this.baseUrl + \"/api/subgroups/{id}/users/{userId}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (userId === undefined || userId === null)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"DELETE\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processRemoveUser(_response);\r\n });\r\n }\r\n\r\n protected processRemoveUser(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 204) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getManyUsers(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/subgroups/{id}/users\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetManyUsers(_response);\r\n });\r\n }\r\n\r\n protected processGetManyUsers(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport class UsersClient extends ApiClientBase {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getMany3(): Promise {\r\n let url_ = this.baseUrl + \"/api/users\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetMany3(_response);\r\n });\r\n }\r\n\r\n protected processGetMany3(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n get6(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/users/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"text/plain\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGet6(_response);\r\n });\r\n }\r\n\r\n protected processGet6(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n delete4(id: string): Promise {\r\n let url_ = this.baseUrl + \"/api/users/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"DELETE\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processDelete4(_response);\r\n });\r\n }\r\n\r\n protected processDelete4(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 204) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n update5(userId: string, body: AdminUserRequestDTO | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/users/{userId}\";\r\n if (userId === undefined || userId === null)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processUpdate5(_response);\r\n });\r\n }\r\n\r\n protected processUpdate5(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 204) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n persistUser(): Promise {\r\n let url_ = this.baseUrl + \"/api/users/persist-user\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"POST\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processPersistUser(_response);\r\n });\r\n }\r\n\r\n protected processPersistUser(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else {\r\n return response.text().then((_responseText) => {\r\n let resultdefault: any = null;\r\n resultdefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"Error\", status, _responseText, _headers, resultdefault);\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport interface DeviceEndpointSetting {\r\n readonly tag?: number;\r\n readonly isEclypse?: boolean;\r\n readonly isModem?: boolean;\r\n}\r\n\r\nexport interface Version {\r\n readonly major?: number;\r\n readonly minor?: number;\r\n readonly build?: number;\r\n readonly revision?: number;\r\n readonly majorRevision?: number;\r\n readonly minorRevision?: number;\r\n}\r\n\r\nexport interface ConfigurationSettingsResponseDTO {\r\n readonly cloudEndpoint: string;\r\n readonly simulatorToRemoteIpMap: { [key: string]: DeviceEndpointSetting; };\r\n version: Version;\r\n}\r\n\r\nexport interface ProblemDetails {\r\n type?: string | undefined;\r\n title?: string | undefined;\r\n status?: number | undefined;\r\n detail?: string | undefined;\r\n instance?: string | undefined;\r\n}\r\n\r\nexport interface StringFSharpOption {\r\n readonly value?: string | undefined;\r\n}\r\n\r\nexport interface ConfigurationSettingsRequestDTO {\r\n cloudEndpoint?: string | undefined;\r\n simulatorToRemoteIpMap?: { [key: string]: DeviceEndpointSetting; } | undefined;\r\n}\r\n\r\nexport interface ModemIpSetting {\r\n readonly remoteIp: string;\r\n readonly modemHostId: string;\r\n}\r\n\r\nexport interface EclypseIpSetting {\r\n readonly remoteIp: string;\r\n readonly modemHostId: string;\r\n readonly nLightId: string;\r\n}\r\n\r\nexport interface ReportedTwinGatewayDTO {\r\n deviceId: string;\r\n ipAddress: string;\r\n firmware: string;\r\n label: string;\r\n webServerPort: number;\r\n capabilities: string;\r\n}\r\n\r\nexport interface ReportedTwinDTO {\r\n modemId: string;\r\n acuityIoTClientVersion: string;\r\n appFirmware: string;\r\n deviceState: string;\r\n serialNumber: number;\r\n bootloaderVersion: string;\r\n imei: string | undefined;\r\n imsi: string | undefined;\r\n iccid: string | undefined;\r\n gateways: ReportedTwinGatewayDTO[];\r\n}\r\n\r\nexport interface HeartbeatDTO {\r\n readonly mobileSignalStrength: number;\r\n readonly lastOnlineTime: IsoDateString;\r\n}\r\n\r\nexport interface LogMessageDTO {\r\n exceptionMessage: string | undefined;\r\n readonly message: string;\r\n readonly level: string;\r\n readonly loggerName: string;\r\n readonly timestamp: IsoDateString;\r\n}\r\n\r\nexport interface ModemIpSettingEclypseIpSettingReportedTwinDTOProblemDetailsHeartbeatDTOLogMessageDTOTuple {\r\n item1?: ModemIpSetting;\r\n item2?: EclypseIpSetting;\r\n item3?: ReportedTwinDTO;\r\n item4?: ProblemDetails;\r\n item5?: HeartbeatDTO;\r\n item6?: LogMessageDTO;\r\n}\r\n\r\nexport interface UserEmail {\r\n email?: string | undefined;\r\n}\r\n\r\nexport interface GuidFSharpOption {\r\n readonly value?: string;\r\n}\r\n\r\nexport interface ModemWithOrgSiteResponseDTO {\r\n readonly modemHostId: string;\r\n organizationId: string | undefined;\r\n siteId: string | undefined;\r\n readonly label: string;\r\n readonly created: IsoDateString;\r\n readonly createdBy: string;\r\n readonly lastUpdated: IsoDateString;\r\n readonly lastUpdatedBy: string;\r\n readonly remoteConnectivityEnabled: boolean;\r\n readonly ipAddress: string;\r\n notes: string | undefined;\r\n orderNumber: string | undefined;\r\n}\r\n\r\nexport interface BooleanFSharpOption {\r\n readonly value?: boolean;\r\n}\r\n\r\nexport interface ModemRequestDTO {\r\n label?: string | undefined;\r\n notes?: string | undefined;\r\n remoteConnectivityEnabled?: boolean | undefined;\r\n orderNumber?: string | undefined;\r\n}\r\n\r\nexport interface ModemResponseDTO {\r\n readonly modemHostId: string;\r\n readonly label: string;\r\n readonly created: IsoDateString;\r\n readonly createdBy: string;\r\n readonly lastUpdated: IsoDateString;\r\n readonly lastUpdatedBy: string;\r\n readonly remoteConnectivityEnabled: boolean;\r\n readonly ipAddress: string;\r\n notes: string | undefined;\r\n orderNumber: string | undefined;\r\n}\r\n\r\nexport enum DeviceTwinOrHeartbeatRequestedType {\r\n _0 = 0,\r\n _1 = 1,\r\n}\r\n\r\nexport interface DeviceTwinResponse {\r\n readonly tag?: number;\r\n readonly isSimple?: boolean;\r\n readonly isComplete?: boolean;\r\n}\r\n\r\nexport interface DeviceTwinResponseFSharpOption {\r\n value?: DeviceTwinResponse;\r\n}\r\n\r\nexport interface ModemDeviceTwinResponseDTO {\r\n readonly modemHostId: string;\r\n deviceTwin: DeviceTwinResponse | undefined;\r\n}\r\n\r\nexport interface ModemHeartbeatsRequestDTO {\r\n modemIds: string[];\r\n}\r\n\r\nexport interface HeartbeatResponse {\r\n readonly tag?: number;\r\n readonly isSimple?: boolean;\r\n readonly isComplete?: boolean;\r\n}\r\n\r\nexport interface HeartbeatResponseFSharpOption {\r\n value?: HeartbeatResponse;\r\n}\r\n\r\nexport interface ModemHeartbeatResponseDTO {\r\n readonly modemHostId: string;\r\n heartbeat: HeartbeatResponse | undefined;\r\n}\r\n\r\nexport interface ModemProvisioningRequestDTO {\r\n label?: string | undefined;\r\n orderNumber?: string | undefined;\r\n}\r\n\r\nexport interface ModemProvisioningResponseDTO {\r\n readonly modemHostId: string;\r\n readonly label: string;\r\n readonly created: IsoDateString;\r\n readonly createdBy: string;\r\n readonly lastUpdated: IsoDateString;\r\n readonly lastUpdatedBy: string;\r\n readonly ipAddress: string;\r\n readonly connectionString: string;\r\n organizationId: string | undefined;\r\n agencyNumber: string | undefined;\r\n}\r\n\r\nexport interface ModemPasswordResponseDTO {\r\n password: string;\r\n}\r\n\r\nexport interface ModemPauseSimRequestDTO {\r\n pause: boolean;\r\n}\r\n\r\nexport interface ModemSimStateResponseDTO {\r\n newState: string;\r\n}\r\n\r\nexport interface OrganizationResponseDTO {\r\n externalId: string;\r\n name: string;\r\n agencyNumber: string | undefined;\r\n created: IsoDateString;\r\n createdBy: string;\r\n lastUpdated: IsoDateString;\r\n lastUpdatedBy: string;\r\n}\r\n\r\nexport interface OrganizationRequestDTO {\r\n name?: string | undefined;\r\n agencyNumber?: string | undefined;\r\n}\r\n\r\nexport interface Role {\r\n readonly tag?: number;\r\n readonly isDefault?: boolean;\r\n readonly isGlobalAdmin?: boolean;\r\n readonly isGlobalMember?: boolean;\r\n readonly isRemoteDeviceManufacturing?: boolean;\r\n readonly isOrganizationAdmin?: boolean;\r\n readonly isOrganizationMember?: boolean;\r\n readonly isOperator?: boolean;\r\n}\r\n\r\nexport interface UserOrganizationResponseDTO {\r\n externalId: string;\r\n}\r\n\r\nexport interface UserOrganizationResponseDTOFSharpOption {\r\n value?: UserOrganizationResponseDTO;\r\n}\r\n\r\nexport interface UserWithOrganizationResponseDTO {\r\n userName: string;\r\n displayName: string;\r\n givenName: string;\r\n surname: string;\r\n creationDate: IsoDateString;\r\n lastUpdate: IsoDateString;\r\n active: boolean;\r\n azureId: string;\r\n role: Role;\r\n organization: UserOrganizationResponseDTO | undefined;\r\n}\r\n\r\nexport interface UserResponseDTO {\r\n userName: string;\r\n displayName: string;\r\n givenName: string;\r\n surname: string;\r\n creationDate: IsoDateString;\r\n lastUpdate: IsoDateString;\r\n active: boolean;\r\n azureId: string;\r\n role: Role;\r\n}\r\n\r\nexport interface SubGroupResponseDTO {\r\n externalId: string;\r\n name: string;\r\n created: IsoDateString;\r\n createdBy: string;\r\n lastUpdated: IsoDateString;\r\n lastUpdatedBy: string;\r\n}\r\n\r\nexport interface Status {\r\n readonly tag?: number;\r\n readonly isActive?: boolean;\r\n readonly isArchived?: boolean;\r\n}\r\n\r\nexport interface StatusFSharpOption {\r\n value?: Status;\r\n}\r\n\r\nexport interface SiteResponseDTO {\r\n externalId: string;\r\n organizationId: string;\r\n name: string;\r\n address: string | undefined;\r\n agileProjectContainerNumber: string | undefined;\r\n city: string | undefined;\r\n country: string | undefined;\r\n notes: string | undefined;\r\n salesForceProjectKey: string | undefined;\r\n stateProv: string | undefined;\r\n zip: string | undefined;\r\n created: IsoDateString;\r\n createdBy: string;\r\n lastUpdated: IsoDateString;\r\n lastUpdatedBy: string;\r\n firstName: string | undefined;\r\n lastName: string | undefined;\r\n phoneNumber: string | undefined;\r\n email: string | undefined;\r\n status: Status | undefined;\r\n}\r\n\r\nexport interface EmailWhitelistResponseDTO {\r\n readonly email: string;\r\n readonly created: IsoDateString;\r\n readonly createdBy: string;\r\n readonly lastUpdated: IsoDateString;\r\n readonly lastUpdatedBy: string;\r\n}\r\n\r\nexport interface SiteRequestDTO {\r\n organizationId: string;\r\n name?: string | undefined;\r\n address?: string | undefined;\r\n agileProjectContainerNumber?: string | undefined;\r\n city?: string | undefined;\r\n country?: string | undefined;\r\n notes?: string | undefined;\r\n salesForceProjectKey?: string | undefined;\r\n stateProv?: string | undefined;\r\n zip?: string | undefined;\r\n firstName?: string | undefined;\r\n lastName?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n email?: string | undefined;\r\n status?: Status | undefined;\r\n}\r\n\r\nexport interface SubGroupUpdateRequestDTO {\r\n name?: string | undefined;\r\n}\r\n\r\nexport interface SubGroupRequestDTO {\r\n name?: string | undefined;\r\n organizationId?: string;\r\n}\r\n\r\nexport interface RoleFSharpOption {\r\n value?: Role;\r\n}\r\n\r\nexport interface AdminUserRequestDTO {\r\n role?: Role | undefined;\r\n}\r\n\r\nexport class ApiException extends Error {\r\n message: string;\r\n status: number;\r\n response: string;\r\n headers: { [key: string]: any; };\r\n result: any;\r\n\r\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\r\n super();\r\n\r\n this.message = message;\r\n this.status = status;\r\n this.response = response;\r\n this.headers = headers;\r\n this.result = result;\r\n }\r\n\r\n protected isApiException = true;\r\n\r\n static isApiException(obj: any): obj is ApiException {\r\n return obj.isApiException === true;\r\n }\r\n}\r\n\r\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\r\n if (result !== null && result !== undefined)\r\n throw result;\r\n else\r\n throw new ApiException(message, status, response, headers, null);\r\n}\r\n","import { ApiException, ConfigurationSettingsRequestDTO, ConfigurationSettingsResponseDTO, DeviceTwinResponse, ProblemDetails, ReportedTwinDTO, TransportConfigurationSettings } from \"./ApiClient\"\r\n/** maps from generated type to type that represents the actual json */\r\nexport function ToTransport(t: ConfigurationSettingsResponseDTO): TransportConfigurationSettings {\r\n return {\r\n ...t,\r\n cloudEndpoint: t.cloudEndpoint ?? '',\r\n simulatorToRemoteIpMap: Object.fromEntries(\r\n Object.entries(t.simulatorToRemoteIpMap ?? {}).map(([key, setting]) =>\r\n [key, setting.Case === 'Eclypse' ?\r\n {\r\n type: setting.Case,\r\n remoteIp: setting.Fields.remoteIp ?? '',\r\n nLightId: (\"nLightId\" in setting.Fields ? setting.Fields.nLightId ?? '' : ''),\r\n modemHostId: setting.Fields.modemHostId ?? ''\r\n } :\r\n {\r\n type: setting.Case,\r\n remoteIp: setting.Fields.remoteIp ?? '',\r\n modemHostId: setting.Fields.modemHostId ?? '',\r\n }]))\r\n }\r\n}\r\n/** maps from actual json and frontend type to type that the transport app api will understand */\r\nexport function ToRequest(t: TransportConfigurationSettings): ConfigurationSettingsRequestDTO {\r\n return {\r\n cloudEndpoint: t.cloudEndpoint,\r\n simulatorToRemoteIpMap: Object.fromEntries(\r\n Object.entries(t.simulatorToRemoteIpMap).map(([key, setting]) => [key, {\r\n Case: setting.type,\r\n Fields: { ...setting }\r\n }]))\r\n }\r\n}\r\n/** allows flowing type information about device twin response */\r\nexport function isSimple(x: DeviceTwinResponse): x is { Case: 'Simple', Fields: ReportedTwinDTO } { return x.Case === 'Simple' }\r\n/** allows flowing type information about device twin response */\r\nexport function isComplete(x: DeviceTwinResponse): x is { Case: 'Complete', Fields: { item: string } } { return x.Case === 'Complete' }\r\n/** allows flowing type information about device twin response */\r\nexport function isProblemDetails(x: any): x is ProblemDetails { return 'title' in x && 'status' in x && 'detail' in x }\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\n\r\n/**\r\n * Defines the level of severity for the event.\r\n */\r\nexport enum SeverityLevel {\r\n Verbose = 0,\r\n Information = 1,\r\n Warning = 2,\r\n Error = 3,\r\n Critical = 4,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nexport const strShimFunction = \"function\";\r\nexport const strShimObject = \"object\";\r\nexport const strShimUndefined = \"undefined\";\r\nexport const strShimPrototype = \"prototype\";\r\nexport const strShimHasOwnProperty = \"hasOwnProperty\";\r\n\r\n// To address compile time errors declaring these here\r\ndeclare var globalThis: Window;\r\ndeclare var global: Window;\r\ndeclare var __extends:(d: any, b: any) => any;\r\ndeclare var __assign:(t: any) => any;\r\n\r\n/**\r\n * Returns the current global scope object, for a normal web page this will be the current\r\n * window, for a Web Worker this will be current worker global scope via \"self\". The internal \r\n * implementation returns the first available instance object in the following order\r\n * - globalThis (New standard)\r\n * - self (Will return the current window instance for supported browsers)\r\n * - window (fallback for older browser implementations)\r\n * - global (NodeJS standard)\r\n * - (When all else fails)\r\n * While the return type is a Window for the normal case, not all environments will support all\r\n * of the properties or functions.\r\n */\r\nexport function getGlobal(): Window {\r\n if (typeof globalThis !== strShimUndefined && globalThis) {\r\n return globalThis;\r\n }\r\n\r\n if (typeof self !== strShimUndefined && self) {\r\n return self;\r\n }\r\n\r\n if (typeof window !== strShimUndefined && window) {\r\n return window;\r\n }\r\n\r\n if (typeof global !== strShimUndefined && global) {\r\n return global;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Creates an object that has the specified prototype, and that optionally contains specified properties. This helper exists to avoid adding a polyfil\r\n * for older browsers that do not define Object.create eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.create implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object to use as a prototype. May be null\r\n */\r\nexport function objCreateFn(obj: any): any {\r\n var func = Object[\"create\"];\r\n // Use build in Object.create\r\n if (func) {\r\n // Use Object create method if it exists\r\n return func(obj); \r\n }\r\n if (obj == null) { \r\n return {}; \r\n }\r\n var type = typeof obj;\r\n if (type !== strShimObject && type !== strShimFunction) { \r\n throw new TypeError('Object prototype may only be an Object:' + obj); \r\n }\r\n\r\n function tmpFunc() {}\r\n tmpFunc[strShimPrototype] = obj;\r\n\r\n return new (tmpFunc as any)(); \r\n}\r\n\r\nexport function __assignFn(t: any) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) {\r\n if (Object[strShimPrototype][strShimHasOwnProperty].call(s, p)) {\r\n t[p] = s[p];\r\n }\r\n }\r\n }\r\n return t;\r\n}\r\n\r\n// tslint:disable-next-line: only-arrow-functions\r\nvar __extendStaticsFn = function(d: any, b: any): any {\r\n __extendStaticsFn = Object[\"setPrototypeOf\"] ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n ({ __proto__: [] } instanceof Array && function (d: any, b: any) { d.__proto__ = b; }) ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n function (d: any, b: any) { \r\n for (var p in b) {\r\n if (b[strShimHasOwnProperty](p)) {\r\n d[p] = b[p];\r\n }\r\n }\r\n };\r\n return __extendStaticsFn(d, b);\r\n};\r\n\r\nexport function __extendsFn(d: any, b: any) {\r\n __extendStaticsFn(d, b);\r\n function __() { this.constructor = d; }\r\n // tslint:disable-next-line: ban-comma-operator\r\n d[strShimPrototype] = b === null ? objCreateFn(b) : (__[strShimPrototype] = b[strShimPrototype], new (__ as any)());\r\n}\r\n\r\nlet globalObj:any = getGlobal() || {};\r\n\r\n// tslint:disable: only-arrow-functions\r\n(function (root: any, assignFn, extendsFn) {\r\n // Assign the globally scoped versions of the functions -- used when consuming individual ts files\r\n // If check is to support NativeScript where these are marked as readonly\r\n if (!root.__assign) {\r\n root.__assign = (Object as any).assign || assignFn;\r\n }\r\n if (!root.__extends) {\r\n root.__extends = extendsFn;\r\n }\r\n})(globalObj, __assignFn, __extendsFn);\r\n\r\n// Assign local variables that will be used for embedded scenarios, if check is to support NativeScript where these are marked as readonly\r\nif (!__assign) { __assign = globalObj.__assign; }\r\nif (!__extends) { __extends = globalObj.__extends; }\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Constructor = 'constructor';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Prototype = 'prototype';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strFunction = 'function';\r\n/**\r\n * Used to define the name of the instance function lookup table\r\n * @ignore\r\n */\r\nvar DynInstFuncTable = '_dynInstFuncs';\r\n/**\r\n * Name used to tag the dynamic prototype function\r\n * @ignore\r\n */\r\nvar DynProxyTag = '_isDynProxy';\r\n/**\r\n * Name added to a prototype to define the dynamic prototype \"class\" name used to lookup the function table\r\n * @ignore\r\n */\r\nvar DynClassName = '_dynClass';\r\n/**\r\n * Prefix added to the classname to avoid any name clashes with other instance level properties\r\n * @ignore\r\n */\r\nvar DynClassNamePrefix = '_dynCls$';\r\n/**\r\n * A tag which is used to check if we have already to attempted to set the instance function if one is not present\r\n * @ignore\r\n */\r\nvar DynInstChkTag = '_dynInstChk';\r\n/**\r\n * A tag which is used to check if we are allows to try and set an instance function is one is not present. Using the same\r\n * tag name as the function level but a different const name for readability only.\r\n */\r\nvar DynAllowInstChkTag = DynInstChkTag;\r\n/**\r\n * The global (imported) instances where the global performance options are stored\r\n */\r\nvar DynProtoDefaultOptions = '_dfOpts';\r\n/**\r\n * Value used as the name of a class when it cannot be determined\r\n * @ignore\r\n */\r\nvar UnknownValue = '_unknown_';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strUseBaseInst = 'useBaseInst';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strSetInstFuncs = 'setInstFuncs';\r\nvar Obj = Object;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Obj[\"getPrototypeOf\"];\r\n/**\r\n * Internal Global used to generate a unique dynamic class name, every new class will increase this value\r\n * @ignore\r\n */\r\nvar _dynamicNames = 0;\r\n/**\r\n * Helper to check if the object contains a property of the name\r\n * @ignore\r\n */\r\nfunction _hasOwnProperty(obj, prop) {\r\n return obj && Obj[Prototype].hasOwnProperty.call(obj, prop);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype or Array prototype\r\n * @ignore\r\n */\r\nfunction _isObjectOrArrayPrototype(target) {\r\n return target && (target === Obj[Prototype] || target === Array[Prototype]);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype, Array prototype or Function prototype\r\n * @ignore\r\n */\r\nfunction _isObjectArrayOrFunctionPrototype(target) {\r\n return _isObjectOrArrayPrototype(target) || target === Function[Prototype];\r\n}\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nfunction _getObjProto(target) {\r\n if (target) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n // target[Constructor] May break if the constructor has been changed or removed\r\n var newProto = target[str__Proto] || target[Prototype] || target[Constructor];\r\n if (newProto) {\r\n return newProto;\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Helper to get the properties of an object, including none enumerable ones as functions on a prototype in ES6\r\n * are not enumerable.\r\n * @param target\r\n */\r\nfunction _forEachProp(target, func) {\r\n var props = [];\r\n var getOwnProps = Obj[\"getOwnPropertyNames\"];\r\n if (getOwnProps) {\r\n props = getOwnProps(target);\r\n }\r\n else {\r\n for (var name_1 in target) {\r\n if (typeof name_1 === \"string\" && _hasOwnProperty(target, name_1)) {\r\n props.push(name_1);\r\n }\r\n }\r\n }\r\n if (props && props.length > 0) {\r\n for (var lp = 0; lp < props.length; lp++) {\r\n func(props[lp]);\r\n }\r\n }\r\n}\r\n/**\r\n * Helper function to check whether the provided function name is a potential candidate for dynamic\r\n * callback and prototype generation.\r\n * @param target The target object, may be a prototype or class object\r\n * @param funcName The function name\r\n * @param skipOwn Skips the check for own property\r\n * @ignore\r\n */\r\nfunction _isDynamicCandidate(target, funcName, skipOwn) {\r\n return (funcName !== Constructor && typeof target[funcName] === strFunction && (skipOwn || _hasOwnProperty(target, funcName)));\r\n}\r\n/**\r\n * Helper to throw a TypeError exception\r\n * @param message the message\r\n * @ignore\r\n */\r\nfunction _throwTypeError(message) {\r\n throw new TypeError(\"DynamicProto: \" + message);\r\n}\r\n/**\r\n * Returns a collection of the instance functions that are defined directly on the thisTarget object, it does\r\n * not return any inherited functions\r\n * @param thisTarget The object to get the instance functions from\r\n * @ignore\r\n */\r\nfunction _getInstanceFuncs(thisTarget) {\r\n // Get the base proto\r\n var instFuncs = {};\r\n // Save any existing instance functions\r\n _forEachProp(thisTarget, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n if (!instFuncs[name] && _isDynamicCandidate(thisTarget, name, false)) {\r\n // Create an instance callback for passing the base function to the caller\r\n instFuncs[name] = thisTarget[name];\r\n }\r\n });\r\n return instFuncs;\r\n}\r\n/**\r\n * Returns whether the value is included in the array\r\n * @param values The array of values\r\n * @param value The value\r\n */\r\nfunction _hasVisited(values, value) {\r\n for (var lp = values.length - 1; lp >= 0; lp--) {\r\n if (values[lp] === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Returns an object that contains callback functions for all \"base/super\" functions, this is used to \"save\"\r\n * enabling calling super.xxx() functions without requiring that the base \"class\" has defined a prototype references\r\n * @param target The current instance\r\n * @ignore\r\n */\r\nfunction _getBaseFuncs(classProto, thisTarget, instFuncs, useBaseInst) {\r\n function _instFuncProxy(target, funcHost, funcName) {\r\n var theFunc = funcHost[funcName];\r\n if (theFunc[DynProxyTag] && useBaseInst) {\r\n // grab and reuse the hosted looking function (if available) otherwise the original passed function\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n theFunc = (instFuncTable[funcHost[DynClassName]] || {})[funcName] || theFunc;\r\n }\r\n }\r\n return function () {\r\n return theFunc.apply(target, arguments);\r\n };\r\n }\r\n // Start creating a new baseFuncs by creating proxies for the instance functions (as they may get replaced)\r\n var baseFuncs = {};\r\n _forEachProp(instFuncs, function (name) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs, name);\r\n });\r\n // Get the base prototype functions\r\n var baseProto = _getObjProto(classProto);\r\n var visited = [];\r\n // Don't include base object functions for Object, Array or Function\r\n while (baseProto && !_isObjectArrayOrFunctionPrototype(baseProto) && !_hasVisited(visited, baseProto)) {\r\n // look for prototype functions\r\n _forEachProp(baseProto, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n // For IE 7/8 the prototype lookup doesn't provide the full chain so we need to bypass the \r\n // hasOwnProperty check we get all of the methods, main difference is that IE7/8 doesn't return\r\n // the Object prototype methods while bypassing the check\r\n if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf)) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, baseProto, name);\r\n }\r\n });\r\n // We need to find all possible functions that might be overloaded by walking the entire prototype chain\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(baseProto);\r\n baseProto = _getObjProto(baseProto);\r\n }\r\n return baseFuncs;\r\n}\r\nfunction _getInstFunc(target, funcName, proto, currentDynProtoProxy) {\r\n var instFunc = null;\r\n // We need to check whether the class name is defined directly on this prototype otherwise\r\n // it will walk the proto chain and return any parent proto classname.\r\n if (target && _hasOwnProperty(proto, DynClassName)) {\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n instFunc = (instFuncTable[proto[DynClassName]] || {})[funcName];\r\n if (!instFunc) {\r\n // Avoid stack overflow from recursive calling the same function\r\n _throwTypeError(\"Missing [\" + funcName + \"] \" + strFunction);\r\n }\r\n // We have the instance function, lets check it we can speed up further calls\r\n // by adding the instance function back directly on the instance (avoiding the dynamic func lookup)\r\n if (!instFunc[DynInstChkTag] && instFuncTable[DynAllowInstChkTag] !== false) {\r\n // If the instance already has an instance function we can't replace it\r\n var canAddInst = !_hasOwnProperty(target, funcName);\r\n // Get current prototype\r\n var objProto = _getObjProto(target);\r\n var visited = [];\r\n // Lookup the function starting at the top (instance level prototype) and traverse down, if the first matching function\r\n // if nothing is found or if the first hit is a dynamic proto instance then we can safely add an instance shortcut\r\n while (canAddInst && objProto && !_isObjectArrayOrFunctionPrototype(objProto) && !_hasVisited(visited, objProto)) {\r\n var protoFunc = objProto[funcName];\r\n if (protoFunc) {\r\n canAddInst = (protoFunc === currentDynProtoProxy);\r\n break;\r\n }\r\n // We need to find all possible initial functions to ensure that we don't bypass a valid override function\r\n visited.push(objProto);\r\n objProto = _getObjProto(objProto);\r\n }\r\n try {\r\n if (canAddInst) {\r\n // This instance doesn't have an instance func and the class hierarchy does have a higher level prototype version\r\n // so it's safe to directly assign for any subsequent calls (for better performance)\r\n target[funcName] = instFunc;\r\n }\r\n // Block further attempts to set the instance function for any\r\n instFunc[DynInstChkTag] = 1;\r\n }\r\n catch (e) {\r\n // Don't crash if the object is readonly or the runtime doesn't allow changing this\r\n // And set a flag so we don't try again for any function\r\n instFuncTable[DynAllowInstChkTag] = false;\r\n }\r\n }\r\n }\r\n return instFunc;\r\n}\r\nfunction _getProtoFunc(funcName, proto, currentDynProtoProxy) {\r\n var protoFunc = proto[funcName];\r\n // Check that the prototype function is not a self reference -- try to avoid stack overflow!\r\n if (protoFunc === currentDynProtoProxy) {\r\n // It is so lookup the base prototype\r\n protoFunc = _getObjProto(proto)[funcName];\r\n }\r\n if (typeof protoFunc !== strFunction) {\r\n _throwTypeError(\"[\" + funcName + \"] is not a \" + strFunction);\r\n }\r\n return protoFunc;\r\n}\r\n/**\r\n * Add the required dynamic prototype methods to the the class prototype\r\n * @param proto - The class prototype\r\n * @param className - The instance classname\r\n * @param target - The target instance\r\n * @param baseInstFuncs - The base instance functions\r\n * @param setInstanceFunc - Flag to allow prototype function to reset the instance function if one does not exist\r\n * @ignore\r\n */\r\nfunction _populatePrototype(proto, className, target, baseInstFuncs, setInstanceFunc) {\r\n function _createDynamicPrototype(proto, funcName) {\r\n var dynProtoProxy = function () {\r\n // Use the instance or prototype function\r\n var instFunc = _getInstFunc(this, funcName, proto, dynProtoProxy) || _getProtoFunc(funcName, proto, dynProtoProxy);\r\n return instFunc.apply(this, arguments);\r\n };\r\n // Tag this function as a proxy to support replacing dynamic proxy elements (primary use case is for unit testing\r\n // via which can dynamically replace the prototype function reference)\r\n dynProtoProxy[DynProxyTag] = 1;\r\n return dynProtoProxy;\r\n }\r\n if (!_isObjectOrArrayPrototype(proto)) {\r\n var instFuncTable = target[DynInstFuncTable] = target[DynInstFuncTable] || {};\r\n var instFuncs_1 = instFuncTable[className] = (instFuncTable[className] || {}); // fetch and assign if as it may not exist yet\r\n // Set whether we are allow to lookup instances, if someone has set to false then do not re-enable\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n instFuncTable[DynAllowInstChkTag] = !!setInstanceFunc;\r\n }\r\n _forEachProp(target, function (name) {\r\n // Only add overridden functions\r\n if (_isDynamicCandidate(target, name, false) && target[name] !== baseInstFuncs[name]) {\r\n // Save the instance Function to the lookup table and remove it from the instance as it's not a dynamic proto function\r\n instFuncs_1[name] = target[name];\r\n delete target[name];\r\n // Add a dynamic proto if one doesn't exist or if a prototype function exists and it's not a dynamic one\r\n if (!_hasOwnProperty(proto, name) || (proto[name] && !proto[name][DynProxyTag])) {\r\n proto[name] = _createDynamicPrototype(proto, name);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Checks whether the passed prototype object appears to be correct by walking the prototype hierarchy of the instance\r\n * @param classProto The class prototype instance\r\n * @param thisTarget The current instance that will be checked whether the passed prototype instance is in the hierarchy\r\n * @ignore\r\n */\r\nfunction _checkPrototype(classProto, thisTarget) {\r\n var thisProto = _getObjProto(thisTarget);\r\n while (thisProto && !_isObjectArrayOrFunctionPrototype(thisProto)) {\r\n if (thisProto === classProto) {\r\n return true;\r\n }\r\n thisProto = _getObjProto(thisProto);\r\n }\r\n return false;\r\n}\r\n/**\r\n * Gets the current prototype name using the ES6 name if available otherwise falling back to a use unknown as the name.\r\n * It's not critical for this to return a name, it's used to decorate the generated unique name for easier debugging only.\r\n * @param target\r\n * @param unknownValue\r\n * @ignore\r\n */\r\nfunction _getObjName(target, unknownValue) {\r\n if (_hasOwnProperty(target, Prototype)) {\r\n // Look like a prototype\r\n return target.name || unknownValue || UnknownValue;\r\n }\r\n return (((target || {})[Constructor]) || {}).name || unknownValue || UnknownValue;\r\n}\r\n/**\r\n * Helper function when creating dynamic (inline) functions for classes, this helper performs the following tasks :-\r\n * - Saves references to all defined base class functions\r\n * - Calls the delegateFunc with the current target (this) and a base object reference that can be used to call all \"super\" functions.\r\n * - Will populate the class prototype for all overridden functions to support class extension that call the prototype instance.\r\n * Callers should use this helper when declaring all function within the constructor of a class, as mentioned above the delegateFunc is\r\n * passed both the target \"this\" and an object that can be used to call any base (super) functions, using this based object in place of\r\n * super.XXX() (which gets expanded to _super.prototype.XXX()) provides a better minification outcome and also ensures the correct \"this\"\r\n * context is maintained as TypeScript creates incorrect references using super.XXXX() for dynamically defined functions i.e. Functions\r\n * defined in the constructor or some other function (rather than declared as complete typescript functions).\r\n * ### Usage\r\n * ```typescript\r\n * import dynamicProto from \"@microsoft/dynamicproto-js\";\r\n * class ExampleClass extends BaseClass {\r\n * constructor() {\r\n * dynamicProto(ExampleClass, this, (_self, base) => {\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.newFunc = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * ...\r\n * }\r\n * }\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.myFunction = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * // Call the base version of the function that we are overriding\r\n * base.myFunction();\r\n * }\r\n * ...\r\n * }\r\n * _self.initialize = () => {\r\n * ...\r\n * }\r\n * // Warnings: While the following will work as _self is simply a reference to\r\n * // this, if anyone overrides myFunction() the overridden will be called first\r\n * // as the normal JavaScript method resolution will occur and the defined\r\n * // _self.initialize() function is actually gets removed from the instance and\r\n * // a proxy prototype version is created to reference the created method.\r\n * _self.initialize();\r\n * });\r\n * }\r\n * }\r\n * ```\r\n * @typeparam DPType This is the generic type of the class, used to keep intellisense valid\r\n * @typeparam DPCls The type that contains the prototype of the current class\r\n * @param theClass - This is the current class instance which contains the prototype for the current class\r\n * @param target - The current \"this\" (target) reference, when the class has been extended this.prototype will not be the 'theClass' value.\r\n * @param delegateFunc - The callback function (closure) that will create the dynamic function\r\n * @param options - Additional options to configure how the dynamic prototype operates\r\n */\r\nexport default function dynamicProto(theClass, target, delegateFunc, options) {\r\n // Make sure that the passed theClass argument looks correct\r\n if (!_hasOwnProperty(theClass, Prototype)) {\r\n _throwTypeError(\"theClass is an invalid class definition.\");\r\n }\r\n // Quick check to make sure that the passed theClass argument looks correct (this is a common copy/paste error)\r\n var classProto = theClass[Prototype];\r\n if (!_checkPrototype(classProto, target)) {\r\n _throwTypeError(\"[\" + _getObjName(theClass) + \"] is not in class hierarchy of [\" + _getObjName(target) + \"]\");\r\n }\r\n var className = null;\r\n if (_hasOwnProperty(classProto, DynClassName)) {\r\n // Only grab the class name if it's defined on this prototype (i.e. don't walk the prototype chain)\r\n className = classProto[DynClassName];\r\n }\r\n else {\r\n // As not all browser support name on the prototype creating a unique dynamic one if we have not already\r\n // assigned one, so we can use a simple string as the lookup rather than an object for the dynamic instance\r\n // function table lookup.\r\n className = DynClassNamePrefix + _getObjName(theClass, \"_\") + \"$\" + _dynamicNames;\r\n _dynamicNames++;\r\n classProto[DynClassName] = className;\r\n }\r\n var perfOptions = dynamicProto[DynProtoDefaultOptions];\r\n var useBaseInst = !!perfOptions[strUseBaseInst];\r\n if (useBaseInst && options && options[strUseBaseInst] !== undefined) {\r\n useBaseInst = !!options[strUseBaseInst];\r\n }\r\n // Get the current instance functions\r\n var instFuncs = _getInstanceFuncs(target);\r\n // Get all of the functions for any base instance (before they are potentially overridden)\r\n var baseFuncs = _getBaseFuncs(classProto, target, instFuncs, useBaseInst);\r\n // Execute the delegate passing in both the current target \"this\" and \"base\" function references\r\n // Note casting the same type as we don't actually have the base class here and this will provide some intellisense support\r\n delegateFunc(target, baseFuncs);\r\n // Don't allow setting instance functions for older IE instances\r\n var setInstanceFunc = !!_objGetPrototypeOf && !!perfOptions[strSetInstFuncs];\r\n if (setInstanceFunc && options) {\r\n setInstanceFunc = !!options[strSetInstFuncs];\r\n }\r\n // Populate the Prototype for any overridden instance functions\r\n _populatePrototype(classProto, className, target, instFuncs, setInstanceFunc !== false);\r\n}\r\n/**\r\n * Exposes the default global options to allow global configuration, if the global values are disabled these will override\r\n * any passed values. This is primarily exposed to support unit-testing without the need for individual classes to expose\r\n * their internal usage of dynamic proto.\r\n */\r\nvar perfDefaults = {\r\n setInstFuncs: true,\r\n useBaseInst: true\r\n};\r\n// And expose for testing\r\ndynamicProto[DynProtoDefaultOptions] = perfDefaults;\r\n//# sourceMappingURL=DynamicProto.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport var LoggingSeverity;\r\n(function (LoggingSeverity) {\r\n /**\r\n * Error will be sent as internal telemetry\r\n */\r\n LoggingSeverity[LoggingSeverity[\"CRITICAL\"] = 1] = \"CRITICAL\";\r\n /**\r\n * Error will NOT be sent as internal telemetry, and will only be shown in browser console\r\n */\r\n LoggingSeverity[LoggingSeverity[\"WARNING\"] = 2] = \"WARNING\";\r\n})(LoggingSeverity || (LoggingSeverity = {}));\r\n/**\r\n * Internal message ID. Please create a new one for every conceptually different message. Please keep alphabetically ordered\r\n */\r\nexport var _InternalMessageId = {\r\n // Non user actionable\r\n BrowserDoesNotSupportLocalStorage: 0,\r\n BrowserCannotReadLocalStorage: 1,\r\n BrowserCannotReadSessionStorage: 2,\r\n BrowserCannotWriteLocalStorage: 3,\r\n BrowserCannotWriteSessionStorage: 4,\r\n BrowserFailedRemovalFromLocalStorage: 5,\r\n BrowserFailedRemovalFromSessionStorage: 6,\r\n CannotSendEmptyTelemetry: 7,\r\n ClientPerformanceMathError: 8,\r\n ErrorParsingAISessionCookie: 9,\r\n ErrorPVCalc: 10,\r\n ExceptionWhileLoggingError: 11,\r\n FailedAddingTelemetryToBuffer: 12,\r\n FailedMonitorAjaxAbort: 13,\r\n FailedMonitorAjaxDur: 14,\r\n FailedMonitorAjaxOpen: 15,\r\n FailedMonitorAjaxRSC: 16,\r\n FailedMonitorAjaxSend: 17,\r\n FailedMonitorAjaxGetCorrelationHeader: 18,\r\n FailedToAddHandlerForOnBeforeUnload: 19,\r\n FailedToSendQueuedTelemetry: 20,\r\n FailedToReportDataLoss: 21,\r\n FlushFailed: 22,\r\n MessageLimitPerPVExceeded: 23,\r\n MissingRequiredFieldSpecification: 24,\r\n NavigationTimingNotSupported: 25,\r\n OnError: 26,\r\n SessionRenewalDateIsZero: 27,\r\n SenderNotInitialized: 28,\r\n StartTrackEventFailed: 29,\r\n StopTrackEventFailed: 30,\r\n StartTrackFailed: 31,\r\n StopTrackFailed: 32,\r\n TelemetrySampledAndNotSent: 33,\r\n TrackEventFailed: 34,\r\n TrackExceptionFailed: 35,\r\n TrackMetricFailed: 36,\r\n TrackPVFailed: 37,\r\n TrackPVFailedCalc: 38,\r\n TrackTraceFailed: 39,\r\n TransmissionFailed: 40,\r\n FailedToSetStorageBuffer: 41,\r\n FailedToRestoreStorageBuffer: 42,\r\n InvalidBackendResponse: 43,\r\n FailedToFixDepricatedValues: 44,\r\n InvalidDurationValue: 45,\r\n TelemetryEnvelopeInvalid: 46,\r\n CreateEnvelopeError: 47,\r\n // User actionable\r\n CannotSerializeObject: 48,\r\n CannotSerializeObjectNonSerializable: 49,\r\n CircularReferenceDetected: 50,\r\n ClearAuthContextFailed: 51,\r\n ExceptionTruncated: 52,\r\n IllegalCharsInName: 53,\r\n ItemNotInArray: 54,\r\n MaxAjaxPerPVExceeded: 55,\r\n MessageTruncated: 56,\r\n NameTooLong: 57,\r\n SampleRateOutOfRange: 58,\r\n SetAuthContextFailed: 59,\r\n SetAuthContextFailedAccountName: 60,\r\n StringValueTooLong: 61,\r\n StartCalledMoreThanOnce: 62,\r\n StopCalledWithoutStart: 63,\r\n TelemetryInitializerFailed: 64,\r\n TrackArgumentsNotSpecified: 65,\r\n UrlTooLong: 66,\r\n SessionStorageBufferFull: 67,\r\n CannotAccessCookie: 68,\r\n IdTooLong: 69,\r\n InvalidEvent: 70,\r\n FailedMonitorAjaxSetRequestHeader: 71,\r\n SendBrowserInfoOnUserInit: 72,\r\n PluginException: 73,\r\n NotificationException: 74,\r\n SnippetScriptLoadFailure: 99,\r\n InvalidInstrumentationKey: 100,\r\n CannotParseAiBlobValue: 101,\r\n InvalidContentBlob: 102,\r\n TrackPageActionEventFailed: 103\r\n};\r\n//# sourceMappingURL=LoggingEnums.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strShimUndefined, strShimObject, strShimPrototype, strShimFunction } from \"@microsoft/applicationinsights-shims\";\r\n// RESTRICT and AVOID circular dependencies you should not import other contained modules or export the contents of this file directly\r\n// Added to help with minfication\r\nvar strOnPrefix = \"on\";\r\nvar strAttachEvent = \"attachEvent\";\r\nvar strAddEventHelper = \"addEventListener\";\r\nvar strDetachEvent = \"detachEvent\";\r\nvar strRemoveEventListener = \"removeEventListener\";\r\nvar strHasOwnProperty = \"hasOwnProperty\";\r\nvar ObjClass = Object;\r\nvar ObjProto = ObjClass[strShimPrototype];\r\nvar _objHasOwnProperty = ObjProto[strHasOwnProperty];\r\nvar _objDefineProperty = ObjClass[\"defineProperty\"];\r\nvar _objAssign = ObjClass[\"assign\"];\r\nvar _objFreeze = ObjClass[\"freeze\"];\r\nvar _objSeal = ObjClass[\"seal\"];\r\nexport function objToString(obj) {\r\n return ObjProto.toString.call(obj);\r\n}\r\nexport function isTypeof(value, theType) {\r\n return typeof value === theType;\r\n}\r\n;\r\nexport function isUndefined(value) {\r\n return value === undefined || typeof value === strShimUndefined;\r\n}\r\n;\r\nexport function isNotUndefined(value) {\r\n return !isUndefined(value);\r\n}\r\nexport function isNullOrUndefined(value) {\r\n return (value === null || isUndefined(value));\r\n}\r\nexport function isNotNullOrUndefined(value) {\r\n return !isNullOrUndefined(value);\r\n}\r\nexport function hasOwnProperty(obj, prop) {\r\n return obj && _objHasOwnProperty.call(obj, prop);\r\n}\r\n;\r\nexport function isObject(value) {\r\n // Changing to inline for performance\r\n return typeof value === strShimObject;\r\n}\r\n;\r\nexport function isFunction(value) {\r\n // Changing to inline for performance\r\n return typeof value === strShimFunction;\r\n}\r\n;\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventNameWithoutOn String that specifies any of the standard DHTML Events without \"on\" prefix\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n var result = false;\r\n if (!isNullOrUndefined(obj)) {\r\n try {\r\n if (!isNullOrUndefined(obj[strAddEventHelper])) {\r\n // all browsers except IE before version 9\r\n obj[strAddEventHelper](eventNameWithoutOn, handlerRef, useCapture);\r\n result = true;\r\n }\r\n else if (!isNullOrUndefined(obj[strAttachEvent])) {\r\n // IE before version 9 \r\n obj[strAttachEvent](strOnPrefix + eventNameWithoutOn, handlerRef);\r\n result = true;\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventNameWithoutOn {string} - The name of the event\r\n * @param handlerRef {any} - The callback function that needs to be executed for the given event\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function detachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n if (!isNullOrUndefined(obj)) {\r\n try {\r\n if (!isNullOrUndefined(obj[strRemoveEventListener])) {\r\n obj[strRemoveEventListener](eventNameWithoutOn, handlerRef, useCapture);\r\n }\r\n else if (!isNullOrUndefined(obj[strDetachEvent])) {\r\n obj[strDetachEvent](strOnPrefix + eventNameWithoutOn, handlerRef);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n}\r\n/**\r\n * Validates that the string name conforms to the JS IdentifierName specification and if not\r\n * normalizes the name so that it would. This method does not identify or change any keywords\r\n * meaning that if you pass in a known keyword the same value will be returned.\r\n * This is a simplified version\r\n * @param name The name to validate\r\n */\r\nexport function normalizeJsName(name) {\r\n var value = name;\r\n var match = /([^\\w\\d_$])/g;\r\n if (match.test(name)) {\r\n value = name.replace(match, \"_\");\r\n }\r\n return value;\r\n}\r\n/**\r\n * This is a helper function for the equivalent of arForEach(objKeys(target), callbackFn), this is a\r\n * performance optimization to avoid the creation of a new array for large objects\r\n * @param target The target object to find and process the keys\r\n * @param callbackfn The function to call with the details\r\n */\r\nexport function objForEachKey(target, callbackfn) {\r\n if (target) {\r\n for (var prop in target) {\r\n if (_objHasOwnProperty.call(target, prop)) {\r\n callbackfn.call(target, prop, target[prop]);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n if (value && search) {\r\n var searchLen = search.length;\r\n var valLen = value.length;\r\n if (value === search) {\r\n return true;\r\n }\r\n else if (valLen >= searchLen) {\r\n var pos = valLen - 1;\r\n for (var lp = searchLen - 1; lp >= 0; lp--) {\r\n if (value[pos] != search[lp]) {\r\n return false;\r\n }\r\n pos--;\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * The strStartsWith() method determines whether a string starts with the characters of the specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param checkValue - The characters to be searched for at the start of the value.\r\n * @returns true if the given search value is found at the start of the string, otherwise false.\r\n*/\r\nexport function strStartsWith(value, checkValue) {\r\n // Using helper for performance and because string startsWith() is not available on IE\r\n var result = false;\r\n if (value && checkValue) {\r\n var chkLen = checkValue.length;\r\n if (value === checkValue) {\r\n return true;\r\n }\r\n else if (value.length >= chkLen) {\r\n for (var lp = 0; lp < chkLen; lp++) {\r\n if (value[lp] !== checkValue[lp]) {\r\n return false;\r\n }\r\n }\r\n result = true;\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * A simple wrapper (for minification support) to check if the value contains the search string.\r\n * @param value - The string value to check for the existence of the search value\r\n * @param search - The value search within the value\r\n */\r\nexport function strContains(value, search) {\r\n if (value && search) {\r\n return value.indexOf(search) !== -1;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Check if an object is of type Date\r\n */\r\nexport function isDate(obj) {\r\n return objToString(obj) === \"[object Date]\";\r\n}\r\n/**\r\n * Check if an object is of type Array\r\n */\r\nexport function isArray(obj) {\r\n return objToString(obj) === \"[object Array]\";\r\n}\r\n/**\r\n * Check if an object is of type Error\r\n */\r\nexport function isError(obj) {\r\n return objToString(obj) === \"[object Error]\";\r\n}\r\n/**\r\n * Checks if the type of value is a string.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a string, false otherwise.\r\n */\r\nexport function isString(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"string\";\r\n}\r\n/**\r\n * Checks if the type of value is a number.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a number, false otherwise.\r\n */\r\nexport function isNumber(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"number\";\r\n}\r\n/**\r\n * Checks if the type of value is a boolean.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a boolean, false otherwise.\r\n */\r\nexport function isBoolean(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"boolean\";\r\n}\r\n/**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\nexport function toISOString(date) {\r\n if (isDate(date)) {\r\n var pad = function (num) {\r\n var r = String(num);\r\n if (r.length === 1) {\r\n r = \"0\" + r;\r\n }\r\n return r;\r\n };\r\n return date.getUTCFullYear()\r\n + \"-\" + pad(date.getUTCMonth() + 1)\r\n + \"-\" + pad(date.getUTCDate())\r\n + \"T\" + pad(date.getUTCHours())\r\n + \":\" + pad(date.getUTCMinutes())\r\n + \":\" + pad(date.getUTCSeconds())\r\n + \".\" + String((date.getUTCMilliseconds() / 1000).toFixed(3)).slice(2, 5)\r\n + \"Z\";\r\n }\r\n}\r\n/**\r\n * Performs the specified action for each element in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. It can return -1 to break out of the loop\r\n * @param thisArg [Optional] An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\nexport function arrForEach(arr, callbackfn, thisArg) {\r\n var len = arr.length;\r\n for (var idx = 0; idx < len; idx++) {\r\n if (idx in arr) {\r\n if (callbackfn.call(thisArg || arr, arr[idx], idx, arr) === -1) {\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * Returns the index of the first occurrence of a value in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param searchElement The value to locate in the array.\r\n * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\r\n */\r\nexport function arrIndexOf(arr, searchElement, fromIndex) {\r\n var len = arr.length;\r\n var from = fromIndex || 0;\r\n for (var lp = Math.max(from >= 0 ? from : len - Math.abs(from), 0); lp < len; lp++) {\r\n if (lp in arr && arr[lp] === searchElement) {\r\n return lp;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Calls a defined callback function on each element of an array, and returns an array that contains the results. This helper exists\r\n * to avoid adding a polyfil for older browsers that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page\r\n * checks for presence/absence of the prototype implementation. Note: For consistency this will not use the Array.prototype.xxxx\r\n * implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\r\n * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\nexport function arrMap(arr, callbackfn, thisArg) {\r\n var len = arr.length;\r\n var _this = thisArg || arr;\r\n var results = new Array(len);\r\n for (var lp = 0; lp < len; lp++) {\r\n if (lp in arr) {\r\n results[lp] = callbackfn.call(_this, arr[lp], arr);\r\n }\r\n }\r\n return results;\r\n}\r\n/**\r\n * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is\r\n * provided as an argument in the next call to the callback function. This helper exists to avoid adding a polyfil for older browsers that do not define\r\n * Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype implementation. Note: For consistency\r\n * this will not use the Array.prototype.xxxx implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.\r\n * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\r\n */\r\nexport function arrReduce(arr, callbackfn, initialValue) {\r\n var len = arr.length;\r\n var lp = 0;\r\n var value;\r\n // Specifically checking the number of passed arguments as the value could be anything\r\n if (arguments.length >= 3) {\r\n value = arguments[2];\r\n }\r\n else {\r\n while (lp < len && !(lp in arr)) {\r\n lp++;\r\n }\r\n value = arr[lp++];\r\n }\r\n while (lp < len) {\r\n if (lp in arr) {\r\n value = callbackfn(value, arr[lp], lp, arr);\r\n }\r\n lp++;\r\n }\r\n return value;\r\n}\r\n/**\r\n * helper method to trim strings (IE8 does not implement String.prototype.trim)\r\n */\r\nexport function strTrim(str) {\r\n if (typeof str !== \"string\") {\r\n return str;\r\n }\r\n return str.replace(/^\\s+|\\s+$/g, \"\");\r\n}\r\nvar _objKeysHasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');\r\nvar _objKeysDontEnums = [\r\n 'toString',\r\n 'toLocaleString',\r\n 'valueOf',\r\n 'hasOwnProperty',\r\n 'isPrototypeOf',\r\n 'propertyIsEnumerable',\r\n 'constructor'\r\n];\r\n/**\r\n * Returns the names of the enumerable string properties and methods of an object. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Object.keys eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.keys implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\r\n */\r\nexport function objKeys(obj) {\r\n var objType = typeof obj;\r\n if (objType !== strShimFunction && (objType !== strShimObject || obj === null)) {\r\n throw new TypeError('objKeys called on non-object');\r\n }\r\n var result = [];\r\n for (var prop in obj) {\r\n if (obj && _objHasOwnProperty.call(obj, prop)) {\r\n result.push(prop);\r\n }\r\n }\r\n if (_objKeysHasDontEnumBug) {\r\n var dontEnumsLength = _objKeysDontEnums.length;\r\n for (var lp = 0; lp < dontEnumsLength; lp++) {\r\n if (obj && _objHasOwnProperty.call(obj, _objKeysDontEnums[lp])) {\r\n result.push(_objKeysDontEnums[lp]);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Try to define get/set object property accessors for the target object/prototype, this will provide compatibility with\r\n * existing API definition when run within an ES5+ container that supports accessors but still enable the code to be loaded\r\n * and executed in an ES3 container, providing basic IE8 compatibility.\r\n * @param target The object on which to define the property.\r\n * @param prop The name of the property to be defined or modified.\r\n * @param getProp The getter function to wire against the getter.\r\n * @param setProp The setter function to wire against the setter.\r\n * @returns True if it was able to create the accessors otherwise false\r\n */\r\nexport function objDefineAccessors(target, prop, getProp, setProp) {\r\n if (_objDefineProperty) {\r\n try {\r\n var descriptor = {\r\n enumerable: true,\r\n configurable: true\r\n };\r\n if (getProp) {\r\n descriptor.get = getProp;\r\n }\r\n if (setProp) {\r\n descriptor.set = setProp;\r\n }\r\n _objDefineProperty(target, prop, descriptor);\r\n return true;\r\n }\r\n catch (e) {\r\n // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n // We will just ignore this here.\r\n }\r\n }\r\n return false;\r\n}\r\nexport function objFreeze(value) {\r\n if (_objFreeze) {\r\n value = _objFreeze(value);\r\n }\r\n return value;\r\n}\r\nexport function objSeal(value) {\r\n if (_objSeal) {\r\n value = _objSeal(value);\r\n }\r\n return value;\r\n}\r\n/**\r\n * Return the current time via the Date now() function (if available) and falls back to (new Date()).getTime() if now() is unavailable (IE8 or less)\r\n * https://caniuse.com/#search=Date.now\r\n */\r\nexport function dateNow() {\r\n var dt = Date;\r\n if (dt.now) {\r\n return dt.now();\r\n }\r\n return new dt().getTime();\r\n}\r\n/**\r\n * Returns the name of object if it's an Error. Otherwise, returns empty string.\r\n */\r\nexport function getExceptionName(object) {\r\n if (isError(object)) {\r\n return object.name;\r\n }\r\n return \"\";\r\n}\r\n/**\r\n * Sets the provided value on the target instance using the field name when the provided chk function returns true, the chk\r\n * function will only be called if the new value is no equal to the original value.\r\n * @param target - The target object\r\n * @param field - The key of the target\r\n * @param value - The value to set\r\n * @param valChk - [Optional] Callback to check the value that if supplied will be called check if the new value can be set\r\n * @param srcChk - [Optional] Callback to check to original value that if supplied will be called if the new value should be set (if allowed)\r\n * @returns The existing or new value, depending what was set\r\n */\r\nexport function setValue(target, field, value, valChk, srcChk) {\r\n var theValue = value;\r\n if (target) {\r\n theValue = target[field];\r\n if (theValue !== value && (!srcChk || srcChk(theValue)) && (!valChk || valChk(value))) {\r\n theValue = value;\r\n target[field] = theValue;\r\n }\r\n }\r\n return theValue;\r\n}\r\n/**\r\n * Returns the current value from the target object if not null or undefined otherwise sets the new value and returns it\r\n * @param target - The target object to return or set the default value\r\n * @param field - The key for the field to set on the target\r\n * @param defValue - [Optional] The value to set if not already present, when not provided a empty object will be added\r\n */\r\nexport function getSetValue(target, field, defValue) {\r\n var theValue;\r\n if (target) {\r\n theValue = target[field];\r\n if (!theValue && isNullOrUndefined(theValue)) {\r\n // Supports having the default as null\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n target[field] = theValue;\r\n }\r\n }\r\n else {\r\n // Expanded for performance so we only check defValue if required\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n }\r\n return theValue;\r\n}\r\nexport function isNotTruthy(value) {\r\n return !value;\r\n}\r\nexport function isTruthy(value) {\r\n return !!value;\r\n}\r\nexport function throwError(message) {\r\n throw new Error(message);\r\n}\r\n/**\r\n * Effectively assigns all enumerable properties (not just own properties) and functions (including inherited prototype) from\r\n * the source object to the target, it attempts to use proxy getters / setters (if possible) and proxy functions to avoid potential\r\n * implementation issues by assigning prototype functions as instance ones\r\n *\r\n * This method is the primary method used to \"update\" the snippet proxy with the ultimate implementations.\r\n *\r\n * Special ES3 Notes:\r\n * Updates (setting) of direct property values on the target or indirectly on the source object WILL NOT WORK PROPERLY, updates to the\r\n * properties of \"referenced\" object will work (target.context.newValue = 10 => will be reflected in the source.context as it's the\r\n * same object). ES3 Failures: assigning target.myProp = 3 -> Won't change source.myProp = 3, likewise the reverse would also fail.\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param chkSet - An optional callback to determine whether a specific property/function should be proxied\r\n * @memberof Initialization\r\n */\r\nexport function proxyAssign(target, source, chkSet) {\r\n if (target && source && target !== source && isObject(target) && isObject(source)) {\r\n var _loop_1 = function (field) {\r\n if (isString(field)) {\r\n var value = source[field];\r\n if (isFunction(value)) {\r\n if (!chkSet || chkSet(field, true, source, target)) {\r\n // Create a proxy function rather than just copying the (possible) prototype to the new object as an instance function\r\n target[field] = (function (funcName) {\r\n return function () {\r\n // Capture the original arguments passed to the method\r\n var originalArguments = arguments;\r\n return source[funcName].apply(source, originalArguments);\r\n };\r\n })(field);\r\n }\r\n }\r\n else if (!chkSet || chkSet(field, false, source, target)) {\r\n if (hasOwnProperty(target, field)) {\r\n // Remove any previous instance property\r\n delete target[field];\r\n }\r\n if (!objDefineAccessors(target, field, function () {\r\n return source[field];\r\n }, function (theValue) {\r\n source[field] = theValue;\r\n })) {\r\n // Unable to create an accessor, so just assign the values as a fallback\r\n // -- this will (mostly) work for objects\r\n // -- but will fail for accessing primitives (if the source changes it) and all types of \"setters\" as the source won't be modified\r\n target[field] = value;\r\n }\r\n }\r\n }\r\n };\r\n // effectively apply/proxy full source to the target instance\r\n for (var field in source) {\r\n _loop_1(field);\r\n }\r\n }\r\n return target;\r\n}\r\n/**\r\n * Simpler helper to create a dynamic class that implements the interface and populates the values with the defaults.\r\n * Only instance properties (hasOwnProperty) values are copied from the defaults to the new instance\r\n * @param defaults Simple helper\r\n */\r\nexport function createClassFromInterface(defaults) {\r\n return /** @class */ (function () {\r\n function class_1() {\r\n var _this = this;\r\n if (defaults) {\r\n objForEachKey(defaults, function (field, value) {\r\n _this[field] = value;\r\n });\r\n }\r\n }\r\n return class_1;\r\n }());\r\n}\r\n/**\r\n * A helper function to assist with JIT performance for objects that have properties added / removed dynamically\r\n * this is primarily for chromium based browsers and has limited effects on Firefox and none of IE. Only call this\r\n * function after you have finished \"updating\" the object, calling this within loops reduces or defeats the benefits.\r\n * This helps when iterating using for..in, objKeys() and objForEach()\r\n * @param theObject - The object to be optimized if possible\r\n */\r\nexport function optimizeObject(theObject) {\r\n // V8 Optimization to cause the JIT compiler to create a new optimized object for looking up the own properties\r\n // primarily for object with <= 19 properties for >= 20 the effect is reduced or non-existent\r\n if (theObject) {\r\n theObject = ObjClass(_objAssign ? _objAssign({}, theObject) : theObject);\r\n }\r\n return theObject;\r\n}\r\n//# sourceMappingURL=HelperFuncs.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { getGlobal as shimsGetGlobal, strShimUndefined, strShimObject, strShimPrototype, strShimFunction } from \"@microsoft/applicationinsights-shims\";\r\nimport { strContains } from \"./HelperFuncs\";\r\n/**\r\n * This file exists to hold environment utilities that are required to check and\r\n * validate the current operating environment. Unless otherwise required, please\r\n * only defined methods (functions) in this class so that users of these\r\n * functions/properties only need to include those that are used within their own modules.\r\n */\r\nexport var strUndefined = strShimUndefined;\r\nexport var strObject = strShimObject;\r\nexport var strPrototype = strShimPrototype;\r\nexport var strFunction = strShimFunction;\r\nvar strWindow = \"window\";\r\nvar strDocument = \"document\";\r\nvar strNavigator = \"navigator\";\r\nvar strHistory = \"history\";\r\nvar strLocation = \"location\";\r\nvar strConsole = \"console\";\r\nvar strPerformance = \"performance\";\r\nvar strJSON = \"JSON\";\r\nvar strCrypto = \"crypto\";\r\nvar strMsCrypto = \"msCrypto\";\r\nvar strReactNative = \"ReactNative\";\r\nvar strMsie = \"msie\";\r\nvar strTrident = \"trident/\";\r\nvar _isTrident = null;\r\nvar _navUserAgentCheck = null;\r\nvar _enableMocks = false;\r\n/**\r\n * Enable the lookup of test mock objects if requested\r\n * @param enabled\r\n */\r\nexport function setEnableEnvMocks(enabled) {\r\n _enableMocks = enabled;\r\n}\r\n/**\r\n * Returns the current global scope object, for a normal web page this will be the current\r\n * window, for a Web Worker this will be current worker global scope via \"self\". The internal\r\n * implementation returns the first available instance object in the following order\r\n * - globalThis (New standard)\r\n * - self (Will return the current window instance for supported browsers)\r\n * - window (fallback for older browser implementations)\r\n * - global (NodeJS standard)\r\n * - (When all else fails)\r\n * While the return type is a Window for the normal case, not all environments will support all\r\n * of the properties or functions.\r\n */\r\nexport var getGlobal = shimsGetGlobal;\r\n/**\r\n * Return the named global object if available, will return null if the object is not available.\r\n * @param name The globally named object\r\n */\r\nexport function getGlobalInst(name) {\r\n var gbl = getGlobal();\r\n if (gbl && gbl[name]) {\r\n return gbl[name];\r\n }\r\n // Test workaround, for environments where .window (when global == window) doesn't return the base window\r\n if (name === strWindow && hasWindow()) {\r\n // tslint:disable-next-line: no-angle-bracket-type-assertion\r\n return window;\r\n }\r\n return null;\r\n}\r\n/**\r\n * Checks if window object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a window\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: window is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasWindow() {\r\n return Boolean(typeof window === strObject && window);\r\n}\r\n/**\r\n * Returns the global window object if it is present otherwise null.\r\n * This helper is used to access the window object without causing an exception\r\n * \"Uncaught ReferenceError: window is not defined\"\r\n */\r\nexport function getWindow() {\r\n if (hasWindow()) {\r\n return window;\r\n }\r\n // Return the global instance or null\r\n return getGlobalInst(strWindow);\r\n}\r\n/**\r\n * Checks if document object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a document\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: document is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasDocument() {\r\n return Boolean(typeof document === strObject && document);\r\n}\r\n/**\r\n * Returns the global document object if it is present otherwise null.\r\n * This helper is used to access the document object without causing an exception\r\n * \"Uncaught ReferenceError: document is not defined\"\r\n */\r\nexport function getDocument() {\r\n if (hasDocument()) {\r\n return document;\r\n }\r\n return getGlobalInst(strDocument);\r\n}\r\n/**\r\n * Checks if navigator object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a navigator\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: navigator is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasNavigator() {\r\n return Boolean(typeof navigator === strObject && navigator);\r\n}\r\n/**\r\n * Returns the global navigator object if it is present otherwise null.\r\n * This helper is used to access the navigator object without causing an exception\r\n * \"Uncaught ReferenceError: navigator is not defined\"\r\n */\r\nexport function getNavigator() {\r\n if (hasNavigator()) {\r\n return navigator;\r\n }\r\n return getGlobalInst(strNavigator);\r\n}\r\n/**\r\n * Checks if history object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: history is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasHistory() {\r\n return Boolean(typeof history === strObject && history);\r\n}\r\n/**\r\n * Returns the global history object if it is present otherwise null.\r\n * This helper is used to access the history object without causing an exception\r\n * \"Uncaught ReferenceError: history is not defined\"\r\n */\r\nexport function getHistory() {\r\n if (hasHistory()) {\r\n return history;\r\n }\r\n return getGlobalInst(strHistory);\r\n}\r\n/**\r\n * Returns the global location object if it is present otherwise null.\r\n * This helper is used to access the location object without causing an exception\r\n * \"Uncaught ReferenceError: location is not defined\"\r\n */\r\nexport function getLocation(checkForMock) {\r\n if (checkForMock && _enableMocks) {\r\n var mockLocation = getGlobalInst(\"__mockLocation\");\r\n if (mockLocation) {\r\n return mockLocation;\r\n }\r\n }\r\n if (typeof location === strObject && location) {\r\n return location;\r\n }\r\n return getGlobalInst(strLocation);\r\n}\r\n/**\r\n * Returns the global console object\r\n */\r\nexport function getConsole() {\r\n if (typeof console !== strUndefined) {\r\n return console;\r\n }\r\n return getGlobalInst(strConsole);\r\n}\r\n/**\r\n * Returns the performance object if it is present otherwise null.\r\n * This helper is used to access the performance object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getPerformance() {\r\n return getGlobalInst(strPerformance);\r\n}\r\n/**\r\n * Checks if JSON object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: JSON is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasJSON() {\r\n return Boolean((typeof JSON === strObject && JSON) || getGlobalInst(strJSON) !== null);\r\n}\r\n/**\r\n * Returns the global JSON object if it is present otherwise null.\r\n * This helper is used to access the JSON object without causing an exception\r\n * \"Uncaught ReferenceError: JSON is not defined\"\r\n */\r\nexport function getJSON() {\r\n if (hasJSON()) {\r\n return JSON || getGlobalInst(strJSON);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getCrypto() {\r\n return getGlobalInst(strCrypto);\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getMsCrypto() {\r\n return getGlobalInst(strMsCrypto);\r\n}\r\n/**\r\n * Returns whether the environment is reporting that we are running in a React Native Environment\r\n */\r\nexport function isReactNative() {\r\n // If running in React Native, navigator.product will be populated\r\n var nav = getNavigator();\r\n if (nav && nav.product) {\r\n return nav.product === strReactNative;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Identifies whether the current environment appears to be IE\r\n */\r\nexport function isIE() {\r\n var nav = getNavigator();\r\n if (nav && (nav.userAgent !== _navUserAgentCheck || _isTrident === null)) {\r\n // Added to support test mocking of the user agent\r\n _navUserAgentCheck = nav.userAgent;\r\n var userAgent = (_navUserAgentCheck || \"\").toLowerCase();\r\n _isTrident = (strContains(userAgent, strMsie) || strContains(userAgent, strTrident));\r\n }\r\n return _isTrident;\r\n}\r\n/**\r\n * Gets IE version returning the document emulation mode if we are running on IE, or null otherwise\r\n */\r\nexport function getIEVersion(userAgentStr) {\r\n if (userAgentStr === void 0) { userAgentStr = null; }\r\n var myNav = userAgentStr ? userAgentStr.toLowerCase() : \"\";\r\n if (!userAgentStr) {\r\n var navigator_1 = getNavigator() || {};\r\n myNav = navigator_1 ? (navigator_1.userAgent || \"\").toLowerCase() : \"\";\r\n }\r\n if (strContains(myNav, strMsie)) {\r\n return parseInt(myNav.split(strMsie)[1]);\r\n }\r\n else if (strContains(myNav, strTrident)) {\r\n var tridentVer = parseInt(myNav.split(strTrident)[1]);\r\n if (tridentVer) {\r\n return tridentVer + 4;\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns string representation of an object suitable for diagnostics logging.\r\n */\r\nexport function dumpObj(object) {\r\n var objectTypeDump = Object[strShimPrototype].toString.call(object);\r\n var propertyValueDump = \"\";\r\n if (objectTypeDump === \"[object Error]\") {\r\n propertyValueDump = \"{ stack: '\" + object.stack + \"', message: '\" + object.message + \"', name: '\" + object.name + \"'\";\r\n }\r\n else if (hasJSON()) {\r\n propertyValueDump = getJSON().stringify(object);\r\n }\r\n return objectTypeDump + propertyValueDump;\r\n}\r\n//# sourceMappingURL=EnvUtils.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { _InternalMessageId, LoggingSeverity } from \"../JavaScriptSDK.Enums/LoggingEnums\";\r\nimport { hasJSON, getJSON, getConsole } from \"./EnvUtils\";\r\nimport dynamicProto from '@microsoft/dynamicproto-js';\r\nimport { isFunction, isNullOrUndefined, isUndefined } from \"./HelperFuncs\";\r\n/**\r\n * For user non actionable traces use AI Internal prefix.\r\n */\r\nvar AiNonUserActionablePrefix = \"AI (Internal): \";\r\n/**\r\n * Prefix of the traces in portal.\r\n */\r\nvar AiUserActionablePrefix = \"AI: \";\r\n/**\r\n * Session storage key for the prefix for the key indicating message type already logged\r\n */\r\nvar AIInternalMessagePrefix = \"AITR_\";\r\nfunction _sanitizeDiagnosticText(text) {\r\n if (text) {\r\n return \"\\\"\" + text.replace(/\\\"/g, \"\") + \"\\\"\";\r\n }\r\n return \"\";\r\n}\r\nvar _InternalLogMessage = /** @class */ (function () {\r\n function _InternalLogMessage(msgId, msg, isUserAct, properties) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var _self = this;\r\n _self.messageId = msgId;\r\n _self.message =\r\n (isUserAct ? AiUserActionablePrefix : AiNonUserActionablePrefix) +\r\n msgId;\r\n var strProps = \"\";\r\n if (hasJSON()) {\r\n strProps = getJSON().stringify(properties);\r\n }\r\n var diagnosticText = (msg ? \" message:\" + _sanitizeDiagnosticText(msg) : \"\") +\r\n (properties ? \" props:\" + _sanitizeDiagnosticText(strProps) : \"\");\r\n _self.message += diagnosticText;\r\n }\r\n _InternalLogMessage.dataType = \"MessageData\";\r\n return _InternalLogMessage;\r\n}());\r\nexport { _InternalLogMessage };\r\nexport function safeGetLogger(core, config) {\r\n return (core || {}).logger || new DiagnosticLogger(config);\r\n}\r\nvar DiagnosticLogger = /** @class */ (function () {\r\n function DiagnosticLogger(config) {\r\n this.identifier = 'DiagnosticLogger';\r\n /**\r\n * The internal logging queue\r\n */\r\n this.queue = [];\r\n /**\r\n * Count of internal messages sent\r\n */\r\n var _messageCount = 0;\r\n /**\r\n * Holds information about what message types were already logged to console or sent to server.\r\n */\r\n var _messageLogged = {};\r\n dynamicProto(DiagnosticLogger, this, function (_self) {\r\n if (isNullOrUndefined(config)) {\r\n config = {};\r\n }\r\n _self.consoleLoggingLevel = function () { return _getConfigValue('loggingLevelConsole', 0); };\r\n _self.telemetryLoggingLevel = function () { return _getConfigValue('loggingLevelTelemetry', 1); };\r\n _self.maxInternalMessageLimit = function () { return _getConfigValue('maxMessageLimit', 25); };\r\n _self.enableDebugExceptions = function () { return _getConfigValue('enableDebugExceptions', false); };\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n _self.throwInternal = function (severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var message = new _InternalLogMessage(msgId, msg, isUserAct, properties);\r\n if (_self.enableDebugExceptions()) {\r\n throw message;\r\n }\r\n else {\r\n if (!isUndefined(message) && !!message && !isUndefined(message.message)) {\r\n var logLevel = _self.consoleLoggingLevel();\r\n if (isUserAct) {\r\n // check if this message type was already logged to console for this page view and if so, don't log it again\r\n var messageKey = +message.messageId;\r\n if (!_messageLogged[messageKey] && logLevel >= LoggingSeverity.WARNING) {\r\n _self.warnToConsole(message.message);\r\n _messageLogged[messageKey] = true;\r\n }\r\n }\r\n else {\r\n // don't log internal AI traces in the console, unless the verbose logging is enabled\r\n if (logLevel >= LoggingSeverity.WARNING) {\r\n _self.warnToConsole(message.message);\r\n }\r\n }\r\n _self.logInternalMessage(severity, message);\r\n }\r\n }\r\n };\r\n /**\r\n * This will write a warning to the console if possible\r\n * @param message {string} - The warning message\r\n */\r\n _self.warnToConsole = function (message) {\r\n var theConsole = getConsole();\r\n if (!!theConsole) {\r\n var logFunc = 'log';\r\n if (theConsole.warn) {\r\n logFunc = 'warn';\r\n }\r\n if (isFunction(theConsole[logFunc])) {\r\n theConsole[logFunc](message);\r\n }\r\n }\r\n };\r\n /**\r\n * Resets the internal message count\r\n */\r\n _self.resetInternalMessageCount = function () {\r\n _messageCount = 0;\r\n _messageLogged = {};\r\n };\r\n /**\r\n * Logs a message to the internal queue.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\n _self.logInternalMessage = function (severity, message) {\r\n if (_areInternalMessagesThrottled()) {\r\n return;\r\n }\r\n // check if this message type was already logged for this session and if so, don't log it again\r\n var logMessage = true;\r\n var messageKey = AIInternalMessagePrefix + message.messageId;\r\n // if the session storage is not available, limit to only one message type per page view\r\n if (_messageLogged[messageKey]) {\r\n logMessage = false;\r\n }\r\n else {\r\n _messageLogged[messageKey] = true;\r\n }\r\n if (logMessage) {\r\n // Push the event in the internal queue\r\n if (severity <= _self.telemetryLoggingLevel()) {\r\n _self.queue.push(message);\r\n _messageCount++;\r\n }\r\n // When throttle limit reached, send a special event\r\n if (_messageCount === _self.maxInternalMessageLimit()) {\r\n var throttleLimitMessage = \"Internal events throttle limit per PageView reached for this app.\";\r\n var throttleMessage = new _InternalLogMessage(_InternalMessageId.MessageLimitPerPVExceeded, throttleLimitMessage, false);\r\n _self.queue.push(throttleMessage);\r\n _self.warnToConsole(throttleLimitMessage);\r\n }\r\n }\r\n };\r\n function _getConfigValue(name, defValue) {\r\n var value = config[name];\r\n if (!isNullOrUndefined(value)) {\r\n return value;\r\n }\r\n return defValue;\r\n }\r\n function _areInternalMessagesThrottled() {\r\n return _messageCount >= _self.maxInternalMessageLimit();\r\n }\r\n });\r\n }\r\n /**\r\n * When this is true the SDK will throw exceptions to aid in debugging.\r\n */\r\n DiagnosticLogger.prototype.enableDebugExceptions = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return false;\r\n };\r\n /**\r\n * 0: OFF (default)\r\n * 1: CRITICAL\r\n * 2: >= WARNING\r\n */\r\n DiagnosticLogger.prototype.consoleLoggingLevel = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 0;\r\n };\r\n /**\r\n * 0: OFF\r\n * 1: CRITICAL (default)\r\n * 2: >= WARNING\r\n */\r\n DiagnosticLogger.prototype.telemetryLoggingLevel = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 1;\r\n };\r\n /**\r\n * The maximum number of internal messages allowed to be sent per page view\r\n */\r\n DiagnosticLogger.prototype.maxInternalMessageLimit = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 25;\r\n };\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n DiagnosticLogger.prototype.throwInternal = function (severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * This will write a warning to the console if possible\r\n * @param message {string} - The warning message\r\n */\r\n DiagnosticLogger.prototype.warnToConsole = function (message) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Resets the internal message count\r\n */\r\n DiagnosticLogger.prototype.resetInternalMessageCount = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Logs a message to the internal queue.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\n DiagnosticLogger.prototype.logInternalMessage = function (severity, message) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return DiagnosticLogger;\r\n}());\r\nexport { DiagnosticLogger };\r\n//# sourceMappingURL=DiagnosticLogger.js.map","import dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateNow, isArray, isFunction, objDefineAccessors } from './HelperFuncs';\r\nvar strExecutionContextKey = \"ctx\";\r\nvar PerfEvent = /** @class */ (function () {\r\n function PerfEvent(name, payloadDetails, isAsync) {\r\n var _self = this;\r\n var accessorDefined = false;\r\n _self.start = dateNow();\r\n _self.name = name;\r\n _self.isAsync = isAsync;\r\n _self.isChildEvt = function () { return false; };\r\n if (isFunction(payloadDetails)) {\r\n // Create an accessor to minimize the potential performance impact of executing the payloadDetails callback\r\n var theDetails_1;\r\n accessorDefined = objDefineAccessors(_self, 'payload', function () {\r\n // Delay the execution of the payloadDetails until needed\r\n if (!theDetails_1 && isFunction(payloadDetails)) {\r\n theDetails_1 = payloadDetails();\r\n // clear it out now so the referenced objects can be garbage collected\r\n payloadDetails = null;\r\n }\r\n return theDetails_1;\r\n });\r\n }\r\n _self.getCtx = function (key) {\r\n if (key) {\r\n // The parent and child links are located directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent.ParentContextKey || key === PerfEvent.ChildrenContextKey) {\r\n return _self[key];\r\n }\r\n return (_self[strExecutionContextKey] || {})[key];\r\n }\r\n return null;\r\n };\r\n _self.setCtx = function (key, value) {\r\n if (key) {\r\n // Put the parent and child links directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent.ParentContextKey) {\r\n // Simple assumption, if we are setting a parent then we must be a child\r\n if (!_self[key]) {\r\n _self.isChildEvt = function () { return true; };\r\n }\r\n _self[key] = value;\r\n }\r\n else if (key === PerfEvent.ChildrenContextKey) {\r\n _self[key] = value;\r\n }\r\n else {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n }\r\n };\r\n _self.complete = function () {\r\n var childTime = 0;\r\n var childEvts = _self.getCtx(PerfEvent.ChildrenContextKey);\r\n if (isArray(childEvts)) {\r\n for (var lp = 0; lp < childEvts.length; lp++) {\r\n var childEvt = childEvts[lp];\r\n if (childEvt) {\r\n childTime += childEvt.time;\r\n }\r\n }\r\n }\r\n _self.time = dateNow() - _self.start;\r\n _self.exTime = _self.time - childTime;\r\n _self.complete = function () { };\r\n if (!accessorDefined && isFunction(payloadDetails)) {\r\n // If we couldn't define the property set during complete -- to minimize the perf impact until after the time\r\n _self.payload = payloadDetails();\r\n }\r\n };\r\n }\r\n PerfEvent.ParentContextKey = \"parent\";\r\n PerfEvent.ChildrenContextKey = \"childEvts\";\r\n return PerfEvent;\r\n}());\r\nexport { PerfEvent };\r\nvar PerfManager = /** @class */ (function () {\r\n function PerfManager(manager) {\r\n /**\r\n * General bucket used for execution context set and retrieved via setCtx() and getCtx.\r\n * Defined as private so it can be visualized via the DebugPlugin\r\n */\r\n this.ctx = {};\r\n dynamicProto(PerfManager, this, function (_self) {\r\n _self.create = function (src, payloadDetails, isAsync) {\r\n // TODO (@MSNev): at some point we will want to add additional configuration to \"select\" which events to instrument\r\n // for now this is just a simple do everything.\r\n return new PerfEvent(src, payloadDetails, isAsync);\r\n };\r\n _self.fire = function (perfEvent) {\r\n if (perfEvent) {\r\n perfEvent.complete();\r\n if (manager) {\r\n manager.perfEvent(perfEvent);\r\n }\r\n }\r\n };\r\n _self.setCtx = function (key, value) {\r\n if (key) {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n };\r\n _self.getCtx = function (key) {\r\n return (_self[strExecutionContextKey] || {})[key];\r\n };\r\n });\r\n }\r\n /**\r\n * Create a new event and start timing, the manager may return null/undefined to indicate that it does not\r\n * want to monitor this source event.\r\n * @param src The source name of the event\r\n * @param payloadDetails - An optional callback function to fetch the payload details for the event.\r\n * @param isAsync - Is the event occurring from a async event\r\n */\r\n PerfManager.prototype.create = function (src, payload, isAsync) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Complete the perfEvent and fire any notifications.\r\n * @param perfEvent Fire the event which will also complete the passed event\r\n */\r\n PerfManager.prototype.fire = function (perfEvent) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Set an execution context value\r\n * @param key - The context key name\r\n * @param value - The value\r\n */\r\n PerfManager.prototype.setCtx = function (key, value) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Get the execution context value\r\n * @param key - The context key\r\n */\r\n PerfManager.prototype.getCtx = function (key) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return PerfManager;\r\n}());\r\nexport { PerfManager };\r\nvar doPerfActiveKey = \"CoreUtils.doPerf\";\r\n/**\r\n * Helper function to wrap a function with a perf event\r\n * @param mgrSource - The Performance Manager or a Performance provider source (may be null)\r\n * @param getSource - The callback to create the source name for the event (if perf monitoring is enabled)\r\n * @param func - The function to call and measure\r\n * @param details - A function to return the payload details\r\n * @param isAsync - Is the event / function being call asynchronously or synchronously\r\n */\r\nexport function doPerf(mgrSource, getSource, func, details, isAsync) {\r\n if (mgrSource) {\r\n var perfMgr = mgrSource;\r\n if (perfMgr && isFunction(perfMgr[\"getPerfMgr\"])) {\r\n // Looks like a perf manager provider object\r\n perfMgr = perfMgr[\"getPerfMgr\"]();\r\n }\r\n if (perfMgr) {\r\n var perfEvt = void 0;\r\n var currentActive = perfMgr.getCtx(doPerfActiveKey);\r\n try {\r\n perfEvt = perfMgr.create(getSource(), details, isAsync);\r\n if (perfEvt) {\r\n if (currentActive && perfEvt.setCtx) {\r\n perfEvt.setCtx(PerfEvent.ParentContextKey, currentActive);\r\n if (currentActive.getCtx && currentActive.setCtx) {\r\n var children = currentActive.getCtx(PerfEvent.ChildrenContextKey);\r\n if (!children) {\r\n children = [];\r\n currentActive.setCtx(PerfEvent.ChildrenContextKey, children);\r\n }\r\n children.push(perfEvt);\r\n }\r\n }\r\n // Set this event as the active event now\r\n perfMgr.setCtx(doPerfActiveKey, perfEvt);\r\n return func(perfEvt);\r\n }\r\n }\r\n catch (ex) {\r\n if (perfEvt && perfEvt.setCtx) {\r\n perfEvt.setCtx(\"exception\", ex);\r\n }\r\n }\r\n finally {\r\n // fire the perf event\r\n if (perfEvt) {\r\n perfMgr.fire(perfEvt);\r\n }\r\n // Reset the active event to the previous value\r\n perfMgr.setCtx(doPerfActiveKey, currentActive);\r\n }\r\n }\r\n }\r\n return func();\r\n}\r\n//# sourceMappingURL=PerfManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { doPerf } from \"./PerfManager\";\r\nimport { LoggingSeverity, _InternalMessageId } from '../JavaScriptSDK.Enums/LoggingEnums';\r\nimport { isFunction } from './HelperFuncs';\r\nvar TelemetryPluginChain = /** @class */ (function () {\r\n function TelemetryPluginChain(plugin, defItemCtx) {\r\n var _self = this;\r\n var _nextProxy = null;\r\n var _hasProcessTelemetry = isFunction(plugin.processTelemetry);\r\n var _hasSetNext = isFunction(plugin.setNextPlugin);\r\n _self._hasRun = false;\r\n _self.getPlugin = function () {\r\n return plugin;\r\n };\r\n _self.getNext = function () {\r\n return _nextProxy;\r\n };\r\n _self.setNext = function (nextPlugin) {\r\n _nextProxy = nextPlugin;\r\n };\r\n _self.processTelemetry = function (env, itemCtx) {\r\n if (!itemCtx) {\r\n // Looks like a plugin didn't pass the (optional) context, so restore to the default\r\n itemCtx = defItemCtx;\r\n }\r\n var identifier = plugin ? plugin.identifier : \"TelemetryPluginChain\";\r\n doPerf(itemCtx ? itemCtx.core() : null, function () { return identifier + \":processTelemetry\"; }, function () {\r\n if (plugin && _hasProcessTelemetry) {\r\n _self._hasRun = true;\r\n try {\r\n // Ensure that we keep the context in sync (for processNext()), just in case a plugin\r\n // doesn't calls processTelemetry() instead of itemContext.processNext() or some \r\n // other form of error occurred\r\n itemCtx.setNext(_nextProxy);\r\n if (_hasSetNext) {\r\n // Backward compatibility setting the next plugin on the instance\r\n plugin.setNextPlugin(_nextProxy);\r\n }\r\n // Set a flag on the next plugin so we know if it was attempted to be executed\r\n _nextProxy && (_nextProxy._hasRun = false);\r\n plugin.processTelemetry(env, itemCtx);\r\n }\r\n catch (error) {\r\n var hasRun = _nextProxy && _nextProxy._hasRun;\r\n if (!_nextProxy || !hasRun) {\r\n // Either we have no next plugin or the current one did not attempt to call the next plugin\r\n // Which means the current one is the root of the failure so log/report this failure\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.PluginException, \"Plugin [\" + plugin.identifier + \"] failed during processTelemetry - \" + error);\r\n }\r\n if (_nextProxy && !hasRun) {\r\n // As part of the failure the current plugin did not attempt to call the next plugin in the cahin\r\n // So rather than leave the pipeline dead in the water we call the next plugin\r\n _nextProxy.processTelemetry(env, itemCtx);\r\n }\r\n }\r\n }\r\n else if (_nextProxy) {\r\n _self._hasRun = true;\r\n // The underlying plugin is either not defined or does not have a processTelemetry implementation\r\n // so we still want the next plugin to be executed.\r\n _nextProxy.processTelemetry(env, itemCtx);\r\n }\r\n }, function () { return ({ item: env }); }, !(env.sync));\r\n };\r\n }\r\n return TelemetryPluginChain;\r\n}());\r\nexport { TelemetryPluginChain };\r\n//# sourceMappingURL=TelemetryPluginChain.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { safeGetLogger } from \"./DiagnosticLogger\";\r\nimport { TelemetryPluginChain } from \"./TelemetryPluginChain\";\r\nimport { arrForEach, isFunction, isNullOrUndefined, isUndefined } from \"./HelperFuncs\";\r\n/**\r\n * Creates the instance execution chain for the plugins\r\n */\r\nfunction _createProxyChain(plugins, itemCtx) {\r\n var proxies = [];\r\n if (plugins && plugins.length > 0) {\r\n // Create the proxies and wire up the next plugin chain\r\n var lastProxy = null;\r\n for (var idx = 0; idx < plugins.length; idx++) {\r\n var thePlugin = plugins[idx];\r\n if (thePlugin && isFunction(thePlugin.processTelemetry)) {\r\n // Only add plugins that are processors\r\n var newProxy = new TelemetryPluginChain(thePlugin, itemCtx);\r\n proxies.push(newProxy);\r\n if (lastProxy) {\r\n // Set this new proxy as the next for the previous one\r\n lastProxy.setNext(newProxy);\r\n }\r\n lastProxy = newProxy;\r\n }\r\n }\r\n }\r\n return proxies.length > 0 ? proxies[0] : null;\r\n}\r\nfunction _copyProxyChain(proxy, itemCtx, startAt) {\r\n var plugins = [];\r\n var add = startAt ? false : true;\r\n if (proxy) {\r\n while (proxy) {\r\n var thePlugin = proxy.getPlugin();\r\n if (add || thePlugin === startAt) {\r\n add = true;\r\n plugins.push(thePlugin);\r\n }\r\n proxy = proxy.getNext();\r\n }\r\n }\r\n if (!add) {\r\n plugins.push(startAt);\r\n }\r\n return _createProxyChain(plugins, itemCtx);\r\n}\r\nfunction _copyPluginChain(srcPlugins, itemCtx, startAt) {\r\n var plugins = srcPlugins;\r\n var add = false;\r\n if (startAt && srcPlugins) {\r\n plugins = [];\r\n arrForEach(srcPlugins, function (thePlugin) {\r\n if (add || thePlugin === startAt) {\r\n add = true;\r\n plugins.push(thePlugin);\r\n }\r\n });\r\n }\r\n if (startAt && !add) {\r\n if (!plugins) {\r\n plugins = [];\r\n }\r\n plugins.push(startAt);\r\n }\r\n return _createProxyChain(plugins, itemCtx);\r\n}\r\nvar ProcessTelemetryContext = /** @class */ (function () {\r\n /**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n */\r\n function ProcessTelemetryContext(plugins, config, core, startAt) {\r\n var _self = this;\r\n var _nextProxy = null; // Null == No next plugin\r\n // There is no next element (null) vs not defined (undefined)\r\n if (startAt !== null) {\r\n if (plugins && isFunction(plugins.getPlugin)) {\r\n // We have a proxy chain object\r\n _nextProxy = _copyProxyChain(plugins, _self, startAt || plugins.getPlugin());\r\n }\r\n else {\r\n // We just have an array\r\n if (startAt) {\r\n _nextProxy = _copyPluginChain(plugins, _self, startAt);\r\n }\r\n else if (isUndefined(startAt)) {\r\n // Undefined means copy the existing chain\r\n _nextProxy = _createProxyChain(plugins, _self);\r\n }\r\n }\r\n }\r\n _self.core = function () {\r\n return core;\r\n };\r\n _self.diagLog = function () {\r\n return safeGetLogger(core, config);\r\n };\r\n _self.getCfg = function () {\r\n return config;\r\n };\r\n _self.getExtCfg = function (identifier, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = {}; }\r\n var theConfig;\r\n if (config) {\r\n var extConfig = config.extensionConfig;\r\n if (extConfig && identifier) {\r\n theConfig = extConfig[identifier];\r\n }\r\n }\r\n return (theConfig ? theConfig : defaultValue);\r\n };\r\n _self.getConfig = function (identifier, field, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n var theValue;\r\n var extConfig = _self.getExtCfg(identifier, null);\r\n if (extConfig && !isNullOrUndefined(extConfig[field])) {\r\n theValue = extConfig[field];\r\n }\r\n else if (config && !isNullOrUndefined(config[field])) {\r\n theValue = config[field];\r\n }\r\n return !isNullOrUndefined(theValue) ? theValue : defaultValue;\r\n };\r\n _self.hasNext = function () {\r\n return _nextProxy != null;\r\n };\r\n _self.getNext = function () {\r\n return _nextProxy;\r\n };\r\n _self.setNext = function (nextPlugin) {\r\n _nextProxy = nextPlugin;\r\n };\r\n _self.processNext = function (env) {\r\n var nextPlugin = _nextProxy;\r\n if (nextPlugin) {\r\n // Automatically move to the next plugin\r\n _nextProxy = nextPlugin.getNext();\r\n nextPlugin.processTelemetry(env, _self);\r\n }\r\n };\r\n _self.createNew = function (plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n return new ProcessTelemetryContext(plugins || _nextProxy, config, core, startAt);\r\n };\r\n }\r\n return ProcessTelemetryContext;\r\n}());\r\nexport { ProcessTelemetryContext };\r\n//# sourceMappingURL=ProcessTelemetryContext.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport var strIKey = \"iKey\";\r\nexport var strExtensionConfig = \"extensionConfig\";\r\n//# sourceMappingURL=Constants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { ProcessTelemetryContext } from './ProcessTelemetryContext';\r\nimport { isFunction, isNullOrUndefined, setValue } from \"./HelperFuncs\";\r\nimport { strExtensionConfig } from \"./Constants\";\r\nvar strGetPlugin = \"getPlugin\";\r\n/**\r\n * BaseTelemetryPlugin provides a basic implementation of the ITelemetryPlugin interface so that plugins\r\n * can avoid implementation the same set of boiler plate code as well as provide a base\r\n * implementation so that new default implementations can be added without breaking all plugins.\r\n */\r\nvar BaseTelemetryPlugin = /** @class */ (function () {\r\n function BaseTelemetryPlugin() {\r\n var _self = this;\r\n var _isinitialized = false;\r\n var _rootCtx = null; // Used as the root context, holding the current config and initialized core\r\n var _nextPlugin = null; // Used for backward compatibility where plugins don't call the main pipeline\r\n _self.core = null;\r\n _self.diagLog = function (itemCtx) {\r\n return _self._getTelCtx(itemCtx).diagLog();\r\n };\r\n _self.isInitialized = function () {\r\n return _isinitialized;\r\n };\r\n _self.setInitialized = function (isInitialized) {\r\n _isinitialized = isInitialized;\r\n };\r\n // _self.getNextPlugin = () => DO NOT IMPLEMENT\r\n // Sub-classes of this base class *should* not be relying on this value and instead\r\n // should use processNext() function. If you require access to the plugin use the\r\n // IProcessTelemetryContext.getNext().getPlugin() while in the pipeline, Note getNext() may return null.\r\n _self.setNextPlugin = function (next) {\r\n _nextPlugin = next;\r\n };\r\n _self.processNext = function (env, itemCtx) {\r\n if (itemCtx) {\r\n // Normal core execution sequence\r\n itemCtx.processNext(env);\r\n }\r\n else if (_nextPlugin && isFunction(_nextPlugin.processTelemetry)) {\r\n // Looks like backward compatibility or out of band processing. And as it looks \r\n // like a ITelemetryPlugin or ITelemetryPluginChain, just call processTelemetry\r\n _nextPlugin.processTelemetry(env, null);\r\n }\r\n };\r\n _self._getTelCtx = function (currentCtx) {\r\n if (currentCtx === void 0) { currentCtx = null; }\r\n var itemCtx = currentCtx;\r\n if (!itemCtx) {\r\n var rootCtx = _rootCtx || new ProcessTelemetryContext(null, {}, _self.core);\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // Looks like a chain object\r\n itemCtx = rootCtx.createNew(null, _nextPlugin[strGetPlugin]);\r\n }\r\n else {\r\n itemCtx = rootCtx.createNew(null, _nextPlugin);\r\n }\r\n }\r\n return itemCtx;\r\n };\r\n _self._baseTelInit = function (config, core, extensions, pluginChain) {\r\n if (config) {\r\n // Make sure the extensionConfig exists\r\n setValue(config, strExtensionConfig, [], null, isNullOrUndefined);\r\n }\r\n if (!pluginChain && core) {\r\n // Get the first plugin from the core\r\n pluginChain = core.getProcessTelContext().getNext();\r\n }\r\n var nextPlugin = _nextPlugin;\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // If it looks like a proxy/chain then get the plugin\r\n nextPlugin = _nextPlugin[strGetPlugin]();\r\n }\r\n // Support legacy plugins where core was defined as a property\r\n _self.core = core;\r\n _rootCtx = new ProcessTelemetryContext(pluginChain, config, core, nextPlugin);\r\n _isinitialized = true;\r\n };\r\n }\r\n BaseTelemetryPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n this._baseTelInit(config, core, extensions, pluginChain);\r\n };\r\n return BaseTelemetryPlugin;\r\n}());\r\nexport { BaseTelemetryPlugin };\r\n//# sourceMappingURL=BaseTelemetryPlugin.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { arrForEach, isFunction } from './HelperFuncs';\r\nvar processTelemetry = \"processTelemetry\";\r\nvar priority = \"priority\";\r\nvar setNextPlugin = \"setNextPlugin\";\r\nvar isInitialized = \"isInitialized\";\r\n/**\r\n * Initialize the queue of plugins\r\n * @param plugins - The array of plugins to initialize and setting of the next plugin\r\n * @param config The current config for the instance\r\n * @param core THe current core instance\r\n * @param extensions The extensions\r\n */\r\nexport function initializePlugins(processContext, extensions) {\r\n // Set the next plugin and identified the uninitialized plugins\r\n var initPlugins = [];\r\n var lastPlugin = null;\r\n var proxy = processContext.getNext();\r\n while (proxy) {\r\n var thePlugin = proxy.getPlugin();\r\n if (thePlugin) {\r\n if (lastPlugin &&\r\n isFunction(lastPlugin[setNextPlugin]) &&\r\n isFunction(thePlugin[processTelemetry])) {\r\n // Set this plugin as the next for the previous one\r\n lastPlugin[setNextPlugin](thePlugin);\r\n }\r\n if (!isFunction(thePlugin[isInitialized]) || !thePlugin[isInitialized]()) {\r\n initPlugins.push(thePlugin);\r\n }\r\n lastPlugin = thePlugin;\r\n proxy = proxy.getNext();\r\n }\r\n }\r\n // Now initiatilize the plugins\r\n arrForEach(initPlugins, function (thePlugin) {\r\n thePlugin.initialize(processContext.getCfg(), processContext.core(), extensions, processContext.getNext());\r\n });\r\n}\r\nexport function sortPlugins(plugins) {\r\n // Sort by priority\r\n return plugins.sort(function (extA, extB) {\r\n var result = 0;\r\n var bHasProcess = isFunction(extB[processTelemetry]);\r\n if (isFunction(extA[processTelemetry])) {\r\n result = bHasProcess ? extA[priority] - extB[priority] : 1;\r\n }\r\n else if (bHasProcess) {\r\n result = -1;\r\n }\r\n return result;\r\n });\r\n // sort complete \r\n}\r\n//# sourceMappingURL=TelemetryHelpers.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport dynamicProto from '@microsoft/dynamicproto-js';\r\nimport { BaseTelemetryPlugin } from './BaseTelemetryPlugin';\r\nimport { ProcessTelemetryContext } from './ProcessTelemetryContext';\r\nimport { initializePlugins } from './TelemetryHelpers';\r\nimport { arrForEach, objDefineAccessors, throwError } from \"./HelperFuncs\";\r\nvar ChannelControllerPriority = 500;\r\nvar ChannelValidationMessage = \"Channel has invalid priority\";\r\nvar ChannelController = /** @class */ (function (_super) {\r\n __extends(ChannelController, _super);\r\n function ChannelController() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = \"ChannelControllerPlugin\";\r\n _this.priority = ChannelControllerPriority; // in reserved range 100 to 200\r\n var _channelQueue;\r\n dynamicProto(ChannelController, _this, function (_self, _base) {\r\n _self.setNextPlugin = function (next) {\r\n // The Channel controller is last in pipeline\r\n };\r\n _self.processTelemetry = function (item, itemCtx) {\r\n if (_channelQueue) {\r\n arrForEach(_channelQueue, function (queues) {\r\n // pass on to first item in queue\r\n if (queues.length > 0) {\r\n // Copying the item context as we could have mutiple chains that are executing asynchronously\r\n // and calling _getDefTelCtx as it's possible that the caller doesn't pass any context\r\n var chainCtx = _this._getTelCtx(itemCtx).createNew(queues);\r\n chainCtx.processNext(item);\r\n }\r\n });\r\n }\r\n };\r\n _self.getChannelControls = function () {\r\n return _channelQueue;\r\n };\r\n _self.initialize = function (config, core, extensions) {\r\n if (_self.isInitialized()) {\r\n // already initialized\r\n return;\r\n }\r\n _base.initialize(config, core, extensions);\r\n _createChannelQueues((config || {}).channels, extensions);\r\n // Initialize the Queues\r\n arrForEach(_channelQueue, function (queue) { return initializePlugins(new ProcessTelemetryContext(queue, config, core), extensions); });\r\n };\r\n });\r\n function _checkQueuePriority(queue) {\r\n arrForEach(queue, function (queueItem) {\r\n if (queueItem.priority < ChannelControllerPriority) {\r\n throwError(ChannelValidationMessage + queueItem.identifier);\r\n }\r\n });\r\n }\r\n function _addChannelQueue(queue) {\r\n if (queue && queue.length > 0) {\r\n queue = queue.sort(function (a, b) {\r\n return a.priority - b.priority;\r\n });\r\n _checkQueuePriority(queue);\r\n _channelQueue.push(queue);\r\n }\r\n }\r\n function _createChannelQueues(channels, extensions) {\r\n _channelQueue = [];\r\n if (channels) {\r\n // Add and sort the configuration channel queues\r\n arrForEach(channels, function (queue) { return _addChannelQueue(queue); });\r\n }\r\n if (extensions) {\r\n // Create a new channel queue for any extensions with a priority > the ChannelControllerPriority\r\n var extensionQueue_1 = [];\r\n arrForEach(extensions, function (plugin) {\r\n if (plugin.priority > ChannelControllerPriority) {\r\n extensionQueue_1.push(plugin);\r\n }\r\n });\r\n _addChannelQueue(extensionQueue_1);\r\n }\r\n }\r\n return _this;\r\n }\r\n ChannelController.prototype.processTelemetry = function (item, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n ;\r\n ChannelController.prototype.getChannelControls = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n ChannelController.prototype.initialize = function (config, core, extensions) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Static constructor, attempt to create accessors\r\n */\r\n // tslint:disable-next-line\r\n ChannelController._staticInit = (function () {\r\n var proto = ChannelController.prototype;\r\n // Dynamically create get/set property accessors\r\n objDefineAccessors(proto, \"ChannelControls\", proto.getChannelControls);\r\n objDefineAccessors(proto, \"channelQueue\", proto.getChannelControls);\r\n })();\r\n return ChannelController;\r\n}(BaseTelemetryPlugin));\r\nexport { ChannelController };\r\n//# sourceMappingURL=ChannelController.js.map","import { _InternalMessageId, LoggingSeverity } from '../JavaScriptSDK.Enums/LoggingEnums';\r\nimport { dumpObj, getDocument, getLocation, getNavigator, isIE } from './EnvUtils';\r\nimport { arrForEach, dateNow, getExceptionName, isFunction, isNotNullOrUndefined, isNullOrUndefined, isString, isTruthy, isUndefined, objForEachKey, setValue, strContains, strEndsWith, strTrim } from \"./HelperFuncs\";\r\nvar strToGMTString = \"toGMTString\";\r\nvar strToUTCString = \"toUTCString\";\r\nvar strCookie = \"cookie\";\r\nvar strExpires = \"expires\";\r\nvar strEnabled = \"enabled\";\r\nvar strIsCookieUseDisabled = \"isCookieUseDisabled\";\r\nvar strDisableCookiesUsage = \"disableCookiesUsage\";\r\nvar strConfigCookieMgr = \"_ckMgr\";\r\nvar strEmpty = \"\";\r\nvar _supportsCookies = null;\r\nvar _allowUaSameSite = null;\r\nvar _parsedCookieValue = null;\r\nvar _doc = getDocument();\r\nvar _cookieCache = {};\r\nvar _globalCookieConfig = {};\r\n/**\r\n * @ignore\r\n * DO NOT USE or export from the module, this is exposed as public to support backward compatibility of previous static utility methods only.\r\n * If you want to manager cookies either use the ICookieMgr available from the core instance via getCookieMgr() or create\r\n * your own instance of the CookieMgr and use that.\r\n * Using this directly for enabling / disabling cookie handling will not only affect your usage but EVERY user of cookies.\r\n * Example, if you are using a shared component that is also using Application Insights you will affect their cookie handling.\r\n * @param logger - The DiagnosticLogger to use for reporting errors.\r\n */\r\nexport function _gblCookieMgr(config, logger) {\r\n // Stash the global instance against the BaseCookieMgr class\r\n var inst = createCookieMgr[strConfigCookieMgr] || _globalCookieConfig[strConfigCookieMgr];\r\n if (!inst) {\r\n // Note: not using the getSetValue() helper as that would require always creating a temporary cookieMgr\r\n // that ultimately is never used\r\n inst = createCookieMgr[strConfigCookieMgr] = createCookieMgr(config, logger);\r\n _globalCookieConfig[strConfigCookieMgr] = inst;\r\n }\r\n return inst;\r\n}\r\nfunction _isMgrEnabled(cookieMgr) {\r\n if (cookieMgr) {\r\n return cookieMgr.isEnabled();\r\n }\r\n return true;\r\n}\r\nfunction _createCookieMgrConfig(rootConfig) {\r\n var cookieMgrCfg = rootConfig.cookieCfg = rootConfig.cookieCfg || {};\r\n // Sets the values from the root config if not already present on the cookieMgrCfg\r\n setValue(cookieMgrCfg, \"domain\", rootConfig.cookieDomain, isNotNullOrUndefined, isNullOrUndefined);\r\n setValue(cookieMgrCfg, \"path\", rootConfig.cookiePath || \"/\", null, isNullOrUndefined);\r\n if (isNullOrUndefined(cookieMgrCfg[strEnabled])) {\r\n // Set the enabled from the provided setting or the legacy root values\r\n var cookieEnabled = void 0;\r\n if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {\r\n cookieEnabled = !rootConfig[strIsCookieUseDisabled];\r\n }\r\n if (!isUndefined(rootConfig[strDisableCookiesUsage])) {\r\n cookieEnabled = !rootConfig[strDisableCookiesUsage];\r\n }\r\n cookieMgrCfg[strEnabled] = cookieEnabled;\r\n }\r\n return cookieMgrCfg;\r\n}\r\n/**\r\n * Helper to return the ICookieMgr from the core (if not null/undefined) or a default implementation\r\n * associated with the configuration or a legacy default.\r\n * @param core\r\n * @param config\r\n * @returns\r\n */\r\nexport function safeGetCookieMgr(core, config) {\r\n var cookieMgr;\r\n if (core) {\r\n // Always returns an instance\r\n cookieMgr = core.getCookieMgr();\r\n }\r\n else if (config) {\r\n var cookieCfg = (config || {}).cookieCfg;\r\n if (cookieCfg[strConfigCookieMgr]) {\r\n cookieMgr = cookieCfg[strConfigCookieMgr];\r\n }\r\n else {\r\n cookieMgr = createCookieMgr(config);\r\n }\r\n }\r\n if (!cookieMgr) {\r\n // Get or initialize the default global (legacy) cookie manager if we couldn't find one\r\n cookieMgr = _gblCookieMgr(config, (core || {}).logger);\r\n }\r\n return cookieMgr;\r\n}\r\nexport function createCookieMgr(rootConfig, logger) {\r\n var cookieMgrConfig = _createCookieMgrConfig(rootConfig || _globalCookieConfig);\r\n var _path = cookieMgrConfig.path || \"/\";\r\n var _domain = cookieMgrConfig.domain;\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n var _enabled = cookieMgrConfig[strEnabled] !== false;\r\n var cookieMgr = {\r\n isEnabled: function () {\r\n var enabled = _enabled && areCookiesSupported(logger);\r\n // Using an indirect lookup for any global cookie manager to support tree shaking for SDK's\r\n // that don't use the \"applicationinsights-core\" version of the default cookie function\r\n var gblManager = _globalCookieConfig[strConfigCookieMgr];\r\n if (enabled && gblManager && cookieMgr !== gblManager) {\r\n // Make sure the GlobalCookie Manager instance (if not this instance) is also enabled.\r\n // As the global (deprecated) functions may have been called (for backward compatibility)\r\n enabled = _isMgrEnabled(gblManager);\r\n }\r\n return enabled;\r\n },\r\n setEnabled: function (value) {\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n _enabled = value !== false;\r\n },\r\n set: function (name, value, maxAgeSec, domain, path) {\r\n if (_isMgrEnabled(cookieMgr)) {\r\n var values = {};\r\n var theValue = strTrim(value || strEmpty);\r\n var idx = theValue.indexOf(\";\");\r\n if (idx !== -1) {\r\n theValue = strTrim(value.substring(0, idx));\r\n values = _extractParts(value.substring(idx + 1));\r\n }\r\n // Only update domain if not already present (isUndefined) and the value is truthy (not null, undefined or empty string)\r\n setValue(values, \"domain\", domain || _domain, isTruthy, isUndefined);\r\n if (!isNullOrUndefined(maxAgeSec)) {\r\n var _isIE = isIE();\r\n if (isUndefined(values[strExpires])) {\r\n var nowMs = dateNow();\r\n // Only add expires if not already present\r\n var expireMs = nowMs + (maxAgeSec * 1000);\r\n // Sanity check, if zero or -ve then ignore\r\n if (expireMs > 0) {\r\n var expiry = new Date();\r\n expiry.setTime(expireMs);\r\n setValue(values, strExpires, _formatDate(expiry, !_isIE ? strToUTCString : strToGMTString) || _formatDate(expiry, _isIE ? strToGMTString : strToUTCString) || strEmpty, isTruthy);\r\n }\r\n }\r\n if (!_isIE) {\r\n // Only replace if not already present\r\n setValue(values, \"max-age\", strEmpty + maxAgeSec, null, isUndefined);\r\n }\r\n }\r\n var location_1 = getLocation();\r\n if (location_1 && location_1.protocol === \"https:\") {\r\n setValue(values, \"secure\", null, null, isUndefined);\r\n // Only set same site if not also secure\r\n if (_allowUaSameSite === null) {\r\n _allowUaSameSite = !uaDisallowsSameSiteNone((getNavigator() || {}).userAgent);\r\n }\r\n if (_allowUaSameSite) {\r\n setValue(values, \"SameSite\", \"None\", null, isUndefined);\r\n }\r\n }\r\n setValue(values, \"path\", path || _path, null, isUndefined);\r\n var setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;\r\n setCookieFn(name, _formatCookieValue(theValue, values));\r\n }\r\n },\r\n get: function (name) {\r\n var value = strEmpty;\r\n if (_isMgrEnabled(cookieMgr)) {\r\n value = (cookieMgrConfig.getCookie || _getCookieValue)(name);\r\n }\r\n return value;\r\n },\r\n del: function (name, path) {\r\n if (_isMgrEnabled(cookieMgr)) {\r\n // Only remove the cookie if the manager and cookie support has not been disabled\r\n cookieMgr.purge(name, path);\r\n }\r\n },\r\n purge: function (name, path) {\r\n if (areCookiesSupported(logger)) {\r\n // Setting the expiration date in the past immediately removes the cookie\r\n var values = (_a = {},\r\n _a[\"path\"] = path ? path : \"/\",\r\n _a[strExpires] = \"Thu, 01 Jan 1970 00:00:01 GMT\",\r\n _a);\r\n if (!isIE()) {\r\n // Set max age to expire now\r\n values[\"max-age\"] = \"0\";\r\n }\r\n var delCookie = cookieMgrConfig.delCookie || _setCookieValue;\r\n delCookie(name, _formatCookieValue(strEmpty, values));\r\n }\r\n var _a;\r\n }\r\n };\r\n // Associated this cookie manager with the config\r\n cookieMgr[strConfigCookieMgr] = cookieMgr;\r\n return cookieMgr;\r\n}\r\n/*\r\n* Helper method to tell if document.cookie object is supported by the runtime\r\n*/\r\nexport function areCookiesSupported(logger) {\r\n if (_supportsCookies === null) {\r\n _supportsCookies = false;\r\n try {\r\n var doc = _doc || {};\r\n _supportsCookies = doc[strCookie] !== undefined;\r\n }\r\n catch (e) {\r\n logger && logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.CannotAccessCookie, \"Cannot access document.cookie - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return _supportsCookies;\r\n}\r\nfunction _extractParts(theValue) {\r\n var values = {};\r\n if (theValue && theValue.length) {\r\n var parts = strTrim(theValue).split(\";\");\r\n arrForEach(parts, function (thePart) {\r\n thePart = strTrim(thePart || strEmpty);\r\n if (thePart) {\r\n var idx = thePart.indexOf(\"=\");\r\n if (idx === -1) {\r\n values[thePart] = null;\r\n }\r\n else {\r\n values[strTrim(thePart.substring(0, idx))] = strTrim(thePart.substring(idx + 1));\r\n }\r\n }\r\n });\r\n }\r\n return values;\r\n}\r\nfunction _formatDate(theDate, func) {\r\n if (isFunction(theDate[func])) {\r\n return theDate[func]();\r\n }\r\n return null;\r\n}\r\nfunction _formatCookieValue(value, values) {\r\n var cookieValue = value || strEmpty;\r\n objForEachKey(values, function (name, theValue) {\r\n cookieValue += \"; \" + name + (!isNullOrUndefined(theValue) ? \"=\" + theValue : strEmpty);\r\n });\r\n return cookieValue;\r\n}\r\nfunction _getCookieValue(name) {\r\n var cookieValue = strEmpty;\r\n if (_doc) {\r\n var theCookie = _doc[strCookie] || strEmpty;\r\n if (_parsedCookieValue !== theCookie) {\r\n _cookieCache = _extractParts(theCookie);\r\n _parsedCookieValue = theCookie;\r\n }\r\n cookieValue = strTrim(_cookieCache[name] || strEmpty);\r\n }\r\n return cookieValue;\r\n}\r\nfunction _setCookieValue(name, cookieValue) {\r\n if (_doc) {\r\n _doc[strCookie] = name + \"=\" + cookieValue;\r\n }\r\n}\r\nexport function uaDisallowsSameSiteNone(userAgent) {\r\n if (!isString(userAgent)) {\r\n return false;\r\n }\r\n // Cover all iOS based browsers here. This includes:\r\n // - Safari on iOS 12 for iPhone, iPod Touch, iPad\r\n // - WkWebview on iOS 12 for iPhone, iPod Touch, iPad\r\n // - Chrome on iOS 12 for iPhone, iPod Touch, iPad\r\n // All of which are broken by SameSite=None, because they use the iOS networking stack\r\n if (strContains(userAgent, \"CPU iPhone OS 12\") || strContains(userAgent, \"iPad; CPU OS 12\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X based browsers that use the Mac OS networking stack. This includes:\r\n // - Safari on Mac OS X\r\n // This does not include:\r\n // - Internal browser on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strContains(userAgent, \"Version/\") && strContains(userAgent, \"Safari\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X internal browsers that use the Mac OS networking stack. This includes:\r\n // - Internal browser on Mac OS X\r\n // This does not include:\r\n // - Safari on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strEndsWith(userAgent, \"AppleWebKit/605.1.15 (KHTML, like Gecko)\")) {\r\n return true;\r\n }\r\n // Cover Chrome 50-69, because some versions are broken by SameSite=None, and none in this range require it.\r\n // Note: this covers some pre-Chromium Edge versions, but pre-Chromim Edge does not require SameSite=None, so this is fine.\r\n // Note: this regex applies to Windows, Mac OS X, and Linux, deliberately.\r\n if (strContains(userAgent, \"Chrome/5\") || strContains(userAgent, \"Chrome/6\")) {\r\n return true;\r\n }\r\n // Unreal Engine runs Chromium 59, but does not advertise as Chrome until 4.23. Treat versions of Unreal\r\n // that don't specify their Chrome version as lacking support for SameSite=None.\r\n if (strContains(userAgent, \"UnrealEngine\") && !strContains(userAgent, \"Chrome\")) {\r\n return true;\r\n }\r\n // UCBrowser < 12.13.2 ignores Set-Cookie headers with SameSite=None\r\n // NB: this rule isn't complete - you need regex to make a complete rule.\r\n // See: https://www.chromium.org/updates/same-site/incompatible-clients\r\n if (strContains(userAgent, \"UCBrowser/12\") || strContains(userAgent, \"UCBrowser/11\")) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=CookieMgr.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { objCreateFn } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from '@microsoft/dynamicproto-js';\r\nimport { ChannelController } from './ChannelController';\r\nimport { ProcessTelemetryContext } from './ProcessTelemetryContext';\r\nimport { initializePlugins, sortPlugins } from './TelemetryHelpers';\r\nimport { PerfManager } from \"./PerfManager\";\r\nimport { createCookieMgr } from \"./CookieMgr\";\r\nimport { arrForEach, isNullOrUndefined, toISOString, getSetValue, setValue, throwError, isNotTruthy } from \"./HelperFuncs\";\r\nimport { strExtensionConfig, strIKey } from \"./Constants\";\r\nvar validationError = \"Extensions must provide callback to initialize\";\r\nvar strNotificationManager = \"_notificationManager\";\r\nvar BaseCore = /** @class */ (function () {\r\n function BaseCore() {\r\n var _isInitialized = false;\r\n var _eventQueue;\r\n var _channelController;\r\n var _notificationManager;\r\n var _perfManager;\r\n var _cookieManager;\r\n dynamicProto(BaseCore, this, function (_self) {\r\n _self._extensions = new Array();\r\n _channelController = new ChannelController();\r\n _self.logger = objCreateFn({\r\n throwInternal: function (severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n },\r\n warnToConsole: function (message) { },\r\n resetInternalMessageCount: function () { }\r\n });\r\n _eventQueue = [];\r\n _self.isInitialized = function () { return _isInitialized; };\r\n _self.initialize = function (config, extensions, logger, notificationManager) {\r\n // Make sure core is only initialized once\r\n if (_self.isInitialized()) {\r\n throwError(\"Core should not be initialized more than once\");\r\n }\r\n if (!config || isNullOrUndefined(config.instrumentationKey)) {\r\n throwError(\"Please provide instrumentation key\");\r\n }\r\n _notificationManager = notificationManager;\r\n // For backward compatibility only\r\n _self[strNotificationManager] = notificationManager;\r\n _self.config = config || {};\r\n config.extensions = isNullOrUndefined(config.extensions) ? [] : config.extensions;\r\n // add notification to the extensions in the config so other plugins can access it\r\n var extConfig = getSetValue(config, strExtensionConfig);\r\n extConfig.NotificationManager = notificationManager;\r\n if (logger) {\r\n _self.logger = logger;\r\n }\r\n // Concat all available extensions\r\n var allExtensions = [];\r\n allExtensions.push.apply(allExtensions, extensions.concat(config.extensions));\r\n allExtensions = sortPlugins(allExtensions);\r\n var coreExtensions = [];\r\n var channelExtensions = [];\r\n // Check if any two extensions have the same priority, then warn to console\r\n // And extract the local extensions from the \r\n var extPriorities = {};\r\n // Extension validation\r\n arrForEach(allExtensions, function (ext) {\r\n if (isNullOrUndefined(ext) || isNullOrUndefined(ext.initialize)) {\r\n throwError(validationError);\r\n }\r\n var extPriority = ext.priority;\r\n var identifier = ext.identifier;\r\n if (ext && extPriority) {\r\n if (!isNullOrUndefined(extPriorities[extPriority])) {\r\n logger.warnToConsole(\"Two extensions have same priority #\" + extPriority + \" - \" + extPriorities[extPriority] + \", \" + identifier);\r\n }\r\n else {\r\n // set a value\r\n extPriorities[extPriority] = identifier;\r\n }\r\n }\r\n // Split extensions to core and channelController\r\n if (!extPriority || extPriority < _channelController.priority) {\r\n // Add to core extension that will be managed by BaseCore\r\n coreExtensions.push(ext);\r\n }\r\n else {\r\n // Add all other extensions to be managed by the channel controller\r\n channelExtensions.push(ext);\r\n }\r\n });\r\n // Validation complete\r\n // Add the channelController to the complete extension collection and\r\n // to the end of the core extensions\r\n allExtensions.push(_channelController);\r\n coreExtensions.push(_channelController);\r\n // Sort the complete set of extensions by priority\r\n allExtensions = sortPlugins(allExtensions);\r\n _self._extensions = allExtensions;\r\n // initialize channel controller first, this will initialize all channel plugins\r\n initializePlugins(new ProcessTelemetryContext([_channelController], config, _self), allExtensions);\r\n initializePlugins(new ProcessTelemetryContext(coreExtensions, config, _self), allExtensions);\r\n // Now reset the extensions to just those being managed by Basecore\r\n _self._extensions = coreExtensions;\r\n if (_self.getTransmissionControls().length === 0) {\r\n throwError(\"No channels available\");\r\n }\r\n _isInitialized = true;\r\n _self.releaseQueue();\r\n };\r\n _self.getTransmissionControls = function () {\r\n return _channelController.getChannelControls();\r\n };\r\n _self.track = function (telemetryItem) {\r\n // setup default iKey if not passed in\r\n setValue(telemetryItem, strIKey, _self.config.instrumentationKey, null, isNotTruthy);\r\n // add default timestamp if not passed in\r\n setValue(telemetryItem, \"time\", toISOString(new Date()), null, isNotTruthy);\r\n // Common Schema 4.0\r\n setValue(telemetryItem, \"ver\", \"4.0\", null, isNullOrUndefined);\r\n if (_self.isInitialized()) {\r\n // Process the telemetry plugin chain\r\n _self.getProcessTelContext().processNext(telemetryItem);\r\n }\r\n else {\r\n // Queue events until all extensions are initialized\r\n _eventQueue.push(telemetryItem);\r\n }\r\n };\r\n _self.getProcessTelContext = function () {\r\n var extensions = _self._extensions;\r\n var thePlugins = extensions;\r\n // invoke any common telemetry processors before sending through pipeline\r\n if (!extensions || extensions.length === 0) {\r\n // Pass to Channel controller so data is sent to correct channel queues\r\n thePlugins = [_channelController];\r\n }\r\n return new ProcessTelemetryContext(thePlugins, _self.config, _self);\r\n };\r\n _self.getNotifyMgr = function () {\r\n if (!_notificationManager) {\r\n // Create Dummy notification manager\r\n _notificationManager = objCreateFn({\r\n addNotificationListener: function (listener) { },\r\n removeNotificationListener: function (listener) { },\r\n eventsSent: function (events) { },\r\n eventsDiscarded: function (events, reason) { },\r\n eventsSendRequest: function (sendReason, isAsync) { }\r\n });\r\n // For backward compatibility only\r\n _self[strNotificationManager] = _notificationManager;\r\n }\r\n return _notificationManager;\r\n };\r\n _self.getCookieMgr = function () {\r\n if (!_cookieManager) {\r\n _cookieManager = createCookieMgr(_self.config, _self.logger);\r\n }\r\n return _cookieManager;\r\n };\r\n _self.setCookieMgr = function (cookieMgr) {\r\n _cookieManager = cookieMgr;\r\n };\r\n _self.getPerfMgr = function () {\r\n if (!_perfManager) {\r\n if (_self.config && _self.config.enablePerfMgr) {\r\n _perfManager = new PerfManager(_self.getNotifyMgr());\r\n }\r\n }\r\n return _perfManager;\r\n };\r\n _self.setPerfMgr = function (perfMgr) {\r\n _perfManager = perfMgr;\r\n };\r\n _self.eventCnt = function () {\r\n return _eventQueue.length;\r\n };\r\n _self.releaseQueue = function () {\r\n if (_eventQueue.length > 0) {\r\n arrForEach(_eventQueue, function (event) {\r\n _self.getProcessTelContext().processNext(event);\r\n });\r\n _eventQueue = [];\r\n }\r\n };\r\n });\r\n }\r\n BaseCore.prototype.initialize = function (config, extensions, logger, notificationManager) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.getTransmissionControls = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n BaseCore.prototype.track = function (telemetryItem) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.getProcessTelContext = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n BaseCore.prototype.getNotifyMgr = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Get the current cookie manager for this instance\r\n */\r\n BaseCore.prototype.getCookieMgr = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Set the current cookie manager for this instance\r\n * @param cookieMgr - The manager, if set to null/undefined will cause the default to be created\r\n */\r\n BaseCore.prototype.setCookieMgr = function (cookieMgr) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.getPerfMgr = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n BaseCore.prototype.setPerfMgr = function (perfMgr) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.eventCnt = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 0;\r\n };\r\n BaseCore.prototype.releaseQueue = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return BaseCore;\r\n}());\r\nexport { BaseCore };\r\n//# sourceMappingURL=BaseCore.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n/**\r\n * The EventsDiscardedReason enumeration contains a set of values that specify the reason for discarding an event.\r\n */\r\nexport var EventsDiscardedReason = {\r\n /**\r\n * Unknown.\r\n */\r\n Unknown: 0,\r\n /**\r\n * Status set to non-retryable.\r\n */\r\n NonRetryableStatus: 1,\r\n /**\r\n * The event is invalid.\r\n */\r\n InvalidEvent: 2,\r\n /**\r\n * The size of the event is too large.\r\n */\r\n SizeLimitExceeded: 3,\r\n /**\r\n * The server is not accepting events from this instrumentation key.\r\n */\r\n KillSwitch: 4,\r\n /**\r\n * The event queue is full.\r\n */\r\n QueueFull: 5\r\n};\r\n//# sourceMappingURL=EventsDiscardedReason.js.map","import dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { arrForEach, arrIndexOf } from './HelperFuncs';\r\n/**\r\n * Class to manage sending notifications to all the listeners.\r\n */\r\nvar NotificationManager = /** @class */ (function () {\r\n function NotificationManager(config) {\r\n this.listeners = [];\r\n var perfEvtsSendAll = !!(config || {}).perfEvtsSendAll;\r\n dynamicProto(NotificationManager, this, function (_self) {\r\n _self.addNotificationListener = function (listener) {\r\n _self.listeners.push(listener);\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - AWTNotificationListener to remove.\r\n */\r\n _self.removeNotificationListener = function (listener) {\r\n var index = arrIndexOf(_self.listeners, listener);\r\n while (index > -1) {\r\n _self.listeners.splice(index, 1);\r\n index = arrIndexOf(_self.listeners, listener);\r\n }\r\n };\r\n /**\r\n * Notification for events sent.\r\n * @param {ITelemetryItem[]} events - The array of events that have been sent.\r\n */\r\n _self.eventsSent = function (events) {\r\n arrForEach(_self.listeners, function (listener) {\r\n if (listener && listener.eventsSent) {\r\n setTimeout(function () { return listener.eventsSent(events); }, 0);\r\n }\r\n });\r\n };\r\n /**\r\n * Notification for events being discarded.\r\n * @param {ITelemetryItem[]} events - The array of events that have been discarded by the SDK.\r\n * @param {number} reason - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n * constant should be used to check the different values.\r\n */\r\n _self.eventsDiscarded = function (events, reason) {\r\n arrForEach(_self.listeners, function (listener) {\r\n if (listener && listener.eventsDiscarded) {\r\n setTimeout(function () { return listener.eventsDiscarded(events, reason); }, 0);\r\n }\r\n });\r\n };\r\n /**\r\n * [Optional] A function called when the events have been requested to be sent to the sever.\r\n * @param {number} sendReason - The reason why the event batch is being sent.\r\n * @param {boolean} isAsync - A flag which identifies whether the requests are being sent in an async or sync manner.\r\n */\r\n _self.eventsSendRequest = function (sendReason, isAsync) {\r\n arrForEach(_self.listeners, function (listener) {\r\n if (listener && listener.eventsSendRequest) {\r\n if (isAsync) {\r\n setTimeout(function () { return listener.eventsSendRequest(sendReason, isAsync); }, 0);\r\n }\r\n else {\r\n try {\r\n listener.eventsSendRequest(sendReason, isAsync);\r\n }\r\n catch (e) {\r\n // Catch errors to ensure we don't block sending the requests\r\n }\r\n }\r\n }\r\n });\r\n };\r\n _self.perfEvent = function (perfEvent) {\r\n if (perfEvent) {\r\n // Send all events or only parent events\r\n if (perfEvtsSendAll || !perfEvent.isChildEvt()) {\r\n arrForEach(_self.listeners, function (listener) {\r\n if (listener && listener.perfEvent) {\r\n if (perfEvent.isAsync) {\r\n setTimeout(function () { return listener.perfEvent(perfEvent); }, 0);\r\n }\r\n else {\r\n try {\r\n listener.perfEvent(perfEvent);\r\n }\r\n catch (e) {\r\n // Catch errors to ensure we don't block sending the requests\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n };\r\n });\r\n }\r\n /**\r\n * Adds a notification listener.\r\n * @param {INotificationListener} listener - The notification listener to be added.\r\n */\r\n NotificationManager.prototype.addNotificationListener = function (listener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - AWTNotificationListener to remove.\r\n */\r\n NotificationManager.prototype.removeNotificationListener = function (listener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Notification for events sent.\r\n * @param {ITelemetryItem[]} events - The array of events that have been sent.\r\n */\r\n NotificationManager.prototype.eventsSent = function (events) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Notification for events being discarded.\r\n * @param {ITelemetryItem[]} events - The array of events that have been discarded by the SDK.\r\n * @param {number} reason - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n * constant should be used to check the different values.\r\n */\r\n NotificationManager.prototype.eventsDiscarded = function (events, reason) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * [Optional] A function called when the events have been requested to be sent to the sever.\r\n * @param {number} sendReason - The reason why the event batch is being sent.\r\n * @param {boolean} isAsync - A flag which identifies whether the requests are being sent in an async or sync manner.\r\n */\r\n NotificationManager.prototype.eventsSendRequest = function (sendReason, isAsync) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return NotificationManager;\r\n}());\r\nexport { NotificationManager };\r\n//# sourceMappingURL=NotificationManager.js.map","import { BaseCore } from './BaseCore';\r\nimport { EventsDiscardedReason } from \"../JavaScriptSDK.Enums/EventsDiscardedReason\";\r\nimport { NotificationManager } from \"./NotificationManager\";\r\nimport { doPerf } from \"./PerfManager\";\r\nimport { _InternalLogMessage, DiagnosticLogger } from \"./DiagnosticLogger\";\r\nimport dynamicProto from '@microsoft/dynamicproto-js';\r\nimport { arrForEach, isNullOrUndefined, toISOString, throwError } from \"./HelperFuncs\";\r\n\"use strict\";\r\nvar AppInsightsCore = /** @class */ (function (_super) {\r\n __extends(AppInsightsCore, _super);\r\n function AppInsightsCore() {\r\n var _this = _super.call(this) || this;\r\n dynamicProto(AppInsightsCore, _this, function (_self, _base) {\r\n _self.initialize = function (config, extensions, logger, notificationManager) {\r\n _base.initialize(config, extensions, logger || new DiagnosticLogger(config), notificationManager || new NotificationManager(config));\r\n };\r\n _self.track = function (telemetryItem) {\r\n doPerf(_self.getPerfMgr(), function () { return \"AppInsightsCore:track\"; }, function () {\r\n if (telemetryItem === null) {\r\n _notifyInvalidEvent(telemetryItem);\r\n // throw error\r\n throwError(\"Invalid telemetry item\");\r\n }\r\n // do basic validation before sending it through the pipeline\r\n _validateTelemetryItem(telemetryItem);\r\n _base.track(telemetryItem);\r\n }, function () { return ({ item: telemetryItem }); }, !(telemetryItem.sync));\r\n };\r\n /**\r\n * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n * called.\r\n * @param {INotificationListener} listener - An INotificationListener object.\r\n */\r\n _self.addNotificationListener = function (listener) {\r\n var manager = _self.getNotifyMgr();\r\n if (manager) {\r\n manager.addNotificationListener(listener);\r\n }\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - INotificationListener to remove.\r\n */\r\n _self.removeNotificationListener = function (listener) {\r\n var manager = _self.getNotifyMgr();\r\n if (manager) {\r\n manager.removeNotificationListener(listener);\r\n }\r\n };\r\n /**\r\n * Periodically check logger.queue for\r\n */\r\n _self.pollInternalLogs = function (eventName) {\r\n var interval = _self.config.diagnosticLogInterval;\r\n if (!interval || !(interval > 0)) {\r\n interval = 10000;\r\n }\r\n return setInterval(function () {\r\n var queue = _self.logger ? _self.logger.queue : [];\r\n arrForEach(queue, function (logMessage) {\r\n var item = {\r\n name: eventName ? eventName : \"InternalMessageId: \" + logMessage.messageId,\r\n iKey: _self.config.instrumentationKey,\r\n time: toISOString(new Date()),\r\n baseType: _InternalLogMessage.dataType,\r\n baseData: { message: logMessage.message }\r\n };\r\n _self.track(item);\r\n });\r\n queue.length = 0;\r\n }, interval);\r\n };\r\n function _validateTelemetryItem(telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem.name)) {\r\n _notifyInvalidEvent(telemetryItem);\r\n throw Error(\"telemetry name required\");\r\n }\r\n }\r\n function _notifyInvalidEvent(telemetryItem) {\r\n var manager = _self.getNotifyMgr();\r\n if (manager) {\r\n manager.eventsDiscarded([telemetryItem], EventsDiscardedReason.InvalidEvent);\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n AppInsightsCore.prototype.initialize = function (config, extensions, logger, notificationManager) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AppInsightsCore.prototype.track = function (telemetryItem) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n * called.\r\n * @param {INotificationListener} listener - An INotificationListener object.\r\n */\r\n AppInsightsCore.prototype.addNotificationListener = function (listener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - INotificationListener to remove.\r\n */\r\n AppInsightsCore.prototype.removeNotificationListener = function (listener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Periodically check logger.queue for\r\n */\r\n AppInsightsCore.prototype.pollInternalLogs = function (eventName) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 0;\r\n };\r\n return AppInsightsCore;\r\n}(BaseCore));\r\nexport { AppInsightsCore };\r\n//# sourceMappingURL=AppInsightsCore.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { getCrypto, getMsCrypto, isIE } from \"./EnvUtils\";\r\nimport { dateNow } from \"./HelperFuncs\";\r\nvar UInt32Mask = 0x100000000;\r\nvar MaxUInt32 = 0xffffffff;\r\n// MWC based Random generator (for IE)\r\nvar _mwcSeeded = false;\r\nvar _mwcW = 123456789;\r\nvar _mwcZ = 987654321;\r\n// Takes any integer\r\nfunction _mwcSeed(seedValue) {\r\n if (seedValue < 0) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n seedValue >>>= 0;\r\n }\r\n _mwcW = (123456789 + seedValue) & MaxUInt32;\r\n _mwcZ = (987654321 - seedValue) & MaxUInt32;\r\n _mwcSeeded = true;\r\n}\r\nfunction _autoSeedMwc() {\r\n // Simple initialization using default Math.random() - So we inherit any entropy from the browser\r\n // and bitwise XOR with the current milliseconds\r\n try {\r\n var now = dateNow() & 0x7fffffff;\r\n _mwcSeed(((Math.random() * UInt32Mask) ^ now) + now);\r\n }\r\n catch (e) {\r\n // Don't crash if something goes wrong\r\n }\r\n}\r\n/**\r\n * Generate a random value between 0 and maxValue, max value should be limited to a 32-bit maximum.\r\n * So maxValue(16) will produce a number from 0..16 (range of 17)\r\n * @param maxValue\r\n */\r\nexport function randomValue(maxValue) {\r\n if (maxValue > 0) {\r\n return Math.floor((random32() / MaxUInt32) * (maxValue + 1)) >>> 0;\r\n }\r\n return 0;\r\n}\r\n/**\r\n * generate a random 32-bit number (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), defaults un-unsigned.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function random32(signed) {\r\n var value;\r\n var c = getCrypto() || getMsCrypto();\r\n if (c && c.getRandomValues) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = c.getRandomValues(new Uint32Array(1))[0] & MaxUInt32;\r\n }\r\n else if (isIE()) {\r\n // For IE 6, 7, 8 (especially on XP) Math.random is not very random\r\n if (!_mwcSeeded) {\r\n // Set the seed for the Mwc algorithm\r\n _autoSeedMwc();\r\n }\r\n // Don't use Math.random for IE\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = mwcRandom32() & MaxUInt32;\r\n }\r\n else {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = Math.floor((UInt32Mask * Math.random()) | 0);\r\n }\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Seed the MWC random number generator with the specified seed or a random value\r\n * @param value - optional the number to used as the seed, if undefined, null or zero a random value will be chosen\r\n */\r\nexport function mwcRandomSeed(value) {\r\n if (!value) {\r\n _autoSeedMwc();\r\n }\r\n else {\r\n _mwcSeed(value);\r\n }\r\n}\r\n/**\r\n * Generate a random 32-bit number between (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), using MWC (Multiply with carry)\r\n * instead of Math.random() defaults to un-signed.\r\n * Used as a replacement random generator for IE to avoid issues with older IE instances.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function mwcRandom32(signed) {\r\n _mwcZ = (36969 * (_mwcZ & 0xFFFF) + (_mwcZ >> 16)) & MaxUInt32;\r\n _mwcW = (18000 * (_mwcW & 0xFFFF) + (_mwcW >> 16)) & MaxUInt32;\r\n var value = (((_mwcZ << 16) + (_mwcW & 0xFFFF)) >>> 0) & MaxUInt32 | 0;\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n//# sourceMappingURL=RandomHelper.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { objCreateFn, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { _gblCookieMgr } from \"./CookieMgr\";\r\nimport { getWindow, getDocument, getPerformance, isIE } from \"./EnvUtils\";\r\nimport { arrForEach, arrIndexOf, arrMap, arrReduce, attachEvent, dateNow, detachEvent, hasOwnProperty, isArray, isBoolean, isDate, isError, isFunction, isNullOrUndefined, isNumber, isObject, isString, isTypeof, isUndefined, objDefineAccessors, objKeys, strTrim, toISOString } from \"./HelperFuncs\";\r\nimport { randomValue, random32, mwcRandomSeed, mwcRandom32 } from \"./RandomHelper\";\r\nvar _cookieMgrs = null;\r\nvar _canUseCookies; // legacy supported config\r\n// Added to help with minfication\r\nexport var Undefined = strShimUndefined;\r\n/**\r\n * Trys to add an event handler for the specified event to the window, body and document\r\n * @param eventName {string} - The name of the event\r\n * @param callback {any} - The callback function that needs to be executed for the given event\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\nexport function addEventHandler(eventName, callback) {\r\n var result = false;\r\n var w = getWindow();\r\n if (w) {\r\n result = attachEvent(w, eventName, callback);\r\n result = attachEvent(w[\"body\"], eventName, callback) || result;\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n result = EventHelper.Attach(doc, eventName, callback) || result;\r\n }\r\n return result;\r\n}\r\nexport function newGuid() {\r\n function randomHexDigit() {\r\n return randomValue(15); // Get a random value from 0..15\r\n }\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(GuidRegex, function (c) {\r\n var r = (randomHexDigit() | 0), v = (c === 'x' ? r : r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n}\r\n/**\r\n * Return the current value of the Performance Api now() function (if available) and fallback to dateNow() if it is unavailable (IE9 or less)\r\n * https://caniuse.com/#search=performance.now\r\n */\r\nexport function perfNow() {\r\n var perf = getPerformance();\r\n if (perf && perf.now) {\r\n return perf.now();\r\n }\r\n return dateNow();\r\n}\r\n/**\r\n * Generate random base64 id string.\r\n * The default length is 22 which is 132-bits so almost the same as a GUID but as base64 (the previous default was 5)\r\n * @param maxLength - Optional value to specify the length of the id to be generated, defaults to 22\r\n */\r\nexport function newId(maxLength) {\r\n if (maxLength === void 0) { maxLength = 22; }\r\n var base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\r\n // Start with an initial random number, consuming the value in reverse byte order\r\n var number = random32() >>> 0; // Make sure it's a +ve number\r\n var chars = 0;\r\n var result = \"\";\r\n while (result.length < maxLength) {\r\n chars++;\r\n result += base64chars.charAt(number & 0x3F);\r\n number >>>= 6; // Zero fill with right shift\r\n if (chars === 5) {\r\n // 5 base64 characters === 30 bits so we don't have enough bits for another base64 char\r\n // So add on another 30 bits and make sure it's +ve\r\n number = (((random32() << 2) & 0xFFFFFFFF) | (number & 0x03)) >>> 0;\r\n chars = 0; // We need to reset the number every 5 chars (30 bits)\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n if (value && search) {\r\n var len = value.length;\r\n var start = len - search.length;\r\n return value.substring(start >= 0 ? start : 0, len) === search;\r\n }\r\n return false;\r\n}\r\n/**\r\n * generate W3C trace id\r\n */\r\nexport function generateW3CId() {\r\n var hexValues = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\r\n // rfc4122 version 4 UUID without dashes and with lowercase letters\r\n var oct = \"\", tmp;\r\n for (var a = 0; a < 4; a++) {\r\n tmp = random32();\r\n oct +=\r\n hexValues[tmp & 0xF] +\r\n hexValues[tmp >> 4 & 0xF] +\r\n hexValues[tmp >> 8 & 0xF] +\r\n hexValues[tmp >> 12 & 0xF] +\r\n hexValues[tmp >> 16 & 0xF] +\r\n hexValues[tmp >> 20 & 0xF] +\r\n hexValues[tmp >> 24 & 0xF] +\r\n hexValues[tmp >> 28 & 0xF];\r\n }\r\n // \"Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively\"\r\n var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];\r\n return oct.substr(0, 8) + oct.substr(9, 4) + \"4\" + oct.substr(13, 3) + clockSequenceHi + oct.substr(16, 3) + oct.substr(19, 12);\r\n}\r\n/**\r\n * Provides a collection of utility functions, included for backward compatibility with previous releases.\r\n * @deprecated Marking this instance as deprecated in favor of direct usage of the helper functions\r\n * as direct usage provides better tree-shaking and minification by avoiding the inclusion of the unused items\r\n * in your resulting code.\r\n */\r\nexport var CoreUtils = {\r\n _canUseCookies: undefined,\r\n isTypeof: isTypeof,\r\n isUndefined: isUndefined,\r\n isNullOrUndefined: isNullOrUndefined,\r\n hasOwnProperty: hasOwnProperty,\r\n isFunction: isFunction,\r\n isObject: isObject,\r\n isDate: isDate,\r\n isArray: isArray,\r\n isError: isError,\r\n isString: isString,\r\n isNumber: isNumber,\r\n isBoolean: isBoolean,\r\n toISOString: toISOString,\r\n arrForEach: arrForEach,\r\n arrIndexOf: arrIndexOf,\r\n arrMap: arrMap,\r\n arrReduce: arrReduce,\r\n strTrim: strTrim,\r\n objCreate: objCreateFn,\r\n objKeys: objKeys,\r\n objDefineAccessors: objDefineAccessors,\r\n addEventHandler: addEventHandler,\r\n dateNow: dateNow,\r\n isIE: isIE,\r\n disableCookies: disableCookies,\r\n newGuid: newGuid,\r\n perfNow: perfNow,\r\n newId: newId,\r\n randomValue: randomValue,\r\n random32: random32,\r\n mwcRandomSeed: mwcRandomSeed,\r\n mwcRandom32: mwcRandom32,\r\n generateW3CId: generateW3CId\r\n};\r\nvar GuidRegex = /[xy]/g;\r\nexport var EventHelper = {\r\n Attach: attachEvent,\r\n AttachEvent: attachEvent,\r\n Detach: detachEvent,\r\n DetachEvent: detachEvent\r\n};\r\n/**\r\n * Helper to support backward compatibility for users that use the legacy cookie handling functions and the use the internal\r\n * CoreUtils._canUseCookies global flag to enable/disable cookies usage.\r\n * Note: This has the following deliberate side-effects\r\n * - Creates the global (legacy) cookie manager if it does not already exist\r\n * - Attempts to add \"listeners\" to the CoreUtils._canUseCookies property to support the legacy usage\r\n * @param config\r\n * @param logger\r\n * @returns\r\n */\r\nexport function _legacyCookieMgr(config, logger) {\r\n var cookieMgr = _gblCookieMgr(config, logger);\r\n var legacyCanUseCookies = CoreUtils._canUseCookies;\r\n if (_cookieMgrs === null) {\r\n _cookieMgrs = [];\r\n _canUseCookies = legacyCanUseCookies;\r\n // Dynamically create get/set property accessors for backward compatibility for enabling / disabling cookies\r\n // this WILL NOT work for ES3 browsers (< IE8)\r\n objDefineAccessors(CoreUtils, \"_canUseCookies\", function () {\r\n return _canUseCookies;\r\n }, function (value) {\r\n _canUseCookies = value;\r\n arrForEach(_cookieMgrs, function (mgr) {\r\n mgr.setEnabled(value);\r\n });\r\n });\r\n }\r\n if (arrIndexOf(_cookieMgrs, cookieMgr) === -1) {\r\n _cookieMgrs.push(cookieMgr);\r\n }\r\n if (isBoolean(legacyCanUseCookies)) {\r\n cookieMgr.setEnabled(legacyCanUseCookies);\r\n }\r\n if (isBoolean(_canUseCookies)) {\r\n cookieMgr.setEnabled(_canUseCookies);\r\n }\r\n return cookieMgr;\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().disable()\r\n * Force the SDK not to store and read any data from cookies.\r\n */\r\nexport function disableCookies() {\r\n _legacyCookieMgr().setEnabled(false);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().isEnabled()\r\n * Helper method to tell if document.cookie object is available and whether it can be used.\r\n */\r\nexport function canUseCookies(logger) {\r\n return _legacyCookieMgr(null, logger).isEnabled();\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().get()\r\n * helper method to access userId and sessionId cookie\r\n */\r\nexport function getCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).get(name);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().set()\r\n * helper method to set userId and sessionId cookie\r\n */\r\nexport function setCookie(logger, name, value, domain) {\r\n _legacyCookieMgr(null, logger).set(name, value, null, domain);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().del()\r\n * Deletes a cookie by setting it's expiration time in the past.\r\n * @param name - The name of the cookie to delete.\r\n */\r\nexport function deleteCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).del(name);\r\n}\r\n//# sourceMappingURL=CoreUtils.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport '@microsoft/applicationinsights-shims';\r\nexport { \r\n IUtil, Util, ICorrelationIdHelper, CorrelationIdHelper,\r\n IDateTimeUtils, DateTimeUtils, dateTimeUtilsNow, dateTimeUtilsDuration,\r\n IUrlHelper, UrlHelper, isInternalApplicationInsightsEndpoint\r\n} from './Util';\r\nexport { parseConnectionString, ConnectionStringParser } from './ConnectionStringParser';\r\nexport { FieldType } from './Enums';\r\nexport { IRequestHeaders, RequestHeaders } from './RequestResponseHeaders';\r\nexport { DisabledPropertyName, ProcessLegacy, SampleRate, HttpMethod, DEFAULT_BREEZE_ENDPOINT, strNotSpecified } from './Constants';\r\nexport { Data as AIData } from './Interfaces/Contracts/Generated/Data';\r\nexport { Base as AIBase } from './Interfaces/Contracts/Generated/Base';\r\nexport { ISerializable } from './Interfaces/Telemetry/ISerializable';\r\nexport { IEnvelope } from './Interfaces/Telemetry/IEnvelope';\r\nexport { Envelope } from './Telemetry/Common/Envelope';\r\nexport { Event } from './Telemetry/Event';\r\nexport { Exception } from './Telemetry/Exception';\r\nexport { Metric } from './Telemetry/Metric';\r\nexport { PageView } from './Telemetry/PageView';\r\nexport { PageViewData } from './Interfaces/Contracts/Generated/PageViewData';\r\nexport { RemoteDependencyData } from './Telemetry/RemoteDependencyData';\r\nexport { IEventTelemetry } from './Interfaces/IEventTelemetry';\r\nexport { ITraceTelemetry } from './Interfaces/ITraceTelemetry';\r\nexport { IMetricTelemetry } from './Interfaces/IMetricTelemetry';\r\nexport { IDependencyTelemetry } from './Interfaces/IDependencyTelemetry';\r\nexport { IExceptionTelemetry, IAutoExceptionTelemetry, IExceptionInternal } from './Interfaces/IExceptionTelemetry';\r\nexport { IPageViewTelemetry, IPageViewTelemetryInternal } from './Interfaces/IPageViewTelemetry';\r\nexport { IPageViewPerformanceTelemetry, IPageViewPerformanceTelemetryInternal } from './Interfaces/IPageViewPerformanceTelemetry';\r\nexport { Trace } from './Telemetry/Trace';\r\nexport { PageViewPerformance } from './Telemetry/PageViewPerformance';\r\nexport { Data } from './Telemetry/Common/Data';\r\nexport { SeverityLevel } from './Interfaces/Contracts/Generated/SeverityLevel';\r\nexport { IConfig, ConfigurationManager } from './Interfaces/IConfig';\r\nexport { IChannelControlsAI } from './Interfaces/IChannelControlsAI';\r\nexport { IContextTagKeys, ContextTagKeys } from './Interfaces/Contracts/Generated/ContextTagKeys';\r\nexport { DataSanitizer } from './Telemetry/Common/DataSanitizer';\r\nexport { TelemetryItemCreator } from './TelemetryItemCreator';\r\nexport { ICorrelationConfig } from './Interfaces/ICorrelationConfig';\r\nexport { IAppInsights } from './Interfaces/IAppInsights';\r\nexport { IWeb } from './Interfaces/Context/IWeb';\r\nexport { CtxTagKeys, Extensions } from './Interfaces/PartAExtensions';\r\nexport { ISession } from './Interfaces/Context/ISession';\r\nexport { ITelemetryContext } from './Interfaces/ITelemetryContext';\r\nexport { IApplication } from './Interfaces/Context/IApplication';\r\nexport { IDevice } from './Interfaces/Context/IDevice';\r\nexport { IInternal } from './Interfaces/Context/IInternal';\r\nexport { ILocation } from './Interfaces/Context/ILocation';\r\nexport { ISample } from './Interfaces/Context/ISample';\r\nexport { IOperatingSystem } from './Interfaces/Context/IOperatingSystem';\r\nexport { IPropertiesPlugin } from './Interfaces/IPropertiesPlugin';\r\nexport { IUser, IUserContext } from './Interfaces/Context/IUser';\r\nexport { ITelemetryTrace, ITraceState } from './Interfaces/Context/ITelemetryTrace';\r\nexport { DistributedTracingModes } from './Enums';\r\nexport { stringToBoolOrDefault, msToTimeSpan, isBeaconApiSupported, getExtensionByName, isCrossOriginError } from './HelperFuncs';\r\nexport { createDomEvent } from './DomHelperFuncs';\r\nexport { \r\n utlDisableStorage, utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage, utlRemoveStorage, \r\n utlCanUseSessionStorage, utlGetSessionStorageKeys, utlGetSessionStorage, utlSetSessionStorage, utlRemoveSessionStorage\r\n} from './StorageHelperFuncs';\r\nexport { urlParseUrl, urlGetAbsoluteUrl, urlGetPathName, urlGetCompleteUrl, urlParseHost, urlParseFullHost } from './UrlHelperFuncs';\r\nexport const PropertiesPluginIdentifier = \"AppInsightsPropertiesPlugin\";\r\nexport const BreezeChannelIdentifier = \"AppInsightsChannelPlugin\";\r\nexport const AnalyticsPluginIdentifier = \"ApplicationInsightsAnalytics\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n/**\r\n * Type of storage to differentiate between local storage and session storage\r\n */\r\nexport enum StorageType {\r\n LocalStorage,\r\n SessionStorage\r\n}\r\n\r\n/**\r\n * Enum is used in aiDataContract to describe how fields are serialized. \r\n * For instance: (Fieldtype.Required | FieldType.Array) will mark the field as required and indicate it's an array\r\n */\r\nexport enum FieldType { Default = 0, Required = 1, Array = 2, Hidden = 4 };\r\n\r\nexport enum DistributedTracingModes {\r\n /**\r\n * (Default) Send Application Insights correlation headers\r\n */\r\n\r\n AI=0,\r\n\r\n /**\r\n * Send both W3C Trace Context headers and back-compatibility Application Insights headers\r\n */\r\n AI_AND_W3C,\r\n\r\n /**\r\n * Send W3C Trace Context headers\r\n */\r\n W3C\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { IDiagnosticLogger, LoggingSeverity, _InternalMessageId, hasJSON, getJSON, objForEachKey, isObject, isString } from '@microsoft/applicationinsights-core-js';\r\n\r\nexport class DataSanitizer {\r\n\r\n /**\r\n * Max length allowed for custom names.\r\n */\r\n public static MAX_NAME_LENGTH = 150;\r\n\r\n /**\r\n * Max length allowed for Id field in page views.\r\n */\r\n public static MAX_ID_LENGTH = 128;\r\n\r\n /**\r\n * Max length allowed for custom values.\r\n */\r\n public static MAX_PROPERTY_LENGTH = 8192;\r\n\r\n /**\r\n * Max length allowed for names\r\n */\r\n public static MAX_STRING_LENGTH = 1024;\r\n\r\n /**\r\n * Max length allowed for url.\r\n */\r\n public static MAX_URL_LENGTH = 2048;\r\n\r\n /**\r\n * Max length allowed for messages.\r\n */\r\n public static MAX_MESSAGE_LENGTH = 32768;\r\n\r\n /**\r\n * Max length allowed for exceptions.\r\n */\r\n public static MAX_EXCEPTION_LENGTH = 32768;\r\n\r\n public static sanitizeKeyAndAddUniqueness(logger: IDiagnosticLogger, key: any, map: any) {\r\n const origLength = key.length;\r\n let field = DataSanitizer.sanitizeKey(logger, key);\r\n\r\n // validation truncated the length. We need to add uniqueness\r\n if (field.length !== origLength) {\r\n let i = 0;\r\n let uniqueField = field;\r\n while (map[uniqueField] !== undefined) {\r\n i++;\r\n uniqueField = field.substring(0, DataSanitizer.MAX_NAME_LENGTH - 3) + DataSanitizer.padNumber(i);\r\n }\r\n field = uniqueField;\r\n }\r\n return field;\r\n }\r\n\r\n public static sanitizeKey(logger: IDiagnosticLogger, name: any) {\r\n let nameTrunc: String;\r\n if (name) {\r\n // Remove any leading or trailing whitepace\r\n name = DataSanitizer.trim(name.toString());\r\n\r\n // truncate the string to 150 chars\r\n if (name.length > DataSanitizer.MAX_NAME_LENGTH) {\r\n nameTrunc = name.substring(0, DataSanitizer.MAX_NAME_LENGTH);\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.NameTooLong,\r\n \"name is too long. It has been truncated to \" + DataSanitizer.MAX_NAME_LENGTH + \" characters.\",\r\n { name }, true);\r\n }\r\n }\r\n\r\n return nameTrunc || name;\r\n }\r\n\r\n public static sanitizeString(logger: IDiagnosticLogger, value: any, maxLength: number = DataSanitizer.MAX_STRING_LENGTH) {\r\n let valueTrunc : String;\r\n if (value) {\r\n maxLength = maxLength ? maxLength : DataSanitizer.MAX_STRING_LENGTH; // in case default parameters dont work\r\n value = DataSanitizer.trim(value);\r\n if (value.toString().length > maxLength) {\r\n valueTrunc = value.toString().substring(0, maxLength);\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.StringValueTooLong,\r\n \"string value is too long. It has been truncated to \" + maxLength + \" characters.\",\r\n { value }, true);\r\n }\r\n }\r\n\r\n return valueTrunc || value;\r\n }\r\n\r\n public static sanitizeUrl(logger: IDiagnosticLogger, url: any) {\r\n return DataSanitizer.sanitizeInput(logger, url, DataSanitizer.MAX_URL_LENGTH, _InternalMessageId.UrlTooLong);\r\n }\r\n\r\n public static sanitizeMessage(logger: IDiagnosticLogger, message: any) {\r\n let messageTrunc : String;\r\n if (message) {\r\n if (message.length > DataSanitizer.MAX_MESSAGE_LENGTH) {\r\n messageTrunc = message.substring(0, DataSanitizer.MAX_MESSAGE_LENGTH);\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING, _InternalMessageId.MessageTruncated,\r\n \"message is too long, it has been truncated to \" + DataSanitizer.MAX_MESSAGE_LENGTH + \" characters.\",\r\n { message },\r\n true);\r\n }\r\n }\r\n\r\n return messageTrunc || message;\r\n }\r\n\r\n public static sanitizeException(logger: IDiagnosticLogger, exception: any) {\r\n let exceptionTrunc : String;\r\n if (exception) {\r\n if (exception.length > DataSanitizer.MAX_EXCEPTION_LENGTH) {\r\n exceptionTrunc = exception.substring(0, DataSanitizer.MAX_EXCEPTION_LENGTH);\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING, _InternalMessageId.ExceptionTruncated, \"exception is too long, it has been truncated to \" + DataSanitizer.MAX_EXCEPTION_LENGTH + \" characters.\",\r\n { exception }, true);\r\n }\r\n }\r\n\r\n return exceptionTrunc || exception;\r\n }\r\n\r\n public static sanitizeProperties(logger: IDiagnosticLogger, properties: any) {\r\n if (properties) {\r\n const tempProps = {};\r\n objForEachKey(properties, (prop, value) => {\r\n if (isObject(value) && hasJSON()) {\r\n // Stringify any part C properties\r\n try {\r\n value = getJSON().stringify(value);\r\n } catch (e) {\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.CannotSerializeObjectNonSerializable, \"custom property is not valid\", { exception: e}, true);\r\n }\r\n }\r\n value = DataSanitizer.sanitizeString(logger, value, DataSanitizer.MAX_PROPERTY_LENGTH);\r\n prop = DataSanitizer.sanitizeKeyAndAddUniqueness(logger, prop, tempProps);\r\n tempProps[prop] = value;\r\n });\r\n properties = tempProps;\r\n }\r\n\r\n return properties;\r\n }\r\n\r\n public static sanitizeMeasurements(logger: IDiagnosticLogger, measurements: any) {\r\n if (measurements) {\r\n const tempMeasurements = {};\r\n objForEachKey(measurements, (measure, value) => {\r\n measure = DataSanitizer.sanitizeKeyAndAddUniqueness(logger, measure, tempMeasurements);\r\n tempMeasurements[measure] = value;\r\n });\r\n\r\n measurements = tempMeasurements;\r\n }\r\n\r\n return measurements;\r\n }\r\n\r\n public static sanitizeId(logger: IDiagnosticLogger, id: string): string {\r\n return id ? DataSanitizer.sanitizeInput(logger, id, DataSanitizer.MAX_ID_LENGTH, _InternalMessageId.IdTooLong).toString() : id;\r\n }\r\n\r\n public static sanitizeInput(logger: IDiagnosticLogger, input: any, maxLength: number, _msgId: _InternalMessageId) {\r\n let inputTrunc : String;\r\n if (input) {\r\n input = DataSanitizer.trim(input);\r\n if (input.length > maxLength) {\r\n inputTrunc = input.substring(0, maxLength);\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _msgId,\r\n \"input is too long, it has been truncated to \" + maxLength + \" characters.\",\r\n { data: input },\r\n true);\r\n }\r\n }\r\n\r\n return inputTrunc || input;\r\n }\r\n\r\n public static padNumber(num: number) {\r\n const s = \"00\" + num;\r\n return s.substr(s.length - 3);\r\n }\r\n\r\n /**\r\n * helper method to trim strings (IE8 does not implement String.prototype.trim)\r\n */\r\n public static trim(str: any): string {\r\n if (!isString(str)) { return str; }\r\n return str.replace(/^\\s+|\\s+$/g, \"\");\r\n }\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n/**\r\n * This is an internal property used to cause internal (reporting) requests to be ignored from reporting\r\n * additional telemetry, to handle polyfil implementations ALL urls used with a disabled request will \r\n * also be ignored for future requests even when this property is not provided.\r\n * Tagging as Ignore as this is an internal value and is not expected to be used outside of the SDK\r\n * @ignore\r\n */\r\nexport const DisabledPropertyName: string = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\nexport const SampleRate = \"sampleRate\";\r\nexport const ProcessLegacy = \"ProcessLegacy\";\r\nexport const HttpMethod = \"http.method\";\r\nexport const DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\r\nexport const strNotSpecified = \"not_specified\";","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { DataSanitizer } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { ITelemetryItem, IDiagnosticLogger, objForEachKey, isNullOrUndefined, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"./Constants\";\r\n\r\nexport class TelemetryItemCreator {\r\n\r\n /**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights..PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\n\r\n public static create(item: T,\r\n baseType: string,\r\n envelopeName: string,\r\n logger: IDiagnosticLogger,\r\n customProperties?: { [key: string]: any },\r\n systemProperties?: { [key: string]: any }): ITelemetryItem {\r\n\r\n envelopeName = DataSanitizer.sanitizeString(logger, envelopeName) || strNotSpecified;\r\n\r\n if (isNullOrUndefined(item) ||\r\n isNullOrUndefined(baseType) ||\r\n isNullOrUndefined(envelopeName)) {\r\n throw Error(\"Input doesn't contain all required fields\");\r\n }\r\n\r\n const telemetryItem: ITelemetryItem = {\r\n name: envelopeName,\r\n time: toISOString(new Date()),\r\n iKey: \"\", // this will be set in TelemetryContext\r\n ext: systemProperties ? systemProperties : {}, // part A\r\n tags: [],\r\n data: {\r\n },\r\n baseType,\r\n baseData: item // Part B\r\n };\r\n\r\n // Part C\r\n if (!isNullOrUndefined(customProperties)) {\r\n objForEachKey(customProperties, (prop, value) => {\r\n telemetryItem.data[prop] = value;\r\n });\r\n }\r\n\r\n return telemetryItem;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { Domain } from './Domain';\r\n\r\n/**\r\n * Instances of Event represent structured event records that can be grouped and searched by their properties. Event data item also creates a metric of event count by name.\r\n */\r\nexport class EventData implements Domain {\r\n\r\n /**\r\n * Schema version\r\n */\r\n public ver: number = 2;\r\n\r\n /**\r\n * Event name. Keep it low cardinality to allow proper grouping and useful metrics.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Collection of custom properties.\r\n */\r\n public properties: any = {};\r\n\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n public measurements: any = {};\r\n\r\n constructor() {\r\n }\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { IDiagnosticLogger } from '@microsoft/applicationinsights-core-js';\r\nimport { EventData } from '../Interfaces/Contracts/Generated/EventData';\r\nimport { ISerializable } from '../Interfaces/Telemetry/ISerializable';\r\nimport { DataSanitizer } from './Common/DataSanitizer';\r\nimport { FieldType } from '../Enums';\r\nimport { strNotSpecified } from '../Constants';\r\n\r\nexport class Event extends EventData implements ISerializable {\r\n\r\n public static envelopeType = \"Microsoft.ApplicationInsights.{0}.Event\";\r\n public static dataType = \"EventData\";\r\n\r\n public aiDataContract = {\r\n ver: FieldType.Required,\r\n name: FieldType.Required,\r\n properties: FieldType.Default,\r\n measurements: FieldType.Default\r\n }\r\n\r\n /**\r\n * Constructs a new instance of the EventTelemetry object\r\n */\r\n constructor(logger: IDiagnosticLogger, name: string, properties?: any, measurements?: any) {\r\n\r\n super();\r\n\r\n this.name = DataSanitizer.sanitizeString(logger, name) || strNotSpecified;\r\n this.properties = DataSanitizer.sanitizeProperties(logger, properties);\r\n this.measurements = DataSanitizer.sanitizeMeasurements(logger, measurements);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\n/**\r\n * Type of the metric data measurement.\r\n */\r\nexport enum DataPointType {\r\n Measurement = 0,\r\n Aggregation = 1,\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { MessageData } from '../Interfaces/Contracts/Generated/MessageData';\r\nimport { ISerializable } from '../Interfaces/Telemetry/ISerializable';\r\nimport { DataSanitizer } from './Common/DataSanitizer';\r\nimport { FieldType } from '../Enums';\r\nimport { SeverityLevel } from '../Interfaces/Contracts/Generated/SeverityLevel';\r\nimport { IDiagnosticLogger } from '@microsoft/applicationinsights-core-js';\r\nimport { strNotSpecified } from '../Constants';\r\n\r\nexport class Trace extends MessageData implements ISerializable {\r\n\r\n public static envelopeType = \"Microsoft.ApplicationInsights.{0}.Message\";\r\n public static dataType = \"MessageData\";\r\n\r\n public aiDataContract = {\r\n ver: FieldType.Required,\r\n message: FieldType.Required,\r\n severityLevel: FieldType.Default,\r\n properties: FieldType.Default\r\n };\r\n\r\n /**\r\n * Constructs a new instance of the TraceTelemetry object\r\n */\r\n constructor(logger: IDiagnosticLogger, message: string, severityLevel?: SeverityLevel, properties?: any, measurements?: { [key: string]: number }) {\r\n super();\r\n message = message || strNotSpecified;\r\n this.message = DataSanitizer.sanitizeMessage(logger, message);\r\n this.properties = DataSanitizer.sanitizeProperties(logger, properties);\r\n this.measurements = DataSanitizer.sanitizeMeasurements(logger, measurements);\r\n\r\n if (severityLevel) {\r\n this.severityLevel = severityLevel;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { Domain } from './Domain';\r\nimport { SeverityLevel } from './SeverityLevel';\r\n\r\n/**\r\n * Instances of Message represent printf-like trace statements that are text-searched. Log4Net, NLog and other text-based log file entries are translated into intances of this type. The message does not have measurements.\r\n */\r\nexport class MessageData implements Domain {\r\n\r\n /**\r\n * Schema version\r\n */\r\n public ver: number = 2;\r\n\r\n /**\r\n * Trace message\r\n */\r\n public message: string;\r\n\r\n /**\r\n * Trace severity level.\r\n */\r\n public severityLevel: SeverityLevel;\r\n\r\n /**\r\n * Collection of custom properties.\r\n */\r\n public properties: any = {};\r\n\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n public measurements: any = {};\r\n\r\n constructor() {\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { Domain } from './Domain';\r\nimport { DataPoint } from './DataPoint';\r\n\r\n/**\r\n * An instance of the Metric item is a list of measurements (single data points) and/or aggregations.\r\n */\r\nexport class MetricData implements Domain {\r\n\r\n /**\r\n * Schema version\r\n */\r\n public ver: number = 2;\r\n\r\n /**\r\n * List of metrics. Only one metric in the list is currently supported by Application Insights storage. If multiple data points were sent only the first one will be used.\r\n */\r\n public metrics: DataPoint[] = [];\r\n\r\n /**\r\n * Collection of custom properties.\r\n */\r\n public properties: any = {};\r\n\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n public measurements: any = {};\r\n\r\n constructor() {\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { DataPointType } from './DataPointType';\r\n\r\n/**\r\n * Metric data single measurement.\r\n */\r\nexport class DataPoint {\r\n\r\n /**\r\n * Name of the metric.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Metric type. Single measurement or the aggregated value.\r\n */\r\n public kind: DataPointType = DataPointType.Measurement;\r\n\r\n /**\r\n * Single value for measurement. Sum of individual measurements for the aggregation.\r\n */\r\n public value: number;\r\n\r\n /**\r\n * Metric weight of the aggregated metric. Should not be set for a measurement.\r\n */\r\n public count: number;\r\n\r\n /**\r\n * Minimum value of the aggregated metric. Should not be set for a measurement.\r\n */\r\n public min: number;\r\n\r\n /**\r\n * Maximum value of the aggregated metric. Should not be set for a measurement.\r\n */\r\n public max: number;\r\n\r\n /**\r\n * Standard deviation of the aggregated metric. Should not be set for a measurement.\r\n */\r\n public stdDev: number;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { DataPoint as AIDataPoint } from '../../Interfaces/Contracts/Generated/DataPoint';\r\nimport { ISerializable } from '../../Interfaces/Telemetry/ISerializable';\r\nimport { FieldType } from '../../Enums';\r\n\r\nexport class DataPoint extends AIDataPoint implements ISerializable {\r\n\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n public aiDataContract = {\r\n name: FieldType.Required,\r\n kind: FieldType.Default,\r\n value: FieldType.Required,\r\n count: FieldType.Default,\r\n min: FieldType.Default,\r\n max: FieldType.Default,\r\n stdDev: FieldType.Default\r\n }\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { MetricData } from '../Interfaces/Contracts/Generated/MetricData';\r\nimport { ISerializable } from '../Interfaces/Telemetry/ISerializable';\r\nimport { DataSanitizer } from './Common/DataSanitizer';\r\nimport { FieldType } from '../Enums';\r\nimport { DataPoint } from './Common/DataPoint';\r\nimport { IDiagnosticLogger } from '@microsoft/applicationinsights-core-js';\r\nimport { strNotSpecified } from '../Constants';\r\n\r\nexport class Metric extends MetricData implements ISerializable {\r\n\r\n public static envelopeType = \"Microsoft.ApplicationInsights.{0}.Metric\";\r\n public static dataType = \"MetricData\";\r\n\r\n public aiDataContract = {\r\n ver: FieldType.Required,\r\n metrics: FieldType.Required,\r\n properties: FieldType.Default\r\n }\r\n\r\n /**\r\n * Constructs a new instance of the MetricTelemetry object\r\n */\r\n constructor(logger: IDiagnosticLogger, name: string, value: number, count?: number, min?: number, max?: number, properties?: any, measurements?: { [key: string]: number }) {\r\n super();\r\n\r\n const dataPoint = new DataPoint();\r\n dataPoint.count = count > 0 ? count : undefined;\r\n dataPoint.max = isNaN(max) || max === null ? undefined : max;\r\n dataPoint.min = isNaN(min) || min === null ? undefined : min;\r\n dataPoint.name = DataSanitizer.sanitizeString(logger, name) || strNotSpecified;\r\n dataPoint.value = value;\r\n\r\n this.metrics = [dataPoint];\r\n this.properties = DataSanitizer.sanitizeProperties(logger, properties);\r\n this.measurements = DataSanitizer.sanitizeMeasurements(logger, measurements);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { EventData } from './EventData';\r\n\r\n/**\r\n * An instance of PageView represents a generic action on a page like a button click. It is also the base type for PageView.\r\n */\r\nexport class PageViewData extends EventData {\r\n\r\n /**\r\n * Schema version\r\n */\r\n public ver: number = 2;\r\n\r\n /**\r\n * Request URL with all query string parameters\r\n */\r\n public url: string;\r\n\r\n /**\r\n * Event name. Keep it low cardinality to allow proper grouping and useful metrics.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Request duration in format: DD.HH:MM:SS.MMMMMM. For a page view (PageViewData), this is the duration. For a page view with performance information (PageViewPerfData), this is the page load time. Must be less than 1000 days.\r\n */\r\n public duration: string;\r\n\r\n /**\r\n * Identifier of a page view instance. Used for correlation between page view and other telemetry items.\r\n */\r\n public id: string;\r\n\r\n /**\r\n * Collection of custom properties.\r\n */\r\n public properties: any = {};\r\n\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n public measurements: any = {};\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { arrForEach, getNavigator, IPlugin, isString } from \"@microsoft/applicationinsights-core-js\";\r\n\r\nexport function stringToBoolOrDefault(str: any, defaultValue = false): boolean {\r\n if (str === undefined || str === null) {\r\n return defaultValue;\r\n }\r\n\r\n return str.toString().toLowerCase() === \"true\";\r\n}\r\n\r\n/**\r\n * Convert ms to c# time span format\r\n */\r\nexport function msToTimeSpan(totalms: number): string {\r\n if (isNaN(totalms) || totalms < 0) {\r\n totalms = 0;\r\n }\r\n\r\n totalms = Math.round(totalms);\r\n\r\n let ms = \"\" + totalms % 1000;\r\n let sec = \"\" + Math.floor(totalms / 1000) % 60;\r\n let min = \"\" + Math.floor(totalms / (1000 * 60)) % 60;\r\n let hour = \"\" + Math.floor(totalms / (1000 * 60 * 60)) % 24;\r\n const days = Math.floor(totalms / (1000 * 60 * 60 * 24));\r\n\r\n ms = ms.length === 1 ? \"00\" + ms : ms.length === 2 ? \"0\" + ms : ms;\r\n sec = sec.length < 2 ? \"0\" + sec : sec;\r\n min = min.length < 2 ? \"0\" + min : min;\r\n hour = hour.length < 2 ? \"0\" + hour : hour;\r\n\r\n return (days > 0 ? days + \".\" : \"\") + hour + \":\" + min + \":\" + sec + \".\" + ms;\r\n}\r\n\r\nexport function isBeaconApiSupported(): boolean {\r\n let nav = getNavigator();\r\n return ('sendBeacon' in nav && (nav as any).sendBeacon);\r\n}\r\n\r\nexport function getExtensionByName(extensions: IPlugin[], identifier: string): IPlugin | null {\r\n let extension: IPlugin = null;\r\n arrForEach(extensions, (value) => {\r\n if (value.identifier === identifier) {\r\n extension = value;\r\n return -1;\r\n }\r\n });\r\n\r\n return extension;\r\n}\r\n\r\nexport function isCrossOriginError(message: string|Event, url: string, lineNumber: number, columnNumber: number, error: Error): boolean {\r\n return !error && isString(message) && (message === \"Script error.\" || message === \"Script error\");\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { PageViewData } from '../Interfaces/Contracts/Generated/PageViewData';\r\nimport { DataSanitizer } from './Common/DataSanitizer';\r\nimport { ISerializable } from '../Interfaces/Telemetry/ISerializable';\r\nimport { FieldType } from '../Enums';\r\nimport { IDiagnosticLogger } from '@microsoft/applicationinsights-core-js';\r\nimport { msToTimeSpan } from '../HelperFuncs';\r\nimport { strNotSpecified } from '../Constants';\r\n\r\nexport class PageView extends PageViewData implements ISerializable {\r\n\r\n public static envelopeType = \"Microsoft.ApplicationInsights.{0}.Pageview\";\r\n public static dataType = \"PageviewData\";\r\n\r\n public aiDataContract = {\r\n ver: FieldType.Required,\r\n name: FieldType.Default,\r\n url: FieldType.Default,\r\n duration: FieldType.Default,\r\n properties: FieldType.Default,\r\n measurements: FieldType.Default,\r\n id: FieldType.Default\r\n }\r\n\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n constructor(logger: IDiagnosticLogger, name?: string, url?: string, durationMs?: number, properties?: {[key: string]: string}, measurements?: {[key: string]: number}, id?: string) {\r\n super();\r\n\r\n this.id = DataSanitizer.sanitizeId(logger, id);\r\n this.url = DataSanitizer.sanitizeUrl(logger, url);\r\n this.name = DataSanitizer.sanitizeString(logger, name) || strNotSpecified;\r\n if (!isNaN(durationMs)) {\r\n this.duration = msToTimeSpan(durationMs);\r\n }\r\n this.properties = DataSanitizer.sanitizeProperties(logger, properties);\r\n this.measurements = DataSanitizer.sanitizeMeasurements(logger, measurements);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { PageViewPerfData } from '../Interfaces/Contracts/Generated/PageViewPerfData';\r\nimport { FieldType } from '../Enums';\r\nimport { ISerializable } from '../Interfaces/Telemetry/ISerializable';\r\nimport { DataSanitizer } from './Common/DataSanitizer';\r\nimport { IDiagnosticLogger, _InternalMessageId, LoggingSeverity } from '@microsoft/applicationinsights-core-js';\r\nimport { IPageViewPerformanceTelemetry } from '../Interfaces/IPageViewPerformanceTelemetry';\r\nimport { strNotSpecified } from '../Constants';\r\n\r\n\r\nexport class PageViewPerformance extends PageViewPerfData implements ISerializable {\r\n\r\n public static envelopeType = \"Microsoft.ApplicationInsights.{0}.PageviewPerformance\";\r\n public static dataType = \"PageviewPerformanceData\";\r\n\r\n public aiDataContract = {\r\n ver: FieldType.Required,\r\n name: FieldType.Default,\r\n url: FieldType.Default,\r\n duration: FieldType.Default,\r\n perfTotal: FieldType.Default,\r\n networkConnect: FieldType.Default,\r\n sentRequest: FieldType.Default,\r\n receivedResponse: FieldType.Default,\r\n domProcessing: FieldType.Default,\r\n properties: FieldType.Default,\r\n measurements: FieldType.Default\r\n };\r\n\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n constructor(logger: IDiagnosticLogger, name: string, url: string, unused: number, properties?: { [key: string]: string }, measurements?: { [key: string]: number }, cs4BaseData?: IPageViewPerformanceTelemetry) {\r\n super();\r\n this.url = DataSanitizer.sanitizeUrl(logger, url);\r\n this.name = DataSanitizer.sanitizeString(logger, name) || strNotSpecified;\r\n\r\n this.properties = DataSanitizer.sanitizeProperties(logger, properties);\r\n this.measurements = DataSanitizer.sanitizeMeasurements(logger, measurements);\r\n\r\n if (cs4BaseData) {\r\n this.domProcessing = cs4BaseData.domProcessing;\r\n this.duration = cs4BaseData.duration\r\n this.networkConnect = cs4BaseData.networkConnect;\r\n this.perfTotal = cs4BaseData.perfTotal;\r\n this.receivedResponse = cs4BaseData.receivedResponse;\r\n this.sentRequest = cs4BaseData.sentRequest;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { PageViewData } from './PageViewData';\r\n\r\n/**\r\n * An instance of PageViewPerf represents: a page view with no performance data, a page view with performance data, or just the performance data of an earlier page request.\r\n */\r\nexport class PageViewPerfData extends PageViewData {\r\n\r\n /**\r\n * Schema version\r\n */\r\n public ver: number = 2;\r\n\r\n /**\r\n * Request URL with all query string parameters\r\n */\r\n public url: string;\r\n\r\n /**\r\n * Performance total in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff\r\n */\r\n public perfTotal: string;\r\n\r\n /**\r\n * Event name. Keep it low cardinality to allow proper grouping and useful metrics.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Request duration in format: DD.HH:MM:SS.MMMMMM. For a page view (PageViewData), this is the duration. For a page view with performance information (PageViewPerfData), this is the page load time. Must be less than 1000 days.\r\n */\r\n public duration: string;\r\n\r\n /**\r\n * Network connection time in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff\r\n */\r\n public networkConnect: string;\r\n\r\n /**\r\n * Sent request time in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff\r\n */\r\n public sentRequest: string;\r\n\r\n /**\r\n * Received response time in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff\r\n */\r\n public receivedResponse: string;\r\n\r\n /**\r\n * DOM processing time in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff\r\n */\r\n public domProcessing: string;\r\n\r\n /**\r\n * Collection of custom properties.\r\n */\r\n public properties: any = {};\r\n\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n public measurements: any = {};\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\n/**\r\n * Stack frame information.\r\n */\r\nexport class StackFrame {\r\n\r\n /**\r\n * Level in the call stack. For the long stacks SDK may not report every function in a call stack.\r\n */\r\n public level: number;\r\n\r\n /**\r\n * Method name.\r\n */\r\n public method: string;\r\n\r\n /**\r\n * Name of the assembly (dll, jar, etc.) containing this function.\r\n */\r\n public assembly: string;\r\n\r\n /**\r\n * File name or URL of the method implementation.\r\n */\r\n public fileName: string;\r\n\r\n /**\r\n * Line number of the code implementation.\r\n */\r\n public line: number;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { StackFrame } from './StackFrame';\r\n\r\n/**\r\n * Exception details of the exception in a chain.\r\n */\r\nexport class ExceptionDetails {\r\n\r\n /**\r\n * In case exception is nested (outer exception contains inner one), the id and outerId properties are used to represent the nesting.\r\n */\r\n public id: number;\r\n\r\n /**\r\n * The value of outerId is a reference to an element in ExceptionDetails that represents the outer exception\r\n */\r\n public outerId: number;\r\n\r\n /**\r\n * Exception type name.\r\n */\r\n public typeName: string;\r\n\r\n /**\r\n * Exception message.\r\n */\r\n public message: string;\r\n\r\n /**\r\n * Indicates if full exception stack is provided in the exception. The stack may be trimmed, such as in the case of a StackOverflow exception.\r\n */\r\n public hasFullStack: boolean = true;\r\n\r\n /**\r\n * Text describing the stack. Either stack or parsedStack should have a value.\r\n */\r\n public stack: string;\r\n\r\n /**\r\n * List of stack frames. Either stack or parsedStack should have a value.\r\n */\r\n public parsedStack: StackFrame[] = [];\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { StackFrame } from '../Interfaces/Contracts/Generated/StackFrame';\r\nimport { ExceptionData } from '../Interfaces/Contracts/Generated/ExceptionData';\r\nimport { ExceptionDetails } from '../Interfaces/Contracts/Generated/ExceptionDetails';\r\nimport { ISerializable } from '../Interfaces/Telemetry/ISerializable';\r\nimport { DataSanitizer } from './Common/DataSanitizer';\r\nimport { FieldType } from '../Enums';\r\nimport { SeverityLevel } from '../Interfaces/Contracts/Generated/SeverityLevel';\r\nimport { IDiagnosticLogger, isNullOrUndefined, arrMap, isString, strTrim, isArray, isError } from '@microsoft/applicationinsights-core-js';\r\nimport { IExceptionInternal, IExceptionDetailsInternal, IExceptionStackFrameInternal } from '../Interfaces/IExceptionTelemetry';\r\nimport { strNotSpecified } from '../Constants';\r\n\r\nconst strError = \"error\";\r\n\r\nfunction _isExceptionDetailsInternal(value:any): value is IExceptionDetailsInternal {\r\n return \"hasFullStack\" in value && \"typeName\" in value;\r\n}\r\n\r\nfunction _isExceptionInternal(value:any): value is IExceptionInternal {\r\n return (\"ver\" in value && \"exceptions\" in value && \"properties\" in value);\r\n}\r\n\r\nfunction _getErrorType(errorType: any) {\r\n // Gets the Error Type by passing the constructor (used to get the true type of native error object).\r\n let typeName = \"\";\r\n if (errorType) {\r\n typeName = errorType.typeName || errorType.name || \"\";\r\n if (!typeName) {\r\n try {\r\n var funcNameRegex = /function (.{1,})\\(/;\r\n var results = (funcNameRegex).exec((errorType).constructor.toString());\r\n typeName = (results && results.length > 1) ? results[1] : \"\";\r\n } catch (e) {\r\n // Ignore\r\n }\r\n }\r\n }\r\n\r\n return typeName;\r\n}\r\n\r\nexport class Exception extends ExceptionData implements ISerializable {\r\n\r\n public static envelopeType = \"Microsoft.ApplicationInsights.{0}.Exception\";\r\n public static dataType = \"ExceptionData\";\r\n\r\n public id?: string;\r\n public problemGroup?: string;\r\n public isManual?: boolean;\r\n\r\n public aiDataContract = {\r\n ver: FieldType.Required,\r\n exceptions: FieldType.Required,\r\n severityLevel: FieldType.Default,\r\n properties: FieldType.Default,\r\n measurements: FieldType.Default\r\n }\r\n\r\n /**\r\n * Constructs a new instance of the ExceptionTelemetry object\r\n */\r\n constructor(logger: IDiagnosticLogger, exception: Error | IExceptionInternal, properties?: {[key: string]: any}, measurements?: {[key: string]: number}, severityLevel?: SeverityLevel, id?: string) {\r\n super();\r\n\r\n if (!_isExceptionInternal(exception)) {\r\n this.exceptions = [new _ExceptionDetails(logger, exception)];\r\n this.properties = DataSanitizer.sanitizeProperties(logger, properties) || {};\r\n this.measurements = DataSanitizer.sanitizeMeasurements(logger, measurements);\r\n if (severityLevel) { this.severityLevel = severityLevel; }\r\n if (id) { this.id = id; }\r\n } else {\r\n this.exceptions = exception.exceptions;\r\n this.properties = exception.properties;\r\n this.measurements = exception.measurements;\r\n if (exception.severityLevel) { this.severityLevel = exception.severityLevel; }\r\n if (exception.id) { this.id = exception.id; }\r\n if (exception.problemGroup) { this.problemGroup = exception.problemGroup; }\r\n\r\n // bool/int types, use isNullOrUndefined\r\n this.ver = 2; // TODO: handle the CS\"4.0\" ==> breeze 2 conversion in a better way\r\n if (!isNullOrUndefined(exception.isManual)) { this.isManual = exception.isManual; }\r\n }\r\n }\r\n\r\n public static CreateFromInterface(logger: IDiagnosticLogger, exception: IExceptionInternal, properties?: any, measurements?: { [key: string]: number }): Exception {\r\n const exceptions: _ExceptionDetails[] = exception.exceptions\r\n && arrMap(exception.exceptions, (ex: IExceptionDetailsInternal) => _ExceptionDetails.CreateFromInterface(logger, ex));\r\n const exceptionData = new Exception(logger, {...exception, exceptions}, properties, measurements);\r\n return exceptionData;\r\n }\r\n\r\n public toInterface(): IExceptionInternal {\r\n const { exceptions, properties, measurements, severityLevel, ver, problemGroup, id, isManual } = this;\r\n\r\n const exceptionDetailsInterface = exceptions instanceof Array\r\n && arrMap(exceptions, (exception: _ExceptionDetails) => exception.toInterface())\r\n || undefined;\r\n\r\n return {\r\n ver: \"4.0\", // TODO: handle the CS\"4.0\" ==> breeze 2 conversion in a better way\r\n exceptions: exceptionDetailsInterface,\r\n severityLevel,\r\n properties,\r\n measurements,\r\n problemGroup,\r\n id,\r\n isManual\r\n } as IExceptionInternal;\r\n }\r\n\r\n /**\r\n * Creates a simple exception with 1 stack frame. Useful for manual constracting of exception.\r\n */\r\n public static CreateSimpleException(message: string, typeName: string, assembly: string, fileName: string,\r\n details: string, line: number): Exception {\r\n\r\n return {\r\n exceptions: [\r\n {\r\n hasFullStack: true,\r\n message,\r\n stack: details,\r\n typeName\r\n } as ExceptionDetails\r\n ]\r\n } as Exception;\r\n }\r\n}\r\n\r\nexport class _ExceptionDetails extends ExceptionDetails implements ISerializable {\r\n\r\n public aiDataContract = {\r\n id: FieldType.Default,\r\n outerId: FieldType.Default,\r\n typeName: FieldType.Required,\r\n message: FieldType.Required,\r\n hasFullStack: FieldType.Default,\r\n stack: FieldType.Default,\r\n parsedStack: FieldType.Array\r\n };\r\n\r\n constructor(logger: IDiagnosticLogger, exception: Error | IExceptionDetailsInternal) {\r\n super();\r\n\r\n if (!_isExceptionDetailsInternal(exception)) {\r\n let error = exception as any;\r\n if (!isError(error)) {\r\n error = error[strError] || error.evt || error;\r\n }\r\n\r\n this.typeName = DataSanitizer.sanitizeString(logger, _getErrorType(error)) || strNotSpecified;\r\n this.message = DataSanitizer.sanitizeMessage(logger, exception.message) || strNotSpecified;\r\n const stack = exception.stack;\r\n this.parsedStack = _ExceptionDetails.parseStack(stack);\r\n this.stack = DataSanitizer.sanitizeException(logger, stack);\r\n this.hasFullStack = isArray(this.parsedStack) && this.parsedStack.length > 0;\r\n } else {\r\n this.typeName = exception.typeName;\r\n this.message = exception.message;\r\n this.stack = exception.stack;\r\n this.parsedStack = exception.parsedStack\r\n this.hasFullStack = exception.hasFullStack\r\n }\r\n }\r\n\r\n public toInterface(): IExceptionDetailsInternal {\r\n const parsedStack = this.parsedStack instanceof Array\r\n && arrMap(this.parsedStack, (frame: _StackFrame) => frame.toInterface());\r\n\r\n const exceptionDetailsInterface: IExceptionDetailsInternal = {\r\n id: this.id,\r\n outerId: this.outerId,\r\n typeName: this.typeName,\r\n message: this.message,\r\n hasFullStack: this.hasFullStack,\r\n stack: this.stack,\r\n parsedStack: parsedStack || undefined\r\n };\r\n\r\n return exceptionDetailsInterface;\r\n }\r\n\r\n public static CreateFromInterface(logger:IDiagnosticLogger, exception: IExceptionDetailsInternal): _ExceptionDetails {\r\n const parsedStack = (exception.parsedStack instanceof Array\r\n && arrMap(exception.parsedStack, frame => _StackFrame.CreateFromInterface(frame)))\r\n || exception.parsedStack;\r\n\r\n const exceptionDetails = new _ExceptionDetails(logger, {...exception, parsedStack});\r\n\r\n return exceptionDetails;\r\n }\r\n\r\n private static parseStack(stack?:string): _StackFrame[] {\r\n let parsedStack: _StackFrame[];\r\n if (isString(stack)) {\r\n const frames = stack.split('\\n');\r\n parsedStack = [];\r\n let level = 0;\r\n\r\n let totalSizeInBytes = 0;\r\n for (let i = 0; i <= frames.length; i++) {\r\n const frame = frames[i];\r\n if (_StackFrame.regex.test(frame)) {\r\n const parsedFrame = new _StackFrame(frames[i], level++);\r\n totalSizeInBytes += parsedFrame.sizeInBytes;\r\n parsedStack.push(parsedFrame);\r\n }\r\n }\r\n\r\n // DP Constraint - exception parsed stack must be < 32KB\r\n // remove frames from the middle to meet the threshold\r\n const exceptionParsedStackThreshold = 32 * 1024;\r\n if (totalSizeInBytes > exceptionParsedStackThreshold) {\r\n let left = 0;\r\n let right = parsedStack.length - 1;\r\n let size = 0;\r\n let acceptedLeft = left;\r\n let acceptedRight = right;\r\n\r\n while (left < right) {\r\n // check size\r\n const lSize = parsedStack[left].sizeInBytes;\r\n const rSize = parsedStack[right].sizeInBytes;\r\n size += lSize + rSize;\r\n\r\n if (size > exceptionParsedStackThreshold) {\r\n\r\n // remove extra frames from the middle\r\n const howMany = acceptedRight - acceptedLeft + 1;\r\n parsedStack.splice(acceptedLeft, howMany);\r\n break;\r\n }\r\n\r\n // update pointers\r\n acceptedLeft = left;\r\n acceptedRight = right;\r\n\r\n left++;\r\n right--;\r\n }\r\n }\r\n }\r\n\r\n return parsedStack;\r\n }\r\n}\r\n\r\nexport class _StackFrame extends StackFrame implements ISerializable {\r\n\r\n // regex to match stack frames from ie/chrome/ff\r\n // methodName=$2, fileName=$4, lineNo=$5, column=$6\r\n public static regex = /^([\\s]+at)?(.*?)(\\@|\\s\\(|\\s)([^\\(\\@\\n]+):([0-9]+):([0-9]+)(\\)?)$/;\r\n public static baseSize = 58; // '{\"method\":\"\",\"level\":,\"assembly\":\"\",\"fileName\":\"\",\"line\":}'.length\r\n public sizeInBytes = 0;\r\n\r\n public aiDataContract = {\r\n level: FieldType.Required,\r\n method: FieldType.Required,\r\n assembly: FieldType.Default,\r\n fileName: FieldType.Default,\r\n line: FieldType.Default,\r\n };\r\n\r\n constructor(sourceFrame: string | IExceptionStackFrameInternal, level: number) {\r\n super();\r\n\r\n // Not converting this to isString() as typescript uses this logic to \"understand\" the different\r\n // types for the 2 different code paths\r\n if (typeof sourceFrame === \"string\") {\r\n const frame: string = sourceFrame;\r\n this.level = level;\r\n this.method = \"\";\r\n this.assembly = strTrim(frame);\r\n this.fileName = \"\";\r\n this.line = 0;\r\n const matches = frame.match(_StackFrame.regex);\r\n if (matches && matches.length >= 5) {\r\n this.method = strTrim(matches[2]) || this.method;\r\n this.fileName = strTrim(matches[4]);\r\n this.line = parseInt(matches[5]) || 0;\r\n }\r\n } else {\r\n this.level = sourceFrame.level;\r\n this.method = sourceFrame.method;\r\n this.assembly = sourceFrame.assembly;\r\n this.fileName = sourceFrame.fileName;\r\n this.line = sourceFrame.line;\r\n this.sizeInBytes = 0;\r\n }\r\n\r\n this.sizeInBytes += this.method.length;\r\n this.sizeInBytes += this.fileName.length;\r\n this.sizeInBytes += this.assembly.length;\r\n\r\n // todo: these might need to be removed depending on how the back-end settles on their size calculation\r\n this.sizeInBytes += _StackFrame.baseSize;\r\n this.sizeInBytes += this.level.toString().length;\r\n this.sizeInBytes += this.line.toString().length;\r\n }\r\n\r\n public static CreateFromInterface(frame: IExceptionStackFrameInternal) {\r\n return new _StackFrame(frame, null /* level is available in frame interface */);\r\n }\r\n\r\n public toInterface() {\r\n return {\r\n level: this.level,\r\n method: this.method,\r\n assembly: this.assembly,\r\n fileName: this.fileName,\r\n line: this.line\r\n };\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { ExceptionDetails } from './ExceptionDetails';\r\nimport { Domain } from './Domain';\r\nimport { SeverityLevel } from './SeverityLevel';\r\n\r\n/**\r\n * An instance of Exception represents a handled or unhandled exception that occurred during execution of the monitored application.\r\n */\r\nexport class ExceptionData implements Domain {\r\n\r\n /**\r\n * Schema version\r\n */\r\n public ver: number = 2;\r\n\r\n /**\r\n * Exception chain - list of inner exceptions.\r\n */\r\n public exceptions: ExceptionDetails[] = [];\r\n\r\n /**\r\n * Severity level. Mostly used to indicate exception severity level when it is reported by logging library.\r\n */\r\n public severityLevel: SeverityLevel;\r\n\r\n /**\r\n * Collection of custom properties.\r\n */\r\n public properties: any = {};\r\n\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n public measurements: any = {};\r\n\r\n constructor() {\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { dumpObj, getExceptionName, getGlobal, getGlobalInst, IDiagnosticLogger, isNullOrUndefined, LoggingSeverity, objForEachKey, _InternalMessageId } from \"@microsoft/applicationinsights-core-js\";\r\nimport { StorageType } from \"./Enums\";\r\n\r\nlet _canUseLocalStorage: boolean = undefined;\r\nlet _canUseSessionStorage: boolean = undefined;\r\n\r\n/**\r\n * Gets the localStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getLocalStorageObject(): Storage {\r\n if (utlCanUseLocalStorage()) {\r\n return _getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Tests storage object (localStorage or sessionStorage) to verify that it is usable\r\n * More details here: https://mathiasbynens.be/notes/localstorage-pattern\r\n * @param storageType Type of storage\r\n * @return {Storage} Returns storage object verified that it is usable\r\n */\r\nfunction _getVerifiedStorageObject(storageType: StorageType): Storage {\r\n try {\r\n if (isNullOrUndefined(getGlobal())) {\r\n return null;\r\n }\r\n let uid = new Date;\r\n let storage: Storage = getGlobalInst(storageType === StorageType.LocalStorage ? \"localStorage\" : \"sessionStorage\");\r\n storage.setItem(uid.toString(), uid.toString());\r\n let fail = storage.getItem(uid.toString()) !== uid.toString();\r\n storage.removeItem(uid.toString());\r\n if (!fail) {\r\n return storage;\r\n }\r\n } catch (exception) {\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Gets the sessionStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getSessionStorageObject(): Storage {\r\n if (utlCanUseSessionStorage()) {\r\n return _getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport function utlDisableStorage() {\r\n _canUseLocalStorage = false;\r\n _canUseSessionStorage = false;\r\n}\r\n\r\nexport function utlCanUseLocalStorage(): boolean {\r\n if (_canUseLocalStorage === undefined) {\r\n _canUseLocalStorage = !!_getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n\r\n return _canUseLocalStorage;\r\n}\r\n\r\nexport function utlGetLocalStorage(logger: IDiagnosticLogger, name: string): string {\r\n const storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n } catch (e) {\r\n _canUseLocalStorage = false;\r\n\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.BrowserCannotReadLocalStorage,\r\n \"Browser failed read of local storage. \" + getExceptionName(e),\r\n { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function utlSetLocalStorage(logger: IDiagnosticLogger, name: string, data: string): boolean {\r\n const storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n } catch (e) {\r\n _canUseLocalStorage = false;\r\n\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.BrowserCannotWriteLocalStorage,\r\n \"Browser failed write to local storage. \" + getExceptionName(e),\r\n { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport function utlRemoveStorage(logger: IDiagnosticLogger, name: string): boolean {\r\n const storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.removeItem(name);\r\n return true;\r\n } catch (e) {\r\n _canUseLocalStorage = false;\r\n\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.BrowserFailedRemovalFromLocalStorage,\r\n \"Browser failed removal of local storage item. \" + getExceptionName(e),\r\n { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport function utlCanUseSessionStorage(): boolean {\r\n if (_canUseSessionStorage === undefined) {\r\n _canUseSessionStorage = !!_getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n\r\n return _canUseSessionStorage;\r\n}\r\n\r\nexport function utlGetSessionStorageKeys(): string[] {\r\n const keys: string[] = [];\r\n\r\n if (utlCanUseSessionStorage()) {\r\n objForEachKey(getGlobalInst(\"sessionStorage\"), (key) => {\r\n keys.push(key);\r\n });\r\n }\r\n\r\n return keys;\r\n}\r\n\r\nexport function utlGetSessionStorage(logger: IDiagnosticLogger, name: string): string {\r\n const storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n } catch (e) {\r\n _canUseSessionStorage = false;\r\n\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.BrowserCannotReadSessionStorage,\r\n \"Browser failed read of session storage. \" + getExceptionName(e),\r\n { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function utlSetSessionStorage(logger: IDiagnosticLogger, name: string, data: string): boolean {\r\n const storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n } catch (e) {\r\n _canUseSessionStorage = false;\r\n\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.BrowserCannotWriteSessionStorage,\r\n \"Browser failed write to session storage. \" + getExceptionName(e),\r\n { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport function utlRemoveSessionStorage(logger: IDiagnosticLogger, name: string): boolean {\r\n const storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.removeItem(name);\r\n return true;\r\n } catch (e) {\r\n _canUseSessionStorage = false;\r\n\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.BrowserFailedRemovalFromSessionStorage,\r\n \"Browser failed removal of session storage item. \" + getExceptionName(e),\r\n { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { isFunction, getDocument } from '@microsoft/applicationinsights-core-js';\r\n\r\nexport function createDomEvent(eventName: string): Event {\r\n let event: Event = null;\r\n\r\n if (isFunction(Event)) { // Use Event constructor when available\r\n event = new Event(eventName);\r\n } else { // Event has no constructor in IE\r\n let doc = getDocument();\r\n if (doc && doc.createEvent) {\r\n event = doc.createEvent(\"Event\");\r\n event.initEvent(eventName, true, true);\r\n }\r\n }\r\n\r\n return event;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nexport interface IRequestHeaders {\r\n /**\r\n * Request-Context header\r\n */\r\n requestContextHeader: string,\r\n\r\n /**\r\n * Target instrumentation header that is added to the response and retrieved by the\r\n * calling application when processing incoming responses.\r\n */\r\n requestContextTargetKey: string,\r\n\r\n /**\r\n * Request-Context appId format\r\n */\r\n requestContextAppIdFormat: string,\r\n\r\n /**\r\n * Request-Id header\r\n */\r\n requestIdHeader: string,\r\n\r\n /**\r\n * W3C distributed tracing protocol header\r\n */\r\n traceParentHeader: string,\r\n\r\n /**\r\n * W3C distributed tracing protocol state header\r\n */\r\n traceStateHeader: string, // currently not used\r\n\r\n /**\r\n * Sdk-Context header\r\n * If this header passed with appId in content then appId will be returned back by the backend.\r\n */\r\n sdkContextHeader: string,\r\n\r\n /**\r\n * String to pass in header for requesting appId back from the backend.\r\n */\r\n sdkContextHeaderAppIdRequest: string,\r\n\r\n requestContextHeaderLowerCase: string\r\n}\r\n\r\nexport const RequestHeaders: IRequestHeaders = {\r\n requestContextHeader: \"Request-Context\",\r\n requestContextTargetKey: \"appId\",\r\n requestContextAppIdFormat: \"appId=cid-v1:\",\r\n requestIdHeader: \"Request-Id\",\r\n traceParentHeader: \"traceparent\",\r\n traceStateHeader: \"tracestate\", // currently not used\r\n sdkContextHeader: \"Sdk-Context\",\r\n sdkContextHeaderAppIdRequest: \"appId\",\r\n requestContextHeaderLowerCase: \"request-context\"\r\n};","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { getDocument, isString } from \"@microsoft/applicationinsights-core-js\";\r\n\r\nlet _document: any = getDocument() || {};\r\n\r\nlet _htmlAnchorIdx: number = 0;\r\n// Use an array of temporary values as it's possible for multiple calls to parseUrl() will be called with different URLs\r\n// Using a cache size of 5 for now as it current depth usage is at least 2, so adding a minor buffer to handle future updates\r\nlet _htmlAnchorElement: HTMLAnchorElement[] = [null, null, null, null, null];\r\n\r\nexport function urlParseUrl(url: string): HTMLAnchorElement {\r\n let anchorIdx = _htmlAnchorIdx;\r\n let anchorCache = _htmlAnchorElement;\r\n let tempAnchor = anchorCache[anchorIdx];\r\n if (!_document.createElement) {\r\n // Always create the temp instance if createElement is not available\r\n tempAnchor = { host: urlParseHost(url, true) } as HTMLAnchorElement;\r\n } else if (!anchorCache[anchorIdx]) {\r\n // Create and cache the unattached anchor instance \r\n tempAnchor = anchorCache[anchorIdx] = _document.createElement('a');\r\n }\r\n\r\n tempAnchor.href = url;\r\n\r\n // Move the cache index forward\r\n anchorIdx++;\r\n if (anchorIdx >= anchorCache.length) {\r\n anchorIdx = 0;\r\n }\r\n\r\n _htmlAnchorIdx = anchorIdx;\r\n\r\n return tempAnchor;\r\n}\r\n\r\nexport function urlGetAbsoluteUrl(url: string): string {\r\n let result: string;\r\n const a = urlParseUrl(url);\r\n if (a) {\r\n result = a.href;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function urlGetPathName(url: string): string {\r\n let result: string;\r\n const a = urlParseUrl(url);\r\n if (a) {\r\n result = a.pathname;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function urlGetCompleteUrl(method: string, absoluteUrl: string) {\r\n if (method) {\r\n return method.toUpperCase() + \" \" + absoluteUrl;\r\n } \r\n\r\n return absoluteUrl;\r\n}\r\n\r\n// Fallback method to grab host from url if document.createElement method is not available\r\nexport function urlParseHost(url: string, inclPort?: boolean) {\r\n let fullHost = urlParseFullHost(url, inclPort);\r\n if (fullHost) {\r\n const match = fullHost.match(/(www[0-9]?\\.)?(.[^/:]+)(\\:[\\d]+)?/i);\r\n if (match != null && match.length > 3 && isString(match[2]) && match[2].length > 0) {\r\n return match[2] + (match[3] || \"\");\r\n }\r\n }\r\n\r\n return fullHost;\r\n}\r\n\r\nexport function urlParseFullHost(url: string, inclPort?: boolean) {\r\n let result = null;\r\n if (url) {\r\n const match = url.match(/(\\w*):\\/\\/(.[^/:]+)(\\:[\\d]+)?/i);\r\n if (match != null && match.length > 2 && isString(match[2]) && match[2].length > 0) {\r\n result = match[2] || \"\";\r\n if (inclPort && match.length > 2) {\r\n const protocol = (match[1] || \"\").toLowerCase();\r\n let port = match[3] || \"\";\r\n // IE includes the standard port so pass it off if it's the same as the protocol\r\n if (protocol === \"http\" && port === \":80\") {\r\n port = \"\";\r\n } else if (protocol === \"https\" && port === \":443\") {\r\n port = \"\";\r\n }\r\n\r\n result += port;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { StorageType } from \"./Enums\";\r\nimport {\r\n _InternalMessageId, LoggingSeverity, IDiagnosticLogger, IPlugin,\r\n getGlobal, getGlobalInst, getDocument, getNavigator, getPerformance,\r\n getExceptionName as coreGetExceptionName, dumpObj, objForEachKey,\r\n isString, isNullOrUndefined, strTrim, random32, isArray, isError, isDate,\r\n newId, generateW3CId, toISOString, arrForEach, getIEVersion, attachEvent, \r\n dateNow, uaDisallowsSameSiteNone, disableCookies as coreDisableCookies,\r\n canUseCookies as coreCanUseCookies, getCookie as coreGetCookie,\r\n setCookie as coreSetCookie, deleteCookie as coreDeleteCookie\r\n} from \"@microsoft/applicationinsights-core-js\";\r\nimport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nimport { DataSanitizer } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { ICorrelationConfig } from \"./Interfaces/ICorrelationConfig\";\r\nimport { createDomEvent } from './DomHelperFuncs';\r\nimport { stringToBoolOrDefault, msToTimeSpan, isBeaconApiSupported, isCrossOriginError, getExtensionByName } from \"./HelperFuncs\";\r\nimport { strNotSpecified } from \"./Constants\";\r\nimport { utlCanUseLocalStorage, utlCanUseSessionStorage, utlDisableStorage, utlGetSessionStorage, utlGetSessionStorageKeys, utlGetLocalStorage, utlRemoveSessionStorage, utlRemoveStorage, utlSetSessionStorage, utlSetLocalStorage } from \"./StorageHelperFuncs\";\r\nimport { urlGetAbsoluteUrl, urlGetCompleteUrl, urlGetPathName, urlParseFullHost, urlParseHost, urlParseUrl } from \"./UrlHelperFuncs\";\r\n\r\n// listing only non-geo specific locations\r\nconst _internalEndpoints: string[] = [\r\n \"https://dc.services.visualstudio.com/v2/track\",\r\n \"https://breeze.aimon.applicationinsights.io/v2/track\",\r\n \"https://dc-int.services.visualstudio.com/v2/track\"\r\n];\r\n\r\nexport function isInternalApplicationInsightsEndpoint(endpointUrl: string): boolean {\r\n return _internalEndpoints.indexOf(endpointUrl.toLowerCase()) !== -1;\r\n}\r\n\r\nexport interface IUtil {\r\n NotSpecified: string,\r\n\r\n createDomEvent: (eventName: string) => Event,\r\n\r\n /*\r\n * Force the SDK not to use local and session storage\r\n */\r\n disableStorage: () => void,\r\n\r\n /**\r\n * Checks if endpoint URL is application insights internal injestion service URL.\r\n *\r\n * @param endpointUrl Endpoint URL to check.\r\n * @returns {boolean} True if if endpoint URL is application insights internal injestion service URL.\r\n */\r\n isInternalApplicationInsightsEndpoint: (endpointUrl: string) => boolean,\r\n\r\n /**\r\n * Check if the browser supports local storage.\r\n *\r\n * @returns {boolean} True if local storage is supported.\r\n */\r\n canUseLocalStorage: () => boolean,\r\n\r\n /**\r\n * Get an object from the browser's local storage\r\n *\r\n * @param {string} name - the name of the object to get from storage\r\n * @returns {string} The contents of the storage object with the given name. Null if storage is not supported.\r\n */\r\n getStorage: (logger: IDiagnosticLogger, name: string) => string,\r\n\r\n /**\r\n * Set the contents of an object in the browser's local storage\r\n *\r\n * @param {string} name - the name of the object to set in storage\r\n * @param {string} data - the contents of the object to set in storage\r\n * @returns {boolean} True if the storage object could be written.\r\n */\r\n setStorage: (logger: IDiagnosticLogger, name: string, data: string) => boolean,\r\n\r\n /**\r\n * Remove an object from the browser's local storage\r\n *\r\n * @param {string} name - the name of the object to remove from storage\r\n * @returns {boolean} True if the storage object could be removed.\r\n */\r\n removeStorage: (logger: IDiagnosticLogger, name: string) => boolean,\r\n\r\n /**\r\n * Check if the browser supports session storage.\r\n *\r\n * @returns {boolean} True if session storage is supported.\r\n */\r\n canUseSessionStorage: () => boolean,\r\n\r\n /**\r\n * Gets the list of session storage keys\r\n *\r\n * @returns {string[]} List of session storage keys\r\n */\r\n getSessionStorageKeys: () => string[],\r\n\r\n /**\r\n * Get an object from the browser's session storage\r\n *\r\n * @param {string} name - the name of the object to get from storage\r\n * @returns {string} The contents of the storage object with the given name. Null if storage is not supported.\r\n */\r\n getSessionStorage: (logger: IDiagnosticLogger, name: string) => string,\r\n\r\n /**\r\n * Set the contents of an object in the browser's session storage\r\n *\r\n * @param {string} name - the name of the object to set in storage\r\n * @param {string} data - the contents of the object to set in storage\r\n * @returns {boolean} True if the storage object could be written.\r\n */\r\n setSessionStorage: (logger: IDiagnosticLogger, name: string, data: string) => boolean,\r\n\r\n /**\r\n * Remove an object from the browser's session storage\r\n *\r\n * @param {string} name - the name of the object to remove from storage\r\n * @returns {boolean} True if the storage object could be removed.\r\n */\r\n removeSessionStorage: (logger: IDiagnosticLogger, name: string) => boolean,\r\n\r\n /**\r\n * @deprecated - Use the core.getCookieMgr().disable()\r\n * Force the SDK not to store and read any data from cookies.\r\n */\r\n disableCookies: () => void,\r\n\r\n /**\r\n * @deprecated - Use the core.getCookieMgr().isEnabled()\r\n * Helper method to tell if document.cookie object is available and whether it can be used.\r\n */\r\n canUseCookies: (logger: IDiagnosticLogger) => any,\r\n\r\n disallowsSameSiteNone: (userAgent: string) => boolean,\r\n\r\n /**\r\n * @deprecated - Use the core.getCookieMgr().set()\r\n * helper method to set userId and sessionId cookie\r\n */\r\n setCookie: (logger: IDiagnosticLogger, name: string, value: string, domain?: string) => void,\r\n\r\n stringToBoolOrDefault: (str: any, defaultValue?: boolean) => boolean,\r\n\r\n /**\r\n * @deprecated - Use the core.getCookieMgr().get()\r\n * helper method to access userId and sessionId cookie\r\n */\r\n getCookie: (logger: IDiagnosticLogger, name: string) => string,\r\n\r\n /**\r\n * @deprecated - Use the core.getCookieMgr().del()\r\n * Deletes a cookie by setting it's expiration time in the past.\r\n * @param name - The name of the cookie to delete.\r\n */\r\n deleteCookie: (logger: IDiagnosticLogger, name: string) => void,\r\n\r\n /**\r\n * helper method to trim strings (IE8 does not implement String.prototype.trim)\r\n */\r\n trim: (str: any) => string,\r\n\r\n /**\r\n * generate random id string\r\n */\r\n newId: () => string,\r\n\r\n /**\r\n * generate a random 32bit number (-0x80000000..0x7FFFFFFF).\r\n */\r\n random32: () => number,\r\n\r\n /**\r\n * generate W3C trace id\r\n */\r\n generateW3CId: () => string,\r\n\r\n /**\r\n * Check if an object is of type Array\r\n */\r\n isArray: (obj: any) => boolean,\r\n\r\n /**\r\n * Check if an object is of type Error\r\n */\r\n isError: (obj: any) => obj is Error,\r\n\r\n /**\r\n * Check if an object is of type Date\r\n */\r\n isDate: (obj: any) => obj is Date,\r\n\r\n // Keeping this name for backward compatibility (for now)\r\n toISOStringForIE8: (date: Date) => string,\r\n\r\n /**\r\n * Gets IE version returning the document emulation mode if we are running on IE, or null otherwise\r\n */\r\n getIEVersion: (userAgentStr?: string) => number,\r\n\r\n /**\r\n * Convert ms to c# time span format\r\n */\r\n msToTimeSpan: (totalms: number) => string,\r\n\r\n /**\r\n * Checks if error has no meaningful data inside. Ususally such errors are received by window.onerror when error\r\n * happens in a script from other domain (cross origin, CORS).\r\n */\r\n isCrossOriginError: (message: string|Event, url: string, lineNumber: number, columnNumber: number, error: Error) => boolean,\r\n\r\n /**\r\n * Returns string representation of an object suitable for diagnostics logging.\r\n */\r\n dump: (object: any) => string,\r\n\r\n /**\r\n * Returns the name of object if it's an Error. Otherwise, returns empty string.\r\n */\r\n getExceptionName: (object: any) => string,\r\n\r\n /**\r\n * Adds an event handler for the specified event to the window\r\n * @param eventName {string} - The name of the event\r\n * @param callback {any} - The callback function that needs to be executed for the given event\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\n addEventHandler: (obj: any, eventNameWithoutOn: string, handlerRef: any, useCapture: boolean) => boolean,\r\n\r\n /**\r\n * Tells if a browser supports a Beacon API\r\n */\r\n IsBeaconApiSupported: () => boolean,\r\n\r\n getExtension: (extensions: IPlugin[], identifier: string) => IPlugin | null\r\n}\r\n\r\nexport const Util: IUtil = {\r\n NotSpecified: strNotSpecified,\r\n createDomEvent: createDomEvent,\r\n disableStorage: utlDisableStorage,\r\n isInternalApplicationInsightsEndpoint: isInternalApplicationInsightsEndpoint,\r\n canUseLocalStorage: utlCanUseLocalStorage,\r\n getStorage: utlGetLocalStorage,\r\n setStorage: utlSetLocalStorage,\r\n removeStorage: utlRemoveStorage,\r\n canUseSessionStorage: utlCanUseSessionStorage,\r\n getSessionStorageKeys: utlGetSessionStorageKeys,\r\n getSessionStorage: utlGetSessionStorage,\r\n setSessionStorage: utlSetSessionStorage,\r\n removeSessionStorage: utlRemoveSessionStorage,\r\n disableCookies: coreDisableCookies,\r\n canUseCookies: coreCanUseCookies,\r\n disallowsSameSiteNone: uaDisallowsSameSiteNone,\r\n setCookie: coreSetCookie,\r\n stringToBoolOrDefault: stringToBoolOrDefault,\r\n getCookie: coreGetCookie,\r\n deleteCookie: coreDeleteCookie,\r\n trim: strTrim,\r\n newId: newId,\r\n random32: function() {\r\n return random32(true);\r\n },\r\n generateW3CId: generateW3CId,\r\n isArray: isArray,\r\n isError: isError,\r\n isDate: isDate,\r\n toISOStringForIE8: toISOString,\r\n getIEVersion: getIEVersion,\r\n msToTimeSpan: msToTimeSpan,\r\n isCrossOriginError: isCrossOriginError,\r\n dump: dumpObj,\r\n getExceptionName: coreGetExceptionName,\r\n addEventHandler: attachEvent,\r\n IsBeaconApiSupported: isBeaconApiSupported,\r\n getExtension: getExtensionByName\r\n};\r\n\r\nexport interface IUrlHelper {\r\n\r\n parseUrl: (url: string) => HTMLAnchorElement,\r\n getAbsoluteUrl: (url: string) => string,\r\n getPathName: (url: string) => string,\r\n getCompleteUrl: (method: string, absoluteUrl: string) => string,\r\n\r\n // Fallback method to grab host from url if document.createElement method is not available\r\n parseHost: (url: string, inclPort?: boolean) => string,\r\n\r\n /**\r\n * Get the full host from the url, optionally including the port\r\n */\r\n parseFullHost: (url: string, inclPort?: boolean) => string\r\n};\r\n\r\nexport const UrlHelper: IUrlHelper = {\r\n parseUrl: urlParseUrl,\r\n getAbsoluteUrl: urlGetAbsoluteUrl,\r\n getPathName: urlGetPathName,\r\n getCompleteUrl: urlGetCompleteUrl,\r\n parseHost: urlParseHost,\r\n parseFullHost: urlParseFullHost\r\n};\r\n\r\nexport interface ICorrelationIdHelper {\r\n correlationIdPrefix: string;\r\n\r\n /**\r\n * Checks if a request url is not on a excluded domain list and if it is safe to add correlation headers.\r\n * Headers are always included if the current domain matches the request domain. If they do not match (CORS),\r\n * they are regex-ed across correlationHeaderDomains and correlationHeaderExcludedDomains to determine if headers are included.\r\n * Some environments don't give information on currentHost via window.location.host (e.g. Cordova). In these cases, the user must\r\n * manually supply domains to include correlation headers on. Else, no headers will be included at all.\r\n */\r\n canIncludeCorrelationHeader(config: ICorrelationConfig, requestUrl: string, currentHost?: string): boolean;\r\n\r\n /**\r\n * Combines target appId and target role name from response header.\r\n */\r\n getCorrelationContext(responseHeader: string): string | undefined;\r\n\r\n /**\r\n * Gets key from correlation response header\r\n */\r\n getCorrelationContextValue(responseHeader: string, key: string): string | undefined;\r\n}\r\n\r\nexport const CorrelationIdHelper: ICorrelationIdHelper = {\r\n correlationIdPrefix: \"cid-v1:\",\r\n\r\n /**\r\n * Checks if a request url is not on a excluded domain list and if it is safe to add correlation headers.\r\n * Headers are always included if the current domain matches the request domain. If they do not match (CORS),\r\n * they are regex-ed across correlationHeaderDomains and correlationHeaderExcludedDomains to determine if headers are included.\r\n * Some environments don't give information on currentHost via window.location.host (e.g. Cordova). In these cases, the user must\r\n * manually supply domains to include correlation headers on. Else, no headers will be included at all.\r\n */\r\n canIncludeCorrelationHeader: function(config: ICorrelationConfig, requestUrl: string, currentHost?: string) {\r\n if (!requestUrl || (config && config.disableCorrelationHeaders)) {\r\n return false;\r\n }\r\n\r\n if (config && config.correlationHeaderExcludePatterns) {\r\n for (let i = 0; i < config.correlationHeaderExcludePatterns.length; i++) {\r\n if (config.correlationHeaderExcludePatterns[i].test(requestUrl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n let requestHost = urlParseUrl(requestUrl).host.toLowerCase();\r\n if (requestHost && (requestHost.indexOf(\":443\") !== -1 || requestHost.indexOf(\":80\") !== -1)) {\r\n // [Bug #1260] IE can include the port even for http and https URLs so if present \r\n // try and parse it to remove if it matches the default protocol port\r\n requestHost = (urlParseFullHost(requestUrl, true) || \"\").toLowerCase();\r\n }\r\n\r\n if ((!config || !config.enableCorsCorrelation) && requestHost !== currentHost) {\r\n return false;\r\n }\r\n\r\n const includedDomains = config && config.correlationHeaderDomains;\r\n if (includedDomains) {\r\n let matchExists: boolean;\r\n arrForEach(includedDomains, (domain) => {\r\n const regex = new RegExp(domain.toLowerCase().replace(/\\./g, \"\\.\").replace(/\\*/g, \".*\"));\r\n matchExists = matchExists || regex.test(requestHost);\r\n });\r\n\r\n if (!matchExists) {\r\n return false;\r\n }\r\n }\r\n\r\n const excludedDomains = config && config.correlationHeaderExcludedDomains;\r\n if (!excludedDomains || excludedDomains.length === 0) {\r\n return true;\r\n }\r\n\r\n for (let i = 0; i < excludedDomains.length; i++) {\r\n const regex = new RegExp(excludedDomains[i].toLowerCase().replace(/\\./g, \"\\.\").replace(/\\*/g, \".*\"));\r\n if (regex.test(requestHost)) {\r\n return false;\r\n }\r\n }\r\n\r\n // if we don't know anything about the requestHost, require the user to use included/excludedDomains.\r\n // Previously we always returned false for a falsy requestHost\r\n return requestHost && requestHost.length > 0;\r\n },\r\n\r\n /**\r\n * Combines target appId and target role name from response header.\r\n */\r\n getCorrelationContext: function(responseHeader: string) {\r\n if (responseHeader) {\r\n const correlationId = CorrelationIdHelper.getCorrelationContextValue(responseHeader, RequestHeaders.requestContextTargetKey);\r\n if (correlationId && correlationId !== CorrelationIdHelper.correlationIdPrefix) {\r\n return correlationId;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Gets key from correlation response header\r\n */\r\n getCorrelationContextValue: function(responseHeader: string, key: string) {\r\n if (responseHeader) {\r\n const keyValues = responseHeader.split(\",\");\r\n for (let i = 0; i < keyValues.length; ++i) {\r\n const keyValue = keyValues[i].split(\"=\");\r\n if (keyValue.length === 2 && keyValue[0] === key) {\r\n return keyValue[1];\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport function AjaxHelperParseDependencyPath(logger: IDiagnosticLogger, absoluteUrl: string, method: string, commandName: string) {\r\n let target, name = commandName, data = commandName;\r\n\r\n if (absoluteUrl && absoluteUrl.length > 0) {\r\n const parsedUrl: HTMLAnchorElement = urlParseUrl(absoluteUrl)\r\n target = parsedUrl.host;\r\n if (!name) {\r\n if (parsedUrl.pathname != null) {\r\n let pathName: string = (parsedUrl.pathname.length === 0) ? \"/\" : parsedUrl.pathname;\r\n if (pathName.charAt(0) !== '/') {\r\n pathName = \"/\" + pathName;\r\n }\r\n data = parsedUrl.pathname;\r\n name = DataSanitizer.sanitizeString(logger, method ? method + \" \" + pathName : pathName);\r\n } else {\r\n name = DataSanitizer.sanitizeString(logger, absoluteUrl);\r\n }\r\n }\r\n } else {\r\n target = commandName;\r\n name = commandName;\r\n }\r\n\r\n return {\r\n target,\r\n name,\r\n data\r\n };\r\n}\r\n\r\nexport function dateTimeUtilsNow() {\r\n // returns the window or webworker performance object\r\n let perf = getPerformance();\r\n if (perf && perf.now && perf.timing) {\r\n let now = perf.now() + perf.timing.navigationStart;\r\n // Known issue with IE where this calculation can be negative, so if it is then ignore and fallback\r\n if (now > 0) {\r\n return now;\r\n }\r\n }\r\n\r\n return dateNow();\r\n}\r\n\r\nexport function dateTimeUtilsDuration(start: number, end: number): number {\r\n let result = null;\r\n if (start !== 0 && end !== 0 && !isNullOrUndefined(start) && !isNullOrUndefined(end)) {\r\n result = end - start;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport interface IDateTimeUtils {\r\n /**\r\n * Get the number of milliseconds since 1970/01/01 in local timezone\r\n */\r\n Now: () => number;\r\n\r\n /**\r\n * Gets duration between two timestamps\r\n */\r\n GetDuration: (start: number, end: number) => number;\r\n}\r\n\r\n/**\r\n * A utility class that helps getting time related parameters\r\n */\r\nexport const DateTimeUtils: IDateTimeUtils = {\r\n Now: dateTimeUtilsNow,\r\n GetDuration: dateTimeUtilsDuration\r\n};\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { DataSanitizer } from './Common/DataSanitizer';\r\nimport { FieldType } from '../Enums';\r\nimport { ISerializable } from '../Interfaces/Telemetry/ISerializable';\r\nimport { AjaxHelperParseDependencyPath} from '../Util';\r\nimport { RemoteDependencyData as GeneratedRemoteDependencyData } from '../Interfaces/Contracts/Generated/RemoteDependencyData';\r\nimport { IDiagnosticLogger } from '@microsoft/applicationinsights-core-js';\r\nimport { msToTimeSpan } from '../HelperFuncs';\r\n\r\nexport class RemoteDependencyData extends GeneratedRemoteDependencyData implements ISerializable {\r\n\r\n public static envelopeType = \"Microsoft.ApplicationInsights.{0}.RemoteDependency\";\r\n public static dataType = \"RemoteDependencyData\";\r\n\r\n public aiDataContract = {\r\n id: FieldType.Required,\r\n ver: FieldType.Required,\r\n name: FieldType.Default,\r\n resultCode: FieldType.Default,\r\n duration: FieldType.Default,\r\n success: FieldType.Default,\r\n data: FieldType.Default,\r\n target: FieldType.Default,\r\n type: FieldType.Default,\r\n properties: FieldType.Default,\r\n measurements: FieldType.Default,\r\n\r\n kind: FieldType.Default,\r\n value: FieldType.Default,\r\n count: FieldType.Default,\r\n min: FieldType.Default,\r\n max: FieldType.Default,\r\n stdDev: FieldType.Default,\r\n dependencyKind: FieldType.Default,\r\n dependencySource: FieldType.Default,\r\n commandName: FieldType.Default,\r\n dependencyTypeName: FieldType.Default,\r\n }\r\n\r\n /**\r\n * Constructs a new instance of the RemoteDependencyData object\r\n */\r\n constructor(logger: IDiagnosticLogger, id: string, absoluteUrl: string, commandName: string, value: number, success: boolean, resultCode: number, method?: string, requestAPI: string = \"Ajax\", correlationContext?: string, properties?: Object, measurements?: Object) {\r\n super();\r\n\r\n this.id = id;\r\n\r\n this.duration = msToTimeSpan(value);\r\n this.success = success;\r\n this.resultCode = resultCode + \"\";\r\n\r\n this.type = DataSanitizer.sanitizeString(logger, requestAPI);\r\n\r\n const dependencyFields = AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName);\r\n this.data = DataSanitizer.sanitizeUrl(logger, commandName) || dependencyFields.data; // get a value from hosturl if commandName not available\r\n this.target = DataSanitizer.sanitizeString(logger, dependencyFields.target);\r\n if (correlationContext) {\r\n this.target = `${this.target} | ${correlationContext}`;\r\n }\r\n this.name = DataSanitizer.sanitizeString(logger, dependencyFields.name);\r\n\r\n this.properties = DataSanitizer.sanitizeProperties(logger, properties);\r\n this.measurements = DataSanitizer.sanitizeMeasurements(logger, measurements);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { Domain } from './Domain';\r\n\r\n/**\r\n * An instance of Remote Dependency represents an interaction of the monitored component with a remote component/service like SQL or an HTTP endpoint.\r\n */\r\nexport class RemoteDependencyData implements Domain {\r\n\r\n /**\r\n * Schema version\r\n */\r\n public ver: number = 2;\r\n\r\n /**\r\n * Name of the command initiated with this dependency call. Low cardinality value. Examples are stored procedure name and URL path template.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Identifier of a dependency call instance. Used for correlation with the request telemetry item corresponding to this dependency call.\r\n */\r\n public id: string;\r\n\r\n /**\r\n * Result code of a dependency call. Examples are SQL error code and HTTP status code.\r\n */\r\n public resultCode: string;\r\n\r\n /**\r\n * Request duration in format: DD.HH:MM:SS.MMMMMM. Must be less than 1000 days.\r\n */\r\n public duration: string;\r\n\r\n /**\r\n * Indication of successful or unsuccessful call.\r\n */\r\n public success: boolean = true;\r\n\r\n /**\r\n * Command initiated by this dependency call. Examples are SQL statement and HTTP URL's with all query parameters.\r\n */\r\n public data: string;\r\n\r\n /**\r\n * Target site of a dependency call. Examples are server name, host address.\r\n */\r\n public target: string;\r\n\r\n /**\r\n * Dependency type name. Very low cardinality value for logical grouping of dependencies and interpretation of other fields like commandName and resultCode. Examples are SQL, Azure table, and HTTP.\r\n */\r\n public type: string;\r\n\r\n /**\r\n * Collection of custom properties.\r\n */\r\n public properties: any = {};\r\n\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n public measurements: any = {};\r\n\r\n constructor() {\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { dateTimeUtilsDuration } from '@microsoft/applicationinsights-common';\r\nimport { LoggingSeverity, _InternalMessageId, getDocument, getLocation, arrForEach, isNullOrUndefined, getExceptionName, dumpObj } from '@microsoft/applicationinsights-core-js';\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\n/**\r\n * Class encapsulates sending page views and page view performance telemetry.\r\n */\r\nvar PageViewManager = /** @class */ (function () {\r\n function PageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {\r\n dynamicProto(PageViewManager, this, function (_self) {\r\n var intervalHandle = null;\r\n var itemQueue = [];\r\n var pageViewPerformanceSent = false;\r\n var _logger;\r\n if (core) {\r\n _logger = core.logger;\r\n }\r\n function _flushChannels() {\r\n if (core) {\r\n arrForEach(core.getTransmissionControls(), function (queues) {\r\n arrForEach(queues, function (q) { return q.flush(true); });\r\n });\r\n }\r\n }\r\n function _addQueue(cb) {\r\n itemQueue.push(cb);\r\n if (!intervalHandle) {\r\n intervalHandle = setInterval((function () {\r\n var allItems = itemQueue.slice(0);\r\n var doFlush = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (!item()) {\r\n // Not processed so rescheduled\r\n itemQueue.push(item);\r\n }\r\n else {\r\n doFlush = true;\r\n }\r\n });\r\n if (itemQueue.length === 0) {\r\n clearInterval(intervalHandle);\r\n intervalHandle = null;\r\n }\r\n if (doFlush) {\r\n // We process at least one item so flush the queue\r\n _flushChannels();\r\n }\r\n }), 100);\r\n }\r\n }\r\n _self.trackPageView = function (pageView, customProperties) {\r\n var name = pageView.name;\r\n if (isNullOrUndefined(name) || typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = pageView.name = doc && doc.title || \"\";\r\n }\r\n var uri = pageView.uri;\r\n if (isNullOrUndefined(uri) || typeof uri !== \"string\") {\r\n var location_1 = getLocation();\r\n uri = pageView.uri = location_1 && location_1.href || \"\";\r\n }\r\n // case 1a. if performance timing is not supported by the browser, send the page view telemetry with the duration provided by the user. If the user\r\n // do not provide the duration, set duration to undefined\r\n // Also this is case 4\r\n if (!pageViewPerformanceManager.isPerformanceTimingSupported()) {\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n _flushChannels();\r\n // no navigation timing (IE 8, iOS Safari 8.4, Opera Mini 8 - see http://caniuse.com/#feat=nav-timing)\r\n _logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.NavigationTimingNotSupported, \"trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.\");\r\n return;\r\n }\r\n var pageViewSent = false;\r\n var customDuration;\r\n // if the performance timing is supported by the browser, calculate the custom duration\r\n var start = pageViewPerformanceManager.getPerformanceTiming().navigationStart;\r\n if (start > 0) {\r\n customDuration = dateTimeUtilsDuration(start, +new Date);\r\n if (!pageViewPerformanceManager.shouldCollectDuration(customDuration)) {\r\n customDuration = undefined;\r\n }\r\n }\r\n // if the user has provided duration, send a page view telemetry with the provided duration. Otherwise, if\r\n // overridePageViewDuration is set to true, send a page view telemetry with the custom duration calculated earlier\r\n var duration;\r\n if (!isNullOrUndefined(customProperties) &&\r\n !isNullOrUndefined(customProperties.duration)) {\r\n duration = customProperties.duration;\r\n }\r\n if (overridePageViewDuration || !isNaN(duration)) {\r\n if (isNaN(duration)) {\r\n // case 3\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n customProperties[\"duration\"] = customDuration;\r\n }\r\n // case 2\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n _flushChannels();\r\n pageViewSent = true;\r\n }\r\n // now try to send the page view performance telemetry\r\n var maxDurationLimit = 60000;\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n // Queue the event for processing\r\n _addQueue(function () {\r\n var processed = false;\r\n try {\r\n if (pageViewPerformanceManager.isPerformanceTimingDataReady()) {\r\n processed = true;\r\n var pageViewPerformance = {\r\n name: name,\r\n uri: uri\r\n };\r\n pageViewPerformanceManager.populatePageViewPerformanceEvent(pageViewPerformance);\r\n if (!pageViewPerformance.isValid && !pageViewSent) {\r\n // If navigation timing gives invalid numbers, then go back to \"override page view duration\" mode.\r\n // That's the best value we can get that makes sense.\r\n customProperties[\"duration\"] = customDuration;\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n }\r\n else {\r\n if (!pageViewSent) {\r\n customProperties[\"duration\"] = pageViewPerformance.durationMs;\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n }\r\n if (!pageViewPerformanceSent) {\r\n appInsights.sendPageViewPerformanceInternal(pageViewPerformance, customProperties);\r\n pageViewPerformanceSent = true;\r\n }\r\n }\r\n }\r\n else if (start > 0 && dateTimeUtilsDuration(start, +new Date) > maxDurationLimit) {\r\n // if performance timings are not ready but we exceeded the maximum duration limit, just log a page view telemetry\r\n // with the maximum duration limit. Otherwise, keep waiting until performance timings are ready\r\n processed = true;\r\n if (!pageViewSent) {\r\n customProperties[\"duration\"] = maxDurationLimit;\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailedCalc, \"trackPageView failed on page load calculation: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return processed;\r\n });\r\n };\r\n });\r\n }\r\n /**\r\n * Currently supported cases:\r\n * 1) (default case) track page view called with default parameters, overridePageViewDuration = false. Page view is sent with page view performance when navigation timing data is available.\r\n * a. If navigation timing is not supported then page view is sent right away with undefined duration. Page view performance is not sent.\r\n * 2) overridePageViewDuration = true, custom duration provided. Custom duration is used, page view sends right away.\r\n * 3) overridePageViewDuration = true, custom duration NOT provided. Page view is sent right away, duration is time spent from page load till now (or undefined if navigation timing is not supported).\r\n * 4) overridePageViewDuration = false, custom duration is provided. Page view is sent right away with custom duration.\r\n *\r\n * In all cases page view performance is sent once (only for the 1st call of trackPageView), or not sent if navigation timing is not supported.\r\n */\r\n PageViewManager.prototype.trackPageView = function (pageView, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return PageViewManager;\r\n}());\r\nexport { PageViewManager };\r\n//# sourceMappingURL=PageViewManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { utlCanUseSessionStorage, utlGetSessionStorage, utlRemoveSessionStorage, utlSetSessionStorage } from '@microsoft/applicationinsights-common';\r\nimport { hasJSON, getJSON, dateNow, dumpObj, throwError } from '@microsoft/applicationinsights-core-js';\r\n/**\r\n * Used to track page visit durations\r\n */\r\nvar PageVisitTimeManager = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of PageVisitTimeManager\r\n * @param pageVisitTimeTrackingHandler Delegate that will be called to send telemetry data to AI (when trackPreviousPageVisit is called)\r\n * @returns {}\r\n */\r\n function PageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {\r\n this.prevPageVisitDataKeyName = \"prevPageVisitData\";\r\n this.pageVisitTimeTrackingHandler = pageVisitTimeTrackingHandler;\r\n this._logger = logger;\r\n }\r\n /**\r\n * Tracks the previous page visit time telemetry (if exists) and starts timing of new page visit time\r\n * @param currentPageName Name of page to begin timing for visit duration\r\n * @param currentPageUrl Url of page to begin timing for visit duration\r\n */\r\n PageVisitTimeManager.prototype.trackPreviousPageVisit = function (currentPageName, currentPageUrl) {\r\n try {\r\n // Restart timer for new page view\r\n var prevPageVisitTimeData = this.restartPageVisitTimer(currentPageName, currentPageUrl);\r\n // If there was a page already being timed, track the visit time for it now.\r\n if (prevPageVisitTimeData) {\r\n this.pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData.pageVisitTime);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.warnToConsole(\"Auto track page visit time failed, metric will not be collected: \" + dumpObj(e));\r\n }\r\n };\r\n /**\r\n * Stops timing of current page (if exists) and starts timing for duration of visit to pageName\r\n * @param pageName Name of page to begin timing visit duration\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from last call to start or restart, if exists. Null if not.\r\n */\r\n PageVisitTimeManager.prototype.restartPageVisitTimer = function (pageName, pageUrl) {\r\n try {\r\n var prevPageVisitData = this.stopPageVisitTimer();\r\n this.startPageVisitTimer(pageName, pageUrl);\r\n return prevPageVisitData;\r\n }\r\n catch (e) {\r\n this._logger.warnToConsole(\"Call to restart failed: \" + dumpObj(e));\r\n return null;\r\n }\r\n };\r\n /**\r\n * Starts timing visit duration of pageName\r\n * @param pageName\r\n * @returns {}\r\n */\r\n PageVisitTimeManager.prototype.startPageVisitTimer = function (pageName, pageUrl) {\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n if (utlGetSessionStorage(this._logger, this.prevPageVisitDataKeyName) != null) {\r\n throwError(\"Cannot call startPageVisit consecutively without first calling stopPageVisit\");\r\n }\r\n var currPageVisitData = new PageVisitData(pageName, pageUrl);\r\n var currPageVisitDataStr = getJSON().stringify(currPageVisitData);\r\n utlSetSessionStorage(this._logger, this.prevPageVisitDataKeyName, currPageVisitDataStr);\r\n }\r\n }\r\n catch (e) {\r\n // TODO: Remove this catch in next phase, since if start is called twice in a row the exception needs to be propagated out\r\n this._logger.warnToConsole(\"Call to start failed: \" + dumpObj(e));\r\n }\r\n };\r\n /**\r\n * Stops timing of current page, if exists.\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from call to start, if exists. Null if not.\r\n */\r\n PageVisitTimeManager.prototype.stopPageVisitTimer = function () {\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n // Define end time of page's visit\r\n var pageVisitEndTime = dateNow();\r\n // Try to retrieve page name and start time from session storage\r\n var pageVisitDataJsonStr = utlGetSessionStorage(this._logger, this.prevPageVisitDataKeyName);\r\n if (pageVisitDataJsonStr && hasJSON()) {\r\n // if previous page data exists, set end time of visit\r\n var prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);\r\n prevPageVisitData.pageVisitTime = pageVisitEndTime - prevPageVisitData.pageVisitStartTime;\r\n // Remove data from storage since we already used it\r\n utlRemoveSessionStorage(this._logger, this.prevPageVisitDataKeyName);\r\n // Return page visit data\r\n return prevPageVisitData;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n return null;\r\n }\r\n catch (e) {\r\n this._logger.warnToConsole(\"Stop page visit timer failed: \" + dumpObj(e));\r\n return null;\r\n }\r\n };\r\n return PageVisitTimeManager;\r\n}());\r\nexport { PageVisitTimeManager };\r\nvar PageVisitData = /** @class */ (function () {\r\n function PageVisitData(pageName, pageUrl) {\r\n this.pageVisitStartTime = dateNow();\r\n this.pageName = pageName;\r\n this.pageUrl = pageUrl;\r\n }\r\n return PageVisitData;\r\n}());\r\nexport { PageVisitData };\r\n//# sourceMappingURL=PageVisitTimeManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { dateTimeUtilsDuration, msToTimeSpan } from '@microsoft/applicationinsights-common';\r\nimport { LoggingSeverity, _InternalMessageId, getNavigator, getPerformance } from '@microsoft/applicationinsights-core-js';\r\n/**\r\n * Class encapsulates sending page view performance telemetry.\r\n */\r\nvar PageViewPerformanceManager = /** @class */ (function () {\r\n function PageViewPerformanceManager(core) {\r\n this.MAX_DURATION_ALLOWED = 3600000; // 1h\r\n if (core) {\r\n this._logger = core.logger;\r\n }\r\n }\r\n PageViewPerformanceManager.prototype.populatePageViewPerformanceEvent = function (pageViewPerformance) {\r\n pageViewPerformance.isValid = false;\r\n /*\r\n * http://www.w3.org/TR/navigation-timing/#processing-model\r\n * |-navigationStart\r\n * | |-connectEnd\r\n * | ||-requestStart\r\n * | || |-responseStart\r\n * | || | |-responseEnd\r\n * | || | |\r\n * | || | | |-loadEventEnd\r\n * |---network---||---request---|---response---|---dom---|\r\n * |--------------------------total----------------------|\r\n */\r\n var navigationTiming = this.getPerformanceNavigationTiming();\r\n var timing = this.getPerformanceTiming();\r\n if (navigationTiming || timing) {\r\n if (navigationTiming) {\r\n var total = navigationTiming.duration;\r\n var network = dateTimeUtilsDuration(navigationTiming.startTime, navigationTiming.connectEnd);\r\n var request = dateTimeUtilsDuration(navigationTiming.requestStart, navigationTiming.responseStart);\r\n var response = dateTimeUtilsDuration(navigationTiming.responseStart, navigationTiming.responseEnd);\r\n var dom = dateTimeUtilsDuration(navigationTiming.responseEnd, navigationTiming.loadEventEnd);\r\n }\r\n else {\r\n var total = dateTimeUtilsDuration(timing.navigationStart, timing.loadEventEnd);\r\n var network = dateTimeUtilsDuration(timing.navigationStart, timing.connectEnd);\r\n var request = dateTimeUtilsDuration(timing.requestStart, timing.responseStart);\r\n var response = dateTimeUtilsDuration(timing.responseStart, timing.responseEnd);\r\n var dom = dateTimeUtilsDuration(timing.responseEnd, timing.loadEventEnd);\r\n }\r\n if (total === 0) {\r\n this._logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.ErrorPVCalc, \"error calculating page view performance.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (!this.shouldCollectDuration(total, network, request, response, dom)) {\r\n this._logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.InvalidDurationValue, \"Invalid page load duration value. Browser perf data won't be sent.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (total < Math.floor(network) + Math.floor(request) + Math.floor(response) + Math.floor(dom)) {\r\n // some browsers may report individual components incorrectly so that the sum of the parts will be bigger than total PLT\r\n // in this case, don't report client performance from this page\r\n this._logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.ClientPerformanceMathError, \"client performance math error.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else {\r\n pageViewPerformance.durationMs = total;\r\n // // convert to timespans\r\n pageViewPerformance.perfTotal = pageViewPerformance.duration = msToTimeSpan(total);\r\n pageViewPerformance.networkConnect = msToTimeSpan(network);\r\n pageViewPerformance.sentRequest = msToTimeSpan(request);\r\n pageViewPerformance.receivedResponse = msToTimeSpan(response);\r\n pageViewPerformance.domProcessing = msToTimeSpan(dom);\r\n pageViewPerformance.isValid = true;\r\n }\r\n }\r\n };\r\n PageViewPerformanceManager.prototype.getPerformanceTiming = function () {\r\n if (this.isPerformanceTimingSupported()) {\r\n return getPerformance().timing;\r\n }\r\n return null;\r\n };\r\n PageViewPerformanceManager.prototype.getPerformanceNavigationTiming = function () {\r\n if (this.isPerformanceNavigationTimingSupported()) {\r\n return getPerformance().getEntriesByType(\"navigation\")[0];\r\n }\r\n return null;\r\n };\r\n /**\r\n * Returns true is window PerformanceNavigationTiming API is supported, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceNavigationTimingSupported = function () {\r\n var perf = getPerformance();\r\n return perf && perf.getEntriesByType && perf.getEntriesByType(\"navigation\").length > 0;\r\n };\r\n /**\r\n * Returns true is window performance timing API is supported, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceTimingSupported = function () {\r\n var perf = getPerformance();\r\n return perf && perf.timing;\r\n };\r\n /**\r\n * As page loads different parts of performance timing numbers get set. When all of them are set we can report it.\r\n * Returns true if ready, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceTimingDataReady = function () {\r\n var perf = getPerformance();\r\n var timing = perf ? perf.timing : 0;\r\n return timing\r\n && timing.domainLookupStart > 0\r\n && timing.navigationStart > 0\r\n && timing.responseStart > 0\r\n && timing.requestStart > 0\r\n && timing.loadEventEnd > 0\r\n && timing.responseEnd > 0\r\n && timing.connectEnd > 0\r\n && timing.domLoading > 0;\r\n };\r\n /**\r\n * This method tells if given durations should be excluded from collection.\r\n */\r\n PageViewPerformanceManager.prototype.shouldCollectDuration = function () {\r\n var durations = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n durations[_i] = arguments[_i];\r\n }\r\n var _navigator = getNavigator() || {};\r\n // a full list of Google crawlers user agent strings - https://support.google.com/webmasters/answer/1061943?hl=en\r\n var botAgentNames = ['googlebot', 'adsbot-google', 'apis-google', 'mediapartners-google'];\r\n var userAgent = _navigator.userAgent;\r\n var isGoogleBot = false;\r\n if (userAgent) {\r\n for (var i = 0; i < botAgentNames.length; i++) {\r\n isGoogleBot = isGoogleBot || userAgent.toLowerCase().indexOf(botAgentNames[i]) !== -1;\r\n }\r\n }\r\n if (isGoogleBot) {\r\n // Don't report durations for GoogleBot, it is returning invalid values in performance.timing API.\r\n return false;\r\n }\r\n else {\r\n // for other page views, don't report if it's outside of a reasonable range\r\n for (var i = 0; i < durations.length; i++) {\r\n if (durations[i] < 0 || durations[i] >= this.MAX_DURATION_ALLOWED) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n return PageViewPerformanceManager;\r\n}());\r\nexport { PageViewPerformanceManager };\r\n//# sourceMappingURL=PageViewPerformanceManager.js.map","/**\r\n * ApplicationInsights.ts\r\n * @copyright Microsoft 2018\r\n */\r\nimport { PageViewPerformance, PageView, RemoteDependencyData, Event as EventTelemetry, TelemetryItemCreator, Metric, Exception, SeverityLevel, Trace, dateTimeUtilsDuration, PropertiesPluginIdentifier, AnalyticsPluginIdentifier, stringToBoolOrDefault, createDomEvent, strNotSpecified, isCrossOriginError, utlDisableStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, LoggingSeverity, _InternalMessageId, getWindow, getDocument, getHistory, getLocation, doPerf, objForEachKey, isString, isFunction, isNullOrUndefined, arrForEach, generateW3CId, dumpObj, getExceptionName, isError, safeGetCookieMgr } from \"@microsoft/applicationinsights-core-js\";\r\nimport { PageViewManager } from \"./Telemetry/PageViewManager\";\r\nimport { PageVisitTimeManager } from \"./Telemetry/PageVisitTimeManager\";\r\nimport { PageViewPerformanceManager } from './Telemetry/PageViewPerformanceManager';\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\n\"use strict\";\r\nvar durationProperty = \"duration\";\r\nfunction _dispatchEvent(target, evnt) {\r\n if (target && target.dispatchEvent && evnt) {\r\n target.dispatchEvent(evnt);\r\n }\r\n}\r\nfunction _formatMessage(message) {\r\n if (message && !isString(message)) {\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n if (isFunction(message.toString)) {\r\n message = message.toString();\r\n }\r\n else {\r\n message = JSON.stringify(message);\r\n }\r\n }\r\n return message;\r\n}\r\nvar ApplicationInsights = /** @class */ (function (_super) {\r\n __extends(ApplicationInsights, _super);\r\n function ApplicationInsights() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AnalyticsPluginIdentifier; // do not change name or priority\r\n _this.priority = 180; // take from reserved priority range 100- 200\r\n _this.autoRoutePVDelay = 500; // ms; Time to wait after a route change before triggering a pageview to allow DOM changes to take place\r\n var _eventTracking;\r\n var _pageTracking;\r\n var _properties;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n var _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var _prevUri; // Assigned in the constructor\r\n var _currUri;\r\n dynamicProto(ApplicationInsights, _this, function (_self, _base) {\r\n var location = getLocation(true);\r\n _prevUri = location && location.href || \"\";\r\n _self.getCookieMgr = function () {\r\n return safeGetCookieMgr(_self.core);\r\n };\r\n _self.processTelemetry = function (env, itemCtx) {\r\n doPerf(_self.core, function () { return _self.identifier + \":processTelemetry\"; }, function () {\r\n var doNotSendItem = false;\r\n var telemetryInitializersCount = _self._telemetryInitializers.length;\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n for (var i = 0; i < telemetryInitializersCount; ++i) {\r\n var telemetryInitializer = _self._telemetryInitializers[i];\r\n if (telemetryInitializer) {\r\n try {\r\n if (telemetryInitializer.apply(null, [env]) === false) {\r\n doNotSendItem = true;\r\n break;\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n }\r\n }\r\n if (!doNotSendItem) {\r\n _self.processNext(env, itemCtx);\r\n }\r\n }, function () { return ({ item: env }); }, !(env.sync));\r\n };\r\n _self.trackEvent = function (event, customProperties) {\r\n try {\r\n var telemetryItem = TelemetryItemCreator.create(event, EventTelemetry.dataType, EventTelemetry.envelopeType, _self.diagLog(), customProperties);\r\n _self.core.track(telemetryItem);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TrackTraceFailed, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n * @param name A string that identifies this event uniquely within the document.\r\n */\r\n _self.startTrackEvent = function (name) {\r\n try {\r\n _eventTracking.start(name);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StartTrackEventFailed, \"startTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackEvent = function (name, properties, measurements) {\r\n try {\r\n _eventTracking.stop(name, undefined, properties); // Todo: Fix to pass measurements once type is updated\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StopTrackEventFailed, \"stopTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a diagnostic message\r\n * @param {ITraceTelemetry} trace\r\n * @param ICustomProperties.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackTrace = function (trace, customProperties) {\r\n try {\r\n var telemetryItem = TelemetryItemCreator.create(trace, Trace.dataType, Trace.envelopeType, _self.diagLog(), customProperties);\r\n _self.core.track(telemetryItem);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TrackTraceFailed, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a numeric value that is not associated with a specific event. Typically\r\n * used to send regular reports of performance indicators. To send single measurement, just\r\n * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n * and sending the resulting average at intervals\r\n * @param {IMetricTelemetry} metric input object argument. Only name and average are mandatory.\r\n * @param {{[key: string]: any}} customProperties additional data used to filter metrics in the\r\n * portal. Defaults to empty.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackMetric = function (metric, customProperties) {\r\n try {\r\n var telemetryItem = TelemetryItemCreator.create(metric, Metric.dataType, Metric.envelopeType, _self.diagLog(), customProperties);\r\n _self.core.track(telemetryItem);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackMetricFailed, \"trackMetric failed, metric will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Logs that a page or other item was viewed.\r\n * @param IPageViewTelemetry The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param customProperties Additional data used to filter events and metrics. Defaults to empty.\r\n * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n */\r\n _self.trackPageView = function (pageView, customProperties) {\r\n try {\r\n var inPv = pageView || {};\r\n _self._pageViewManager.trackPageView(inPv, __assign({}, inPv.properties, inPv.measurements, customProperties));\r\n if (_self.config.autoTrackPageVisitTime) {\r\n _self._pageVisitTimeManager.trackPreviousPageVisit(inPv.name, inPv.uri);\r\n }\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailed, \"trackPageView failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n * @param pageView Page view item to be sent\r\n * @param properties Custom properties (Part C) that a user can add to the telemetry item\r\n * @param systemProperties System level properties (Part A) that a user can add to the telemetry item\r\n */\r\n _self.sendPageViewInternal = function (pageView, properties, systemProperties) {\r\n var doc = getDocument();\r\n if (doc) {\r\n pageView.refUri = pageView.refUri === undefined ? doc.referrer : pageView.refUri;\r\n }\r\n var telemetryItem = TelemetryItemCreator.create(pageView, PageView.dataType, PageView.envelopeType, _self.diagLog(), properties, systemProperties);\r\n _self.core.track(telemetryItem);\r\n // reset ajaxes counter\r\n _trackAjaxAttempts = 0;\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param pageViewPerformance\r\n * @param properties\r\n */\r\n _self.sendPageViewPerformanceInternal = function (pageViewPerformance, properties, systemProperties) {\r\n var telemetryItem = TelemetryItemCreator.create(pageViewPerformance, PageViewPerformance.dataType, PageViewPerformance.envelopeType, _self.diagLog(), properties, systemProperties);\r\n _self.core.track(telemetryItem);\r\n };\r\n /**\r\n * Send browser performance metrics.\r\n * @param pageViewPerformance\r\n * @param customProperties\r\n */\r\n _self.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n try {\r\n _self._pageViewPerformanceManager.populatePageViewPerformanceEvent(pageViewPerformance);\r\n _self.sendPageViewPerformanceInternal(pageViewPerformance, customProperties);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailed, \"trackPageViewPerformance failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n _self.startTrackPage = function (name) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n _pageTracking.start(name);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StartTrackFailed, \"startTrackPage failed, page view may not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackPage = function (name, url, properties, measurement) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n if (typeof url !== \"string\") {\r\n var loc = getLocation();\r\n url = loc && loc.href || \"\";\r\n }\r\n _pageTracking.stop(name, url, properties, measurement);\r\n if (_self.config.autoTrackPageVisitTime) {\r\n _self._pageVisitTimeManager.trackPreviousPageVisit(name, url);\r\n }\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StopTrackFailed, \"stopTrackPage failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param exception\r\n * @param properties\r\n * @param systemProperties\r\n */\r\n _self.sendExceptionInternal = function (exception, customProperties, systemProperties) {\r\n var exceptionPartB = new Exception(_self.diagLog(), exception.exception || new Error(strNotSpecified), exception.properties, exception.measurements, exception.severityLevel, exception.id).toInterface();\r\n var telemetryItem = TelemetryItemCreator.create(exceptionPartB, Exception.dataType, Exception.envelopeType, _self.diagLog(), customProperties, systemProperties);\r\n _self.core.track(telemetryItem);\r\n };\r\n /**\r\n * Log an exception you have caught.\r\n *\r\n * @param {IExceptionTelemetry} exception Object which contains exception to be sent\r\n * @param {{[key: string]: any}} customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n *\r\n * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackException = function (exception, customProperties) {\r\n try {\r\n _self.sendExceptionInternal(exception, customProperties);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackExceptionFailed, \"trackException failed, exception will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Custom error handler for Application Insights Analytics\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof ApplicationInsights\r\n */\r\n _self._onerror = function (exception) {\r\n try {\r\n var properties_1 = {\r\n url: (exception && exception.url) || (getDocument() || {}).URL,\r\n lineNumber: exception.lineNumber,\r\n columnNumber: exception.columnNumber,\r\n message: exception.message\r\n };\r\n if (isCrossOriginError(exception.message, exception.url, exception.lineNumber, exception.columnNumber, exception.error)) {\r\n _sendCORSException(properties_1.url);\r\n }\r\n else {\r\n if (!isError(exception.error)) {\r\n var stack = \"window.onerror@\" + properties_1.url + \":\" + exception.lineNumber + \":\" + (exception.columnNumber || 0);\r\n exception.error = new Error(exception.message);\r\n exception.error.stack = stack;\r\n }\r\n _self.trackException({ exception: exception.error, severityLevel: SeverityLevel.Error }, properties_1);\r\n }\r\n }\r\n catch (e) {\r\n var errorString = exception.error ?\r\n (exception.error.name + \", \" + exception.error.message)\r\n : \"null\";\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.ExceptionWhileLoggingError, \"_onError threw exception while logging error, error will not be collected: \"\r\n + getExceptionName(e), { exception: dumpObj(e), errorString: errorString });\r\n }\r\n };\r\n _self.addTelemetryInitializer = function (telemetryInitializer) {\r\n _self._telemetryInitializers.push(telemetryInitializer);\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n return;\r\n }\r\n if (isNullOrUndefined(core)) {\r\n throw Error(\"Error initializing\");\r\n }\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _self.setInitialized(false); // resetting the initialized state, just in case the following fails\r\n var ctx = _self._getTelCtx();\r\n var identifier = _self.identifier;\r\n _self.config = ctx.getExtCfg(identifier);\r\n // load default values if specified\r\n var defaults = ApplicationInsights.getDefaultConfig();\r\n if (defaults !== undefined) {\r\n objForEachKey(defaults, function (field, value) {\r\n // for each unspecified field, set the default value\r\n _self.config[field] = ctx.getConfig(identifier, field, value);\r\n if (_self.config[field] === undefined) {\r\n _self.config[field] = value;\r\n }\r\n });\r\n }\r\n // Todo: move this out of static state\r\n if (_self.config.isStorageUseDisabled) {\r\n utlDisableStorage();\r\n }\r\n var configGetters = {\r\n instrumentationKey: function () { return config.instrumentationKey; },\r\n accountId: function () { return _self.config.accountId || config.accountId; },\r\n sessionRenewalMs: function () { return _self.config.sessionRenewalMs || config.sessionRenewalMs; },\r\n sessionExpirationMs: function () { return _self.config.sessionExpirationMs || config.sessionExpirationMs; },\r\n sampleRate: function () { return _self.config.samplingPercentage || config.samplingPercentage; },\r\n sdkExtension: function () { return _self.config.sdkExtension || config.sdkExtension; },\r\n isBrowserLinkTrackingEnabled: function () { return _self.config.isBrowserLinkTrackingEnabled || config.isBrowserLinkTrackingEnabled; },\r\n appId: function () { return _self.config.appId || config.appId; }\r\n };\r\n _self._pageViewPerformanceManager = new PageViewPerformanceManager(_self.core);\r\n _self._pageViewManager = new PageViewManager(_this, _self.config.overridePageViewDuration, _self.core, _self._pageViewPerformanceManager);\r\n _self._pageVisitTimeManager = new PageVisitTimeManager(_self.diagLog(), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });\r\n _self._telemetryInitializers = _self._telemetryInitializers || [];\r\n _addDefaultTelemetryInitializers(configGetters);\r\n _eventTracking = new Timing(_self.diagLog(), \"trackEvent\");\r\n _eventTracking.action =\r\n function (name, url, duration, properties) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n properties[durationProperty] = duration.toString();\r\n _self.trackEvent({ name: name, properties: properties });\r\n };\r\n // initialize page view timing\r\n _pageTracking = new Timing(_self.diagLog(), \"trackPageView\");\r\n _pageTracking.action = function (name, url, duration, properties, measurements) {\r\n // duration must be a custom property in order for the collector to extract it\r\n if (isNullOrUndefined(properties)) {\r\n properties = {};\r\n }\r\n properties[durationProperty] = duration.toString();\r\n var pageViewItem = {\r\n name: name,\r\n uri: url,\r\n properties: properties,\r\n measurements: measurements\r\n };\r\n _self.sendPageViewInternal(pageViewItem, properties);\r\n };\r\n var _window = getWindow();\r\n var _history = getHistory();\r\n var _location = getLocation(true);\r\n var instance = _this;\r\n if (_self.config.disableExceptionTracking === false &&\r\n !_self.config.autoExceptionInstrumented && _window) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n var onerror_1 = \"onerror\";\r\n var originalOnError_1 = _window[onerror_1];\r\n _window.onerror = function (message, url, lineNumber, columnNumber, error) {\r\n var handled = originalOnError_1 && originalOnError_1(message, url, lineNumber, columnNumber, error);\r\n if (handled !== true) {\r\n instance._onerror({\r\n message: _formatMessage(message),\r\n url: url,\r\n lineNumber: lineNumber,\r\n columnNumber: columnNumber,\r\n error: error\r\n });\r\n }\r\n return handled;\r\n };\r\n _self.config.autoExceptionInstrumented = true;\r\n }\r\n if (_self.config.disableExceptionTracking === false &&\r\n _self.config.enableUnhandledPromiseRejectionTracking === true &&\r\n !_self.config.autoUnhandledPromiseInstrumented && _window) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n var onunhandledrejection = \"onunhandledrejection\";\r\n var originalOnUnhandledRejection_1 = _window[onunhandledrejection];\r\n _window[onunhandledrejection] = function (error) {\r\n var handled = originalOnUnhandledRejection_1 && originalOnUnhandledRejection_1.call(_window, error);\r\n if (handled !== true) {\r\n instance._onerror({\r\n message: error.reason.toString(),\r\n error: error.reason instanceof Error ? error.reason : new Error(error.reason.toString()),\r\n url: _location ? _location.href : \"\",\r\n lineNumber: 0,\r\n columnNumber: 0\r\n });\r\n }\r\n return handled;\r\n };\r\n _self.config.autoUnhandledPromiseInstrumented = true;\r\n }\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n if (_self.config.enableAutoRouteTracking === true\r\n && _history && isFunction(_history.pushState) && isFunction(_history.replaceState)\r\n && _window\r\n && typeof Event !== \"undefined\") {\r\n var _self_1 = _this;\r\n // Find the properties plugin\r\n arrForEach(extensions, function (extension) {\r\n if (extension.identifier === PropertiesPluginIdentifier) {\r\n _properties = extension;\r\n }\r\n });\r\n _history.pushState = (function (f) { return function pushState() {\r\n var ret = f.apply(this, arguments);\r\n _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + \"pushState\"));\r\n _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + \"locationchange\"));\r\n return ret;\r\n }; })(_history.pushState);\r\n _history.replaceState = (function (f) { return function replaceState() {\r\n var ret = f.apply(this, arguments);\r\n _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + \"replaceState\"));\r\n _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + \"locationchange\"));\r\n return ret;\r\n }; })(_history.replaceState);\r\n if (_window.addEventListener) {\r\n _window.addEventListener(_self_1.config.namePrefix + \"popstate\", function () {\r\n _dispatchEvent(_window, createDomEvent(_self_1.config.namePrefix + \"locationchange\"));\r\n });\r\n _window.addEventListener(_self_1.config.namePrefix + \"locationchange\", function () {\r\n if (_properties && _properties.context && _properties.context.telemetryTrace) {\r\n _properties.context.telemetryTrace.traceID = generateW3CId();\r\n _properties.context.telemetryTrace.name = _location && _location.pathname || \"_unknown_\";\r\n }\r\n if (_currUri) {\r\n _prevUri = _currUri;\r\n _currUri = _location && _location.href || \"\";\r\n }\r\n else {\r\n _currUri = _location && _location.href || \"\";\r\n }\r\n setTimeout((function (uri) {\r\n // todo: override start time so that it is not affected by autoRoutePVDelay\r\n _self_1.trackPageView({ refUri: uri, properties: { duration: 0 } }); // SPA route change loading durations are undefined, so send 0\r\n }).bind(_this, _prevUri), _self_1.autoRoutePVDelay);\r\n });\r\n }\r\n }\r\n _self.setInitialized(true);\r\n };\r\n /**\r\n * Log a page visit time\r\n * @param pageName Name of page\r\n * @param pageVisitDuration Duration of visit to the page in milleseconds\r\n */\r\n function trackPageVisitTime(pageName, pageUrl, pageVisitTime) {\r\n var properties = { PageName: pageName, PageUrl: pageUrl };\r\n _self.trackMetric({\r\n name: \"PageVisitTime\",\r\n average: pageVisitTime,\r\n max: pageVisitTime,\r\n min: pageVisitTime,\r\n sampleCount: 1\r\n }, properties);\r\n }\r\n function _addDefaultTelemetryInitializers(configGetters) {\r\n if (!configGetters.isBrowserLinkTrackingEnabled()) {\r\n var browserLinkPaths_1 = ['/browserLinkSignalR/', '/__browserLink/'];\r\n var dropBrowserLinkRequests = function (envelope) {\r\n if (envelope.baseType === RemoteDependencyData.dataType) {\r\n var remoteData = envelope.baseData;\r\n if (remoteData) {\r\n for (var i = 0; i < browserLinkPaths_1.length; i++) {\r\n if (remoteData.target && remoteData.target.indexOf(browserLinkPaths_1[i]) >= 0) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n _addTelemetryInitializer(dropBrowserLinkRequests);\r\n }\r\n }\r\n function _addTelemetryInitializer(telemetryInitializer) {\r\n _self._telemetryInitializers.push(telemetryInitializer);\r\n }\r\n function _sendCORSException(url) {\r\n var exception = {\r\n message: \"Script error: The browser's same-origin policy prevents us from getting the details of this exception. Consider using the 'crossorigin' attribute.\",\r\n url: url,\r\n lineNumber: 0,\r\n columnNumber: 0,\r\n error: undefined\r\n };\r\n var telemetryItem = TelemetryItemCreator.create(exception, Exception.dataType, Exception.envelopeType, _self.diagLog(), { url: url });\r\n _self.core.track(telemetryItem);\r\n }\r\n });\r\n return _this;\r\n }\r\n ApplicationInsights.getDefaultConfig = function (config) {\r\n if (!config) {\r\n config = {};\r\n }\r\n // set default values\r\n config.sessionRenewalMs = 30 * 60 * 1000;\r\n config.sessionExpirationMs = 24 * 60 * 60 * 1000;\r\n config.disableExceptionTracking = stringToBoolOrDefault(config.disableExceptionTracking);\r\n config.autoTrackPageVisitTime = stringToBoolOrDefault(config.autoTrackPageVisitTime);\r\n config.overridePageViewDuration = stringToBoolOrDefault(config.overridePageViewDuration);\r\n config.enableUnhandledPromiseRejectionTracking = stringToBoolOrDefault(config.enableUnhandledPromiseRejectionTracking);\r\n if (isNaN(config.samplingPercentage) || config.samplingPercentage <= 0 || config.samplingPercentage >= 100) {\r\n config.samplingPercentage = 100;\r\n }\r\n config.isStorageUseDisabled = stringToBoolOrDefault(config.isStorageUseDisabled);\r\n config.isBrowserLinkTrackingEnabled = stringToBoolOrDefault(config.isBrowserLinkTrackingEnabled);\r\n config.enableAutoRouteTracking = stringToBoolOrDefault(config.enableAutoRouteTracking);\r\n config.namePrefix = config.namePrefix || \"\";\r\n return config;\r\n };\r\n /**\r\n * Get the current cookie manager for this instance\r\n */\r\n ApplicationInsights.prototype.getCookieMgr = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n ApplicationInsights.prototype.processTelemetry = function (env, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n ApplicationInsights.prototype.trackEvent = function (event, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n * @param name A string that identifies this event uniquely within the document.\r\n */\r\n ApplicationInsights.prototype.startTrackEvent = function (name) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n ApplicationInsights.prototype.stopTrackEvent = function (name, properties, measurements) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * @description Log a diagnostic message\r\n * @param {ITraceTelemetry} trace\r\n * @param ICustomProperties.\r\n * @memberof ApplicationInsights\r\n */\r\n ApplicationInsights.prototype.trackTrace = function (trace, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * @description Log a numeric value that is not associated with a specific event. Typically\r\n * used to send regular reports of performance indicators. To send single measurement, just\r\n * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n * and sending the resulting average at intervals\r\n * @param {IMetricTelemetry} metric input object argument. Only name and average are mandatory.\r\n * @param {{[key: string]: any}} customProperties additional data used to filter metrics in the\r\n * portal. Defaults to empty.\r\n * @memberof ApplicationInsights\r\n */\r\n ApplicationInsights.prototype.trackMetric = function (metric, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Logs that a page or other item was viewed.\r\n * @param IPageViewTelemetry The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param customProperties Additional data used to filter events and metrics. Defaults to empty.\r\n * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n */\r\n ApplicationInsights.prototype.trackPageView = function (pageView, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n * @param pageView Page view item to be sent\r\n * @param properties Custom properties (Part C) that a user can add to the telemetry item\r\n * @param systemProperties System level properties (Part A) that a user can add to the telemetry item\r\n */\r\n ApplicationInsights.prototype.sendPageViewInternal = function (pageView, properties, systemProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param pageViewPerformance\r\n * @param properties\r\n */\r\n ApplicationInsights.prototype.sendPageViewPerformanceInternal = function (pageViewPerformance, properties, systemProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Send browser performance metrics.\r\n * @param pageViewPerformance\r\n * @param customProperties\r\n */\r\n ApplicationInsights.prototype.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n ApplicationInsights.prototype.startTrackPage = function (name) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n ApplicationInsights.prototype.stopTrackPage = function (name, url, properties, measurement) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param exception\r\n * @param properties\r\n * @param systemProperties\r\n */\r\n ApplicationInsights.prototype.sendExceptionInternal = function (exception, customProperties, systemProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log an exception you have caught.\r\n *\r\n * @param {IExceptionTelemetry} exception Object which contains exception to be sent\r\n * @param {{[key: string]: any}} customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n *\r\n * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n * @memberof ApplicationInsights\r\n */\r\n ApplicationInsights.prototype.trackException = function (exception, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * @description Custom error handler for Application Insights Analytics\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof ApplicationInsights\r\n */\r\n ApplicationInsights.prototype._onerror = function (exception) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n ApplicationInsights.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n ApplicationInsights.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n ApplicationInsights.Version = \"2.6.1\"; // Not currently used anywhere\r\n return ApplicationInsights;\r\n}(BaseTelemetryPlugin));\r\nexport { ApplicationInsights };\r\n/**\r\n * Used to record timed events and page views.\r\n */\r\nvar Timing = /** @class */ (function () {\r\n function Timing(logger, name) {\r\n var _self = this;\r\n var _events = {};\r\n _self.start = function (name) {\r\n if (typeof _events[name] !== \"undefined\") {\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.StartCalledMoreThanOnce, \"start was called more than once for this event without calling stop.\", { name: name, key: name }, true);\r\n }\r\n _events[name] = +new Date;\r\n };\r\n _self.stop = function (name, url, properties, measurements) {\r\n var start = _events[name];\r\n if (isNaN(start)) {\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.StopCalledWithoutStart, \"stop was called without a corresponding start.\", { name: name, key: name }, true);\r\n }\r\n else {\r\n var end = +new Date;\r\n var duration = dateTimeUtilsDuration(start, end);\r\n _self.action(name, url, duration, properties, measurements);\r\n }\r\n delete _events[name];\r\n _events[name] = undefined;\r\n };\r\n }\r\n return Timing;\r\n}());\r\n//# sourceMappingURL=ApplicationInsights.js.map","import { utlGetSessionStorage, utlSetSessionStorage } from '@microsoft/applicationinsights-common';\r\nimport { LoggingSeverity, _InternalMessageId, getJSON, arrForEach, isFunction, arrIndexOf, isString, dumpObj, isArray, getExceptionName } from '@microsoft/applicationinsights-core-js';\r\nimport dynamicProto from '@microsoft/dynamicproto-js';\r\n/*\r\n * An array based send buffer.\r\n */\r\nvar ArraySendBuffer = /** @class */ (function () {\r\n function ArraySendBuffer(config) {\r\n var _buffer = [];\r\n dynamicProto(ArraySendBuffer, this, function (_self) {\r\n _self.enqueue = function (payload) {\r\n _buffer.push(payload);\r\n };\r\n _self.count = function () {\r\n return _buffer.length;\r\n };\r\n _self.clear = function () {\r\n _buffer.length = 0;\r\n };\r\n _self.getItems = function () {\r\n return _buffer.slice(0);\r\n };\r\n _self.batchPayloads = function (payload) {\r\n if (payload && payload.length > 0) {\r\n var batch = config.emitLineDelimitedJson() ?\r\n payload.join(\"\\n\") :\r\n \"[\" + payload.join(\",\") + \"]\";\r\n return batch;\r\n }\r\n return null;\r\n };\r\n _self.markAsSent = function (payload) {\r\n _self.clear();\r\n };\r\n _self.clearSent = function (payload) {\r\n // not supported\r\n };\r\n });\r\n }\r\n ArraySendBuffer.prototype.enqueue = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n ArraySendBuffer.prototype.count = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 0;\r\n };\r\n ArraySendBuffer.prototype.clear = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n ArraySendBuffer.prototype.getItems = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n ArraySendBuffer.prototype.batchPayloads = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n ArraySendBuffer.prototype.markAsSent = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n ArraySendBuffer.prototype.clearSent = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return ArraySendBuffer;\r\n}());\r\nexport { ArraySendBuffer };\r\n/*\r\n * Session storage buffer holds a copy of all unsent items in the browser session storage.\r\n */\r\nvar SessionStorageSendBuffer = /** @class */ (function () {\r\n function SessionStorageSendBuffer(logger, config) {\r\n var _bufferFullMessageSent = false;\r\n // An in-memory copy of the buffer. A copy is saved to the session storage on enqueue() and clear().\r\n // The buffer is restored in a constructor and contains unsent events from a previous page.\r\n var _buffer;\r\n dynamicProto(SessionStorageSendBuffer, this, function (_self) {\r\n var bufferItems = _getBuffer(SessionStorageSendBuffer.BUFFER_KEY);\r\n var notDeliveredItems = _getBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY);\r\n _buffer = bufferItems.concat(notDeliveredItems);\r\n // If the buffer has too many items, drop items from the end.\r\n if (_buffer.length > SessionStorageSendBuffer.MAX_BUFFER_SIZE) {\r\n _buffer.length = SessionStorageSendBuffer.MAX_BUFFER_SIZE;\r\n }\r\n _setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, []);\r\n _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, _buffer);\r\n _self.enqueue = function (payload) {\r\n if (_buffer.length >= SessionStorageSendBuffer.MAX_BUFFER_SIZE) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.SessionStorageBufferFull, \"Maximum buffer size reached: \" + _buffer.length, true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n _buffer.push(payload);\r\n _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, _buffer);\r\n };\r\n _self.count = function () {\r\n return _buffer.length;\r\n };\r\n _self.clear = function () {\r\n _buffer = [];\r\n _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, []);\r\n _setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, []);\r\n _bufferFullMessageSent = false;\r\n };\r\n _self.getItems = function () {\r\n return _buffer.slice(0);\r\n };\r\n _self.batchPayloads = function (payload) {\r\n if (payload && payload.length > 0) {\r\n var batch = config.emitLineDelimitedJson() ?\r\n payload.join(\"\\n\") :\r\n \"[\" + payload.join(\",\") + \"]\";\r\n return batch;\r\n }\r\n return null;\r\n };\r\n _self.markAsSent = function (payload) {\r\n _buffer = _removePayloadsFromBuffer(payload, _buffer);\r\n _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, _buffer);\r\n var sentElements = _getBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY);\r\n if (sentElements instanceof Array && payload instanceof Array) {\r\n sentElements = sentElements.concat(payload);\r\n if (sentElements.length > SessionStorageSendBuffer.MAX_BUFFER_SIZE) {\r\n // We send telemetry normally. If the SENT_BUFFER is too big we don't add new elements\r\n // until we receive a response from the backend and the buffer has free space again (see clearSent method)\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.SessionStorageBufferFull, \"Sent buffer reached its maximum size: \" + sentElements.length, true);\r\n sentElements.length = SessionStorageSendBuffer.MAX_BUFFER_SIZE;\r\n }\r\n _setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, sentElements);\r\n }\r\n };\r\n _self.clearSent = function (payload) {\r\n var sentElements = _getBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY);\r\n sentElements = _removePayloadsFromBuffer(payload, sentElements);\r\n _setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, sentElements);\r\n };\r\n function _removePayloadsFromBuffer(payloads, buffer) {\r\n var remaining = [];\r\n arrForEach(buffer, function (value) {\r\n if (!isFunction(value) && arrIndexOf(payloads, value) === -1) {\r\n remaining.push(value);\r\n }\r\n });\r\n return remaining;\r\n }\r\n function _getBuffer(key) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config.namePrefix && config.namePrefix() ? config.namePrefix() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = utlGetSessionStorage(logger, prefixedKey);\r\n if (bufferJson) {\r\n var buffer = getJSON().parse(bufferJson);\r\n if (isString(buffer)) {\r\n // When using some version prototype.js the stringify / parse cycle does not decode array's correctly\r\n buffer = getJSON().parse(buffer);\r\n }\r\n if (buffer && isArray(buffer)) {\r\n return buffer;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.FailedToRestoreStorageBuffer, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return [];\r\n }\r\n function _setBuffer(key, buffer) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config.namePrefix && config.namePrefix() ? config.namePrefix() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = JSON.stringify(buffer);\r\n utlSetSessionStorage(logger, prefixedKey, bufferJson);\r\n }\r\n catch (e) {\r\n // if there was an error, clear the buffer\r\n // telemetry is stored in the _buffer array so we won't loose any items\r\n utlSetSessionStorage(logger, prefixedKey, JSON.stringify([]));\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.FailedToSetStorageBuffer, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e) + \". Buffer cleared\", { exception: dumpObj(e) });\r\n }\r\n }\r\n });\r\n }\r\n SessionStorageSendBuffer.prototype.enqueue = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n SessionStorageSendBuffer.prototype.count = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 0;\r\n };\r\n SessionStorageSendBuffer.prototype.clear = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n SessionStorageSendBuffer.prototype.getItems = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n SessionStorageSendBuffer.prototype.batchPayloads = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n SessionStorageSendBuffer.prototype.markAsSent = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n SessionStorageSendBuffer.prototype.clearSent = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n SessionStorageSendBuffer.BUFFER_KEY = \"AI_buffer\";\r\n SessionStorageSendBuffer.SENT_BUFFER_KEY = \"AI_sentBuffer\";\r\n // Maximum number of payloads stored in the buffer. If the buffer is full, new elements will be dropped.\r\n SessionStorageSendBuffer.MAX_BUFFER_SIZE = 2000;\r\n return SessionStorageSendBuffer;\r\n}());\r\nexport { SessionStorageSendBuffer };\r\n//# sourceMappingURL=SendBuffer.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { Envelope as AIEnvelope } from '../../Interfaces/Contracts/Generated/Envelope';\r\nimport { Base } from '../../Interfaces/Contracts/Generated/Base';\r\nimport { IEnvelope } from '../../Interfaces/Telemetry/IEnvelope';\r\nimport { DataSanitizer } from './DataSanitizer';\r\nimport { FieldType } from '../../Enums';\r\nimport { IDiagnosticLogger, toISOString } from '@microsoft/applicationinsights-core-js';\r\nimport { strNotSpecified } from '../../Constants';\r\n\r\nexport class Envelope extends AIEnvelope implements IEnvelope {\r\n\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n public aiDataContract: any;\r\n\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n constructor(logger: IDiagnosticLogger, data: Base, name: string) {\r\n super();\r\n\r\n this.name = DataSanitizer.sanitizeString(logger, name) || strNotSpecified;\r\n this.data = data;\r\n this.time = toISOString(new Date());\r\n\r\n this.aiDataContract = {\r\n time: FieldType.Required,\r\n iKey: FieldType.Required,\r\n name: FieldType.Required,\r\n sampleRate: () => {\r\n return (this.sampleRate === 100) ? FieldType.Hidden : FieldType.Required;\r\n },\r\n tags: FieldType.Required,\r\n data: FieldType.Required\r\n };\r\n }\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { Base } from './Base';\r\n\r\n/**\r\n * System variables for a telemetry item.\r\n */\r\nexport class Envelope {\r\n\r\n /**\r\n * Envelope version. For internal use only. By assigning this the default, it will not be serialized within the payload unless changed to a value other than #1.\r\n */\r\n public ver: number = 1;\r\n\r\n /**\r\n * Type name of telemetry data item.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Event date time when telemetry item was created. This is the wall clock time on the client when the event was generated. There is no guarantee that the client's time is accurate. This field must be formatted in UTC ISO 8601 format, with a trailing 'Z' character, as described publicly on https://en.wikipedia.org/wiki/ISO_8601#UTC. Note: the number of decimal seconds digits provided are variable (and unspecified). Consumers should handle this, i.e. managed code consumers should not use format 'O' for parsing as it specifies a fixed length. Example: 2009-06-15T13:45:30.0000000Z.\r\n */\r\n public time: string;\r\n\r\n /**\r\n * Sampling rate used in application. This telemetry item represents 1 / sampleRate actual telemetry items.\r\n */\r\n public sampleRate: number = 100.0;\r\n\r\n /**\r\n * Sequence field used to track absolute order of uploaded events.\r\n */\r\n public seq: string;\r\n\r\n /**\r\n * The application's instrumentation key. The key is typically represented as a GUID, but there are cases when it is not a guid. No code should rely on iKey being a GUID. Instrumentation key is case insensitive.\r\n */\r\n public iKey: string;\r\n\r\n /**\r\n * Key/value collection of context properties. See ContextTagKeys for information on available properties.\r\n */\r\n public tags: any = {};\r\n\r\n /**\r\n * Telemetry data item.\r\n */\r\n public data: Base;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { createClassFromInterface } from \"@microsoft/applicationinsights-core-js\";\r\n\r\nfunction _aiNameFunc(baseName: string) {\r\n let aiName = \"ai.\" + baseName + \".\";\r\n return function(name: string) {\r\n return aiName + name;\r\n }\r\n}\r\n\r\nlet _aiApplication = _aiNameFunc(\"application\");\r\nlet _aiDevice = _aiNameFunc(\"device\");\r\nlet _aiLocation = _aiNameFunc(\"location\");\r\nlet _aiOperation = _aiNameFunc(\"operation\");\r\nlet _aiSession = _aiNameFunc(\"session\");\r\nlet _aiUser = _aiNameFunc(\"user\");\r\nlet _aiCloud = _aiNameFunc(\"cloud\");\r\nlet _aiInternal = _aiNameFunc(\"internal\");\r\n\r\nexport interface IContextTagKeys {\r\n\r\n /**\r\n * Application version. Information in the application context fields is always about the application that is sending the telemetry.\r\n */\r\n readonly applicationVersion: string;\r\n\r\n /**\r\n * Application build.\r\n */\r\n readonly applicationBuild: string;\r\n\r\n /**\r\n * Application type id.\r\n */\r\n readonly applicationTypeId: string;\r\n\r\n /**\r\n * Application id.\r\n */\r\n readonly applicationId: string;\r\n\r\n /**\r\n * Application layer.\r\n */\r\n readonly applicationLayer: string;\r\n\r\n /**\r\n * Unique client device id. Computer name in most cases.\r\n */\r\n readonly deviceId: string;\r\n readonly deviceIp: string;\r\n readonly deviceLanguage: string;\r\n\r\n /**\r\n * Device locale using - pattern, following RFC 5646. Example 'en-US'.\r\n */\r\n readonly deviceLocale: string;\r\n\r\n /**\r\n * Model of the device the end user of the application is using. Used for client scenarios. If this field is empty then it is derived from the user agent.\r\n */\r\n readonly deviceModel: string;\r\n readonly deviceFriendlyName: string;\r\n readonly deviceNetwork: string;\r\n readonly deviceNetworkName: string;\r\n\r\n /**\r\n * Client device OEM name taken from the browser.\r\n */\r\n readonly deviceOEMName: string;\r\n readonly deviceOS: string;\r\n\r\n /**\r\n * Operating system name and version of the device the end user of the application is using. If this field is empty then it is derived from the user agent. Example 'Windows 10 Pro 10.0.10586.0'\r\n */\r\n readonly deviceOSVersion: string;\r\n\r\n /**\r\n * Name of the instance where application is running. Computer name for on-premisis, instance name for Azure.\r\n */\r\n readonly deviceRoleInstance: string;\r\n\r\n /**\r\n * Name of the role application is part of. Maps directly to the role name in azure.\r\n */\r\n readonly deviceRoleName: string;\r\n readonly deviceScreenResolution: string;\r\n\r\n /**\r\n * The type of the device the end user of the application is using. Used primarily to distinguish JavaScript telemetry from server side telemetry. Examples: 'PC', 'Phone', 'Browser'. 'PC' is the default value.\r\n */\r\n readonly deviceType: string;\r\n readonly deviceMachineName: string;\r\n readonly deviceVMName: string;\r\n readonly deviceBrowser: string;\r\n\r\n /**\r\n * The browser name and version as reported by the browser.\r\n */\r\n readonly deviceBrowserVersion: string;\r\n\r\n /**\r\n * The IP address of the client device. IPv4 and IPv6 are supported. Information in the location context fields is always about the end user. When telemetry is sent from a service, the location context is about the user that initiated the operation in the service.\r\n */\r\n readonly locationIp: string;\r\n\r\n /**\r\n * The country of the client device. If any of Country, Province, or City is specified, those values will be preferred over geolocation of the IP address field. Information in the location context fields is always about the end user. When telemetry is sent from a service, the location context is about the user that initiated the operation in the service.\r\n */\r\n readonly locationCountry: string;\r\n\r\n /**\r\n * The province/state of the client device. If any of Country, Province, or City is specified, those values will be preferred over geolocation of the IP address field. Information in the location context fields is always about the end user. When telemetry is sent from a service, the location context is about the user that initiated the operation in the service.\r\n */\r\n readonly locationProvince: string;\r\n\r\n /**\r\n * The city of the client device. If any of Country, Province, or City is specified, those values will be preferred over geolocation of the IP address field. Information in the location context fields is always about the end user. When telemetry is sent from a service, the location context is about the user that initiated the operation in the service.\r\n */\r\n readonly locationCity: string;\r\n\r\n /**\r\n * A unique identifier for the operation instance. The operation.id is created by either a request or a page view. All other telemetry sets this to the value for the containing request or page view. Operation.id is used for finding all the telemetry items for a specific operation instance.\r\n */\r\n readonly operationId: string;\r\n\r\n /**\r\n * The name (group) of the operation. The operation.name is created by either a request or a page view. All other telemetry items set this to the value for the containing request or page view. Operation.name is used for finding all the telemetry items for a group of operations (i.e. 'GET Home/Index').\r\n */\r\n readonly operationName: string;\r\n\r\n /**\r\n * The unique identifier of the telemetry item's immediate parent.\r\n */\r\n readonly operationParentId: string;\r\n readonly operationRootId: string;\r\n\r\n /**\r\n * Name of synthetic source. Some telemetry from the application may represent a synthetic traffic. It may be web crawler indexing the web site, site availability tests or traces from diagnostic libraries like Application Insights SDK itself.\r\n */\r\n readonly operationSyntheticSource: string;\r\n\r\n /**\r\n * The correlation vector is a light weight vector clock which can be used to identify and order related events across clients and services.\r\n */\r\n readonly operationCorrelationVector: string;\r\n\r\n /**\r\n * Session ID - the instance of the user's interaction with the app. Information in the session context fields is always about the end user. When telemetry is sent from a service, the session context is about the user that initiated the operation in the service.\r\n */\r\n readonly sessionId: string;\r\n\r\n /**\r\n * Boolean value indicating whether the session identified by ai.session.id is first for the user or not.\r\n */\r\n readonly sessionIsFirst: string;\r\n readonly sessionIsNew: string;\r\n readonly userAccountAcquisitionDate: string;\r\n\r\n /**\r\n * In multi-tenant applications this is the account ID or name which the user is acting with. Examples may be subscription ID for Azure portal or blog name blogging platform.\r\n */\r\n readonly userAccountId: string;\r\n\r\n /**\r\n * The browser's user agent string as reported by the browser. This property will be used to extract informaiton regarding the customer's browser but will not be stored. Use custom properties to store the original user agent.\r\n */\r\n readonly userAgent: string;\r\n\r\n /**\r\n * Anonymous user id. Represents the end user of the application. When telemetry is sent from a service, the user context is about the user that initiated the operation in the service.\r\n */\r\n readonly userId: string;\r\n\r\n /**\r\n * Store region for UWP applications.\r\n */\r\n readonly userStoreRegion: string;\r\n\r\n /**\r\n * Authenticated user id. The opposite of ai.user.id, this represents the user with a friendly name. Since it's PII information it is not collected by default by most SDKs.\r\n */\r\n readonly userAuthUserId: string;\r\n readonly userAnonymousUserAcquisitionDate: string;\r\n readonly userAuthenticatedUserAcquisitionDate: string;\r\n readonly cloudName: string;\r\n\r\n /**\r\n * Name of the role the application is a part of. Maps directly to the role name in azure.\r\n */\r\n readonly cloudRole: string;\r\n readonly cloudRoleVer: string;\r\n\r\n /**\r\n * Name of the instance where the application is running. Computer name for on-premisis, instance name for Azure.\r\n */\r\n readonly cloudRoleInstance: string;\r\n readonly cloudEnvironment: string;\r\n readonly cloudLocation: string;\r\n readonly cloudDeploymentUnit: string;\r\n\r\n /**\r\n * SDK version. See https://github.com/microsoft/ApplicationInsights-Home/blob/master/SDK-AUTHORING.md#sdk-version-specification for information.\r\n */\r\n readonly internalSdkVersion: string;\r\n\r\n /**\r\n * Agent version. Used to indicate the version of StatusMonitor installed on the computer if it is used for data collection.\r\n */\r\n readonly internalAgentVersion: string;\r\n\r\n /**\r\n * This is the node name used for billing purposes. Use it to override the standard detection of nodes.\r\n */\r\n readonly internalNodeName: string;\r\n\r\n /**\r\n * This identifies the version of the snippet that was used to initialize the SDK\r\n */\r\n readonly internalSnippet: string;\r\n\r\n /**\r\n * This identifies the source of the Sdk script (used to identify whether the SDK was loaded via the CDN)\r\n */\r\n readonly internalSdkSrc: string;\r\n}\r\n\r\nexport class ContextTagKeys extends createClassFromInterface({\r\n applicationVersion: _aiApplication(\"ver\"),\r\n applicationBuild: _aiApplication(\"build\"),\r\n applicationTypeId: _aiApplication(\"typeId\"),\r\n applicationId: _aiApplication(\"applicationId\"),\r\n applicationLayer: _aiApplication(\"layer\"),\r\n \r\n deviceId: _aiDevice(\"id\"),\r\n deviceIp: _aiDevice(\"ip\"),\r\n deviceLanguage: _aiDevice(\"language\"),\r\n deviceLocale: _aiDevice(\"locale\"),\r\n deviceModel: _aiDevice(\"model\"),\r\n deviceFriendlyName: _aiDevice(\"friendlyName\"),\r\n deviceNetwork: _aiDevice(\"network\"),\r\n deviceNetworkName: _aiDevice(\"networkName\"),\r\n deviceOEMName: _aiDevice(\"oemName\"),\r\n deviceOS: _aiDevice(\"os\"),\r\n deviceOSVersion: _aiDevice(\"osVersion\"),\r\n deviceRoleInstance: _aiDevice(\"roleInstance\"),\r\n deviceRoleName: _aiDevice(\"roleName\"),\r\n deviceScreenResolution: _aiDevice(\"screenResolution\"),\r\n deviceType: _aiDevice(\"type\"),\r\n deviceMachineName: _aiDevice(\"machineName\"),\r\n deviceVMName: _aiDevice(\"vmName\"),\r\n deviceBrowser: _aiDevice(\"browser\"),\r\n deviceBrowserVersion: _aiDevice(\"browserVersion\"),\r\n \r\n locationIp: _aiLocation(\"ip\"),\r\n locationCountry: _aiLocation(\"country\"),\r\n locationProvince: _aiLocation(\"province\"),\r\n locationCity: _aiLocation(\"city\"),\r\n \r\n operationId: _aiOperation(\"id\"),\r\n operationName: _aiOperation(\"name\"),\r\n operationParentId: _aiOperation(\"parentId\"),\r\n operationRootId: _aiOperation(\"rootId\"),\r\n operationSyntheticSource: _aiOperation(\"syntheticSource\"),\r\n operationCorrelationVector: _aiOperation(\"correlationVector\"),\r\n \r\n sessionId: _aiSession(\"id\"),\r\n sessionIsFirst: _aiSession(\"isFirst\"),\r\n sessionIsNew: _aiSession(\"isNew\"),\r\n\r\n userAccountAcquisitionDate: _aiUser(\"accountAcquisitionDate\"),\r\n userAccountId: _aiUser(\"accountId\"),\r\n userAgent: _aiUser(\"userAgent\"),\r\n userId: _aiUser(\"id\"),\r\n userStoreRegion: _aiUser(\"storeRegion\"),\r\n userAuthUserId: _aiUser(\"authUserId\"),\r\n userAnonymousUserAcquisitionDate: _aiUser(\"anonUserAcquisitionDate\"),\r\n userAuthenticatedUserAcquisitionDate: _aiUser(\"authUserAcquisitionDate\"),\r\n\r\n cloudName: _aiCloud(\"name\"),\r\n cloudRole: _aiCloud(\"role\"),\r\n cloudRoleVer: _aiCloud(\"roleVer\"),\r\n cloudRoleInstance: _aiCloud(\"roleInstance\"),\r\n cloudEnvironment: _aiCloud(\"environment\"),\r\n cloudLocation: _aiCloud(\"location\"),\r\n cloudDeploymentUnit: _aiCloud(\"deploymentUnit\"),\r\n\r\n internalNodeName: _aiInternal(\"nodeName\"),\r\n internalSdkVersion: _aiInternal(\"sdkVersion\"),\r\n internalAgentVersion: _aiInternal(\"agentVersion\"),\r\n internalSnippet: _aiInternal(\"snippet\"),\r\n internalSdkSrc: _aiInternal(\"sdkSrc\")\r\n}) {\r\n constructor() {\r\n super();\r\n }\r\n}","import { ContextTagKeys } from \"./Contracts/Generated/ContextTagKeys\";\r\n\r\nexport const Extensions = {\r\n UserExt: \"user\",\r\n DeviceExt: \"device\",\r\n TraceExt: \"trace\",\r\n WebExt: \"web\",\r\n AppExt: \"app\",\r\n OSExt: \"os\",\r\n SessionExt: \"ses\",\r\n SDKExt: \"sdk\"\r\n};\r\n\r\nexport let CtxTagKeys = new ContextTagKeys();","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\n\r\n/**\r\n * Data struct to contain only C section with custom fields.\r\n */\r\nexport class Base {\r\n\r\n /**\r\n * Name of item (B section) if any. If telemetry data is derived straight from this, this should be null.\r\n */\r\n public baseType: string;\r\n\r\n constructor() {\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { Base } from './Base';\r\n\r\n/**\r\n * Data struct to contain both B and C sections.\r\n */\r\nexport class Data extends Base {\r\n\r\n /**\r\n * Name of item (B section) if any. If telemetry data is derived straight from this, this should be null.\r\n */\r\n public baseType: string;\r\n\r\n /**\r\n * Container for data item (B section).\r\n */\r\n public baseData: TDomain;\r\n\r\n constructor() {\r\n super();\r\n\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { Data as AIData } from '../../Interfaces/Contracts/Generated/Data';\r\nimport { ISerializable } from '../../Interfaces/Telemetry/ISerializable';\r\nimport { FieldType } from '../../Enums';\r\n\r\nexport class Data extends AIData implements ISerializable {\r\n\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n public aiDataContract = {\r\n baseType: FieldType.Required,\r\n baseData: FieldType.Required\r\n }\r\n\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n constructor(baseType: string, data: TDomain) {\r\n super();\r\n\r\n this.baseType = baseType;\r\n this.baseData = data;\r\n }\r\n}","import { Data, Envelope, RemoteDependencyData, Event, Exception, Metric, PageView, Trace, PageViewPerformance, CtxTagKeys, HttpMethod, SampleRate, } from '@microsoft/applicationinsights-common';\r\nimport { LoggingSeverity, _InternalMessageId, hasJSON, getJSON, objForEachKey, isNullOrUndefined, isNumber, isString, toISOString, setValue, isTruthy, optimizeObject } from '@microsoft/applicationinsights-core-js';\r\n// these two constants are used to filter out properties not needed when trying to extract custom properties and measurements from the incoming payload\r\nvar strBaseType = 'baseType';\r\nvar strBaseData = 'baseData';\r\nvar strProperties = 'properties';\r\nvar strTrue = 'true';\r\nfunction _setValueIf(target, field, value) {\r\n return setValue(target, field, value, isTruthy);\r\n}\r\nvar EnvelopeCreator = /** @class */ (function () {\r\n function EnvelopeCreator() {\r\n }\r\n EnvelopeCreator.extractPropsAndMeasurements = function (data, properties, measurements) {\r\n if (!isNullOrUndefined(data)) {\r\n objForEachKey(data, function (key, value) {\r\n if (isNumber(value)) {\r\n measurements[key] = value;\r\n }\r\n else if (isString(value)) {\r\n properties[key] = value;\r\n }\r\n else if (hasJSON()) {\r\n properties[key] = getJSON().stringify(value);\r\n }\r\n });\r\n }\r\n };\r\n // TODO: Do we want this to take logger as arg or use this._logger as nonstatic?\r\n EnvelopeCreator.createEnvelope = function (logger, envelopeType, telemetryItem, data) {\r\n var envelope = new Envelope(logger, data, envelopeType);\r\n _setValueIf(envelope, 'sampleRate', telemetryItem[SampleRate]);\r\n if ((telemetryItem[strBaseData] || {}).startTime) {\r\n envelope.time = toISOString(telemetryItem[strBaseData].startTime);\r\n }\r\n envelope.iKey = telemetryItem.iKey;\r\n var iKeyNoDashes = telemetryItem.iKey.replace(/-/g, \"\");\r\n envelope.name = envelope.name.replace(\"{0}\", iKeyNoDashes);\r\n // extract all extensions from ctx\r\n EnvelopeCreator.extractPartAExtensions(telemetryItem, envelope);\r\n // loop through the envelope tags (extension of Part A) and pick out the ones that should go in outgoing envelope tags\r\n telemetryItem.tags = telemetryItem.tags || [];\r\n return optimizeObject(envelope);\r\n };\r\n /*\r\n * Maps Part A data from CS 4.0\r\n */\r\n EnvelopeCreator.extractPartAExtensions = function (item, env) {\r\n // todo: switch to keys from common in this method\r\n var envTags = env.tags = env.tags || {};\r\n var itmExt = item.ext = item.ext || {};\r\n var itmTags = item.tags = item.tags || [];\r\n var extUser = itmExt.user;\r\n if (extUser) {\r\n _setValueIf(envTags, CtxTagKeys.userAuthUserId, extUser.authId);\r\n _setValueIf(envTags, CtxTagKeys.userId, extUser.id || extUser.localId);\r\n }\r\n var extApp = itmExt.app;\r\n if (extApp) {\r\n _setValueIf(envTags, CtxTagKeys.sessionId, extApp.sesId);\r\n }\r\n var extDevice = itmExt.device;\r\n if (extDevice) {\r\n _setValueIf(envTags, CtxTagKeys.deviceId, extDevice.id || extDevice.localId);\r\n _setValueIf(envTags, CtxTagKeys.deviceType, extDevice.deviceClass);\r\n _setValueIf(envTags, CtxTagKeys.deviceIp, extDevice.ip);\r\n _setValueIf(envTags, CtxTagKeys.deviceModel, extDevice.model);\r\n _setValueIf(envTags, CtxTagKeys.deviceType, extDevice.deviceType);\r\n }\r\n var web = item.ext.web;\r\n if (web) {\r\n _setValueIf(envTags, CtxTagKeys.deviceLanguage, web.browserLang);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowserVersion, web.browserVer);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowser, web.browser);\r\n var envData = env.data = env.data || {};\r\n var envBaseData = envData[strBaseData] = envData[strBaseData] || {};\r\n var envProps = envBaseData[strProperties] = envBaseData[strProperties] || {};\r\n _setValueIf(envProps, 'domain', web.domain);\r\n _setValueIf(envProps, 'isManual', web.isManual ? strTrue : null);\r\n _setValueIf(envProps, 'screenRes', web.screenRes);\r\n _setValueIf(envProps, 'userConsent', web.userConsent ? strTrue : null);\r\n }\r\n var extOs = itmExt.os;\r\n if (extOs) {\r\n _setValueIf(envTags, CtxTagKeys.deviceOS, extOs.name);\r\n }\r\n // No support for mapping Trace.traceState to 2.0 as it is currently empty\r\n var extTrace = itmExt.trace;\r\n if (extTrace) {\r\n _setValueIf(envTags, CtxTagKeys.operationParentId, extTrace.parentID);\r\n _setValueIf(envTags, CtxTagKeys.operationName, extTrace.name);\r\n _setValueIf(envTags, CtxTagKeys.operationId, extTrace.traceID);\r\n }\r\n // Sample 4.0 schema\r\n // {\r\n // \"time\" : \"2018-09-05T22:51:22.4936Z\",\r\n // \"name\" : \"MetricWithNamespace\",\r\n // \"iKey\" : \"ABC-5a4cbd20-e601-4ef5-a3c6-5d6577e4398e\",\r\n // \"ext\": { \"cloud\": {\r\n // \"role\": \"WATSON3\",\r\n // \"roleInstance\": \"CO4AEAP00000260\"\r\n // },\r\n // \"device\": {}, \"correlation\": {} },\r\n // \"tags\": [\r\n // { \"amazon.region\" : \"east2\" },\r\n // { \"os.expid\" : \"wp:02df239\" }\r\n // ]\r\n // }\r\n var tgs = {};\r\n // deals with tags.push({object})\r\n for (var i = itmTags.length - 1; i >= 0; i--) {\r\n var tg = itmTags[i];\r\n objForEachKey(tg, function (key, value) {\r\n tgs[key] = value;\r\n });\r\n itmTags.splice(i, 1);\r\n }\r\n // deals with tags[key]=value (and handles hasOwnProperty)\r\n objForEachKey(itmTags, function (tg, value) {\r\n tgs[tg] = value;\r\n });\r\n var theTags = __assign({}, envTags, tgs);\r\n if (!theTags[CtxTagKeys.internalSdkVersion]) {\r\n // Append a version in case it is not already set\r\n theTags[CtxTagKeys.internalSdkVersion] = \"javascript:\" + EnvelopeCreator.Version;\r\n }\r\n env.tags = optimizeObject(theTags);\r\n };\r\n EnvelopeCreator.prototype.Init = function (logger, telemetryItem) {\r\n this._logger = logger;\r\n if (isNullOrUndefined(telemetryItem[strBaseData])) {\r\n this._logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryEnvelopeInvalid, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n };\r\n EnvelopeCreator.Version = \"2.6.1\";\r\n return EnvelopeCreator;\r\n}());\r\nexport { EnvelopeCreator };\r\nvar DependencyEnvelopeCreator = /** @class */ (function (_super) {\r\n __extends(DependencyEnvelopeCreator, _super);\r\n function DependencyEnvelopeCreator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DependencyEnvelopeCreator.prototype.Create = function (logger, telemetryItem) {\r\n _super.prototype.Init.call(this, logger, telemetryItem);\r\n var customMeasurements = telemetryItem[strBaseData].measurements || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n EnvelopeCreator.extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n var bd = telemetryItem[strBaseData];\r\n if (isNullOrUndefined(bd)) {\r\n logger.warnToConsole(\"Invalid input for dependency data\");\r\n return null;\r\n }\r\n var method = bd[strProperties] && bd[strProperties][HttpMethod] ? bd[strProperties][HttpMethod] : \"GET\";\r\n var remoteDepData = new RemoteDependencyData(logger, bd.id, bd.target, bd.name, bd.duration, bd.success, bd.responseCode, method, bd.type, bd.correlationContext, customProperties, customMeasurements);\r\n var data = new Data(RemoteDependencyData.dataType, remoteDepData);\r\n return EnvelopeCreator.createEnvelope(logger, RemoteDependencyData.envelopeType, telemetryItem, data);\r\n };\r\n DependencyEnvelopeCreator.DependencyEnvelopeCreator = new DependencyEnvelopeCreator();\r\n return DependencyEnvelopeCreator;\r\n}(EnvelopeCreator));\r\nexport { DependencyEnvelopeCreator };\r\nvar EventEnvelopeCreator = /** @class */ (function (_super) {\r\n __extends(EventEnvelopeCreator, _super);\r\n function EventEnvelopeCreator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n EventEnvelopeCreator.prototype.Create = function (logger, telemetryItem) {\r\n _super.prototype.Init.call(this, logger, telemetryItem);\r\n var customProperties = {};\r\n var customMeasurements = {};\r\n if (telemetryItem[strBaseType] !== Event.dataType) {\r\n customProperties['baseTypeSource'] = telemetryItem[strBaseType]; // save the passed in base type as a property\r\n }\r\n if (telemetryItem[strBaseType] === Event.dataType) {\r\n customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n customMeasurements = telemetryItem[strBaseData].measurements || {};\r\n }\r\n else {\r\n if (telemetryItem[strBaseData]) {\r\n EnvelopeCreator.extractPropsAndMeasurements(telemetryItem[strBaseData], customProperties, customMeasurements);\r\n }\r\n }\r\n // Extract root level properties from part C telemetryItem.data\r\n EnvelopeCreator.extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n var eventName = telemetryItem[strBaseData].name;\r\n var eventData = new Event(logger, eventName, customProperties, customMeasurements);\r\n var data = new Data(Event.dataType, eventData);\r\n return EnvelopeCreator.createEnvelope(logger, Event.envelopeType, telemetryItem, data);\r\n };\r\n EventEnvelopeCreator.EventEnvelopeCreator = new EventEnvelopeCreator();\r\n return EventEnvelopeCreator;\r\n}(EnvelopeCreator));\r\nexport { EventEnvelopeCreator };\r\nvar ExceptionEnvelopeCreator = /** @class */ (function (_super) {\r\n __extends(ExceptionEnvelopeCreator, _super);\r\n function ExceptionEnvelopeCreator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExceptionEnvelopeCreator.prototype.Create = function (logger, telemetryItem) {\r\n _super.prototype.Init.call(this, logger, telemetryItem);\r\n // Extract root level properties from part C telemetryItem.data\r\n var customMeasurements = telemetryItem[strBaseData].measurements || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n EnvelopeCreator.extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n var bd = telemetryItem[strBaseData];\r\n var exData = Exception.CreateFromInterface(logger, bd, customProperties, customMeasurements);\r\n var data = new Data(Exception.dataType, exData);\r\n return EnvelopeCreator.createEnvelope(logger, Exception.envelopeType, telemetryItem, data);\r\n };\r\n ExceptionEnvelopeCreator.ExceptionEnvelopeCreator = new ExceptionEnvelopeCreator();\r\n return ExceptionEnvelopeCreator;\r\n}(EnvelopeCreator));\r\nexport { ExceptionEnvelopeCreator };\r\nvar MetricEnvelopeCreator = /** @class */ (function (_super) {\r\n __extends(MetricEnvelopeCreator, _super);\r\n function MetricEnvelopeCreator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MetricEnvelopeCreator.prototype.Create = function (logger, telemetryItem) {\r\n _super.prototype.Init.call(this, logger, telemetryItem);\r\n var baseData = telemetryItem[strBaseData];\r\n var props = baseData[strProperties] || {};\r\n var measurements = baseData.measurements || {};\r\n EnvelopeCreator.extractPropsAndMeasurements(telemetryItem.data, props, measurements);\r\n var baseMetricData = new Metric(logger, baseData.name, baseData.average, baseData.sampleCount, baseData.min, baseData.max, props, measurements);\r\n var data = new Data(Metric.dataType, baseMetricData);\r\n return EnvelopeCreator.createEnvelope(logger, Metric.envelopeType, telemetryItem, data);\r\n };\r\n MetricEnvelopeCreator.MetricEnvelopeCreator = new MetricEnvelopeCreator();\r\n return MetricEnvelopeCreator;\r\n}(EnvelopeCreator));\r\nexport { MetricEnvelopeCreator };\r\nvar PageViewEnvelopeCreator = /** @class */ (function (_super) {\r\n __extends(PageViewEnvelopeCreator, _super);\r\n function PageViewEnvelopeCreator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageViewEnvelopeCreator.prototype.Create = function (logger, telemetryItem) {\r\n _super.prototype.Init.call(this, logger, telemetryItem);\r\n // Since duration is not part of the domain properties in Common Schema, extract it from part C\r\n var strDuration = \"duration\";\r\n var duration;\r\n var baseData = telemetryItem[strBaseData];\r\n if (!isNullOrUndefined(baseData) &&\r\n !isNullOrUndefined(baseData[strProperties]) &&\r\n !isNullOrUndefined(baseData[strProperties][strDuration])) {\r\n duration = baseData[strProperties][strDuration];\r\n delete baseData[strProperties][strDuration];\r\n }\r\n else if (!isNullOrUndefined(telemetryItem.data) &&\r\n !isNullOrUndefined(telemetryItem.data[strDuration])) {\r\n duration = telemetryItem.data[strDuration];\r\n delete telemetryItem.data[strDuration];\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n // special case: pageview.id is grabbed from current operation id. Analytics plugin is decoupled from properties plugin, so this is done here instead. This can be made a default telemetry intializer instead if needed to be decoupled from channel\r\n var currentContextId;\r\n if (((telemetryItem.ext || {}).trace || {}).traceID) {\r\n currentContextId = telemetryItem.ext.trace.traceID;\r\n }\r\n var id = bd.id || currentContextId;\r\n var name = bd.name;\r\n var url = bd.uri;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd.measurements || {};\r\n // refUri is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.refUri)) {\r\n properties[\"refUri\"] = bd.refUri;\r\n }\r\n // pageType is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.pageType)) {\r\n properties[\"pageType\"] = bd.pageType;\r\n }\r\n // isLoggedIn is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.isLoggedIn)) {\r\n properties[\"isLoggedIn\"] = bd.isLoggedIn.toString();\r\n }\r\n // pageTags is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd[strProperties])) {\r\n var pageTags = bd[strProperties];\r\n objForEachKey(pageTags, function (key, value) {\r\n properties[key] = value;\r\n });\r\n }\r\n EnvelopeCreator.extractPropsAndMeasurements(telemetryItem.data, properties, measurements);\r\n var pageViewData = new PageView(logger, name, url, duration, properties, measurements, id);\r\n var data = new Data(PageView.dataType, pageViewData);\r\n return EnvelopeCreator.createEnvelope(logger, PageView.envelopeType, telemetryItem, data);\r\n };\r\n PageViewEnvelopeCreator.PageViewEnvelopeCreator = new PageViewEnvelopeCreator();\r\n return PageViewEnvelopeCreator;\r\n}(EnvelopeCreator));\r\nexport { PageViewEnvelopeCreator };\r\nvar PageViewPerformanceEnvelopeCreator = /** @class */ (function (_super) {\r\n __extends(PageViewPerformanceEnvelopeCreator, _super);\r\n function PageViewPerformanceEnvelopeCreator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PageViewPerformanceEnvelopeCreator.prototype.Create = function (logger, telemetryItem) {\r\n _super.prototype.Init.call(this, logger, telemetryItem);\r\n var bd = telemetryItem[strBaseData];\r\n var name = bd.name;\r\n var url = bd.uri || bd.url;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd.measurements || {};\r\n EnvelopeCreator.extractPropsAndMeasurements(telemetryItem.data, properties, measurements);\r\n var baseData = new PageViewPerformance(logger, name, url, undefined, properties, measurements, bd);\r\n var data = new Data(PageViewPerformance.dataType, baseData);\r\n return EnvelopeCreator.createEnvelope(logger, PageViewPerformance.envelopeType, telemetryItem, data);\r\n };\r\n PageViewPerformanceEnvelopeCreator.PageViewPerformanceEnvelopeCreator = new PageViewPerformanceEnvelopeCreator();\r\n return PageViewPerformanceEnvelopeCreator;\r\n}(EnvelopeCreator));\r\nexport { PageViewPerformanceEnvelopeCreator };\r\nvar TraceEnvelopeCreator = /** @class */ (function (_super) {\r\n __extends(TraceEnvelopeCreator, _super);\r\n function TraceEnvelopeCreator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TraceEnvelopeCreator.prototype.Create = function (logger, telemetryItem) {\r\n _super.prototype.Init.call(this, logger, telemetryItem);\r\n var message = telemetryItem[strBaseData].message;\r\n var severityLevel = telemetryItem[strBaseData].severityLevel;\r\n var props = telemetryItem[strBaseData][strProperties] || {};\r\n var measurements = telemetryItem[strBaseData].measurements || {};\r\n EnvelopeCreator.extractPropsAndMeasurements(telemetryItem.data, props, measurements);\r\n var baseData = new Trace(logger, message, severityLevel, props, measurements);\r\n var data = new Data(Trace.dataType, baseData);\r\n return EnvelopeCreator.createEnvelope(logger, Trace.envelopeType, telemetryItem, data);\r\n };\r\n TraceEnvelopeCreator.TraceEnvelopeCreator = new TraceEnvelopeCreator();\r\n return TraceEnvelopeCreator;\r\n}(EnvelopeCreator));\r\nexport { TraceEnvelopeCreator };\r\n//# sourceMappingURL=EnvelopeCreator.js.map","import { FieldType } from '@microsoft/applicationinsights-common';\r\nimport { LoggingSeverity, _InternalMessageId, getJSON, objForEachKey, isFunction, isObject, isArray } from '@microsoft/applicationinsights-core-js';\r\nimport dynamicProto from '@microsoft/dynamicproto-js';\r\nvar Serializer = /** @class */ (function () {\r\n function Serializer(logger) {\r\n dynamicProto(Serializer, this, function (_self) {\r\n /**\r\n * Serializes the current object to a JSON string.\r\n */\r\n _self.serialize = function (input) {\r\n var output = _serializeObject(input, \"root\");\r\n try {\r\n return getJSON().stringify(output);\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSerializeObject, (e && isFunction(e.toString)) ? e.toString() : \"Error serializing object\", null, true);\r\n }\r\n };\r\n function _serializeObject(source, name) {\r\n var circularReferenceCheck = \"__aiCircularRefCheck\";\r\n var output = {};\r\n if (!source) {\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSerializeObject, \"cannot serialize object because it is null or undefined\", { name: name }, true);\r\n return output;\r\n }\r\n if (source[circularReferenceCheck]) {\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.CircularReferenceDetected, \"Circular reference detected while serializing object\", { name: name }, true);\r\n return output;\r\n }\r\n if (!source.aiDataContract) {\r\n // special case for measurements/properties/tags\r\n if (name === \"measurements\") {\r\n output = _serializeStringMap(source, \"number\", name);\r\n }\r\n else if (name === \"properties\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (name === \"tags\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (isArray(source)) {\r\n output = _serializeArray(source, name);\r\n }\r\n else {\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.CannotSerializeObjectNonSerializable, \"Attempting to serialize an object which does not implement ISerializable\", { name: name }, true);\r\n try {\r\n // verify that the object can be stringified\r\n getJSON().stringify(source);\r\n output = source;\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSerializeObject, (e && isFunction(e.toString)) ? e.toString() : \"Error serializing object\", null, true);\r\n }\r\n }\r\n return output;\r\n }\r\n source[circularReferenceCheck] = true;\r\n objForEachKey(source.aiDataContract, function (field, contract) {\r\n var isRequired = (isFunction(contract)) ? (contract() & FieldType.Required) : (contract & FieldType.Required);\r\n var isHidden = (isFunction(contract)) ? (contract() & FieldType.Hidden) : (contract & FieldType.Hidden);\r\n var isArray = contract & FieldType.Array;\r\n var isPresent = source[field] !== undefined;\r\n var isObj = isObject(source[field]) && source[field] !== null;\r\n if (isRequired && !isPresent && !isArray) {\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.MissingRequiredFieldSpecification, \"Missing required field specification. The field is required but not present on source\", { field: field, name: name });\r\n // If not in debug mode, continue and hope the error is permissible\r\n }\r\n else if (!isHidden) {\r\n var value = void 0;\r\n if (isObj) {\r\n if (isArray) {\r\n // special case; recurse on each object in the source array\r\n value = _serializeArray(source[field], field);\r\n }\r\n else {\r\n // recurse on the source object in this field\r\n value = _serializeObject(source[field], field);\r\n }\r\n }\r\n else {\r\n // assign the source field to the output even if undefined or required\r\n value = source[field];\r\n }\r\n // only emit this field if the value is defined\r\n if (value !== undefined) {\r\n output[field] = value;\r\n }\r\n }\r\n });\r\n delete source[circularReferenceCheck];\r\n return output;\r\n }\r\n function _serializeArray(sources, name) {\r\n var output;\r\n if (!!sources) {\r\n if (!isArray(sources)) {\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.ItemNotInArray, \"This field was specified as an array in the contract but the item is not an array.\\r\\n\", { name: name }, true);\r\n }\r\n else {\r\n output = [];\r\n for (var i = 0; i < sources.length; i++) {\r\n var source = sources[i];\r\n var item = _serializeObject(source, name + \"[\" + i + \"]\");\r\n output.push(item);\r\n }\r\n }\r\n }\r\n return output;\r\n }\r\n function _serializeStringMap(map, expectedType, name) {\r\n var output;\r\n if (map) {\r\n output = {};\r\n objForEachKey(map, function (field, value) {\r\n if (expectedType === \"string\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else if (!value.toString) {\r\n output[field] = \"invalid field: toString() is not defined.\";\r\n }\r\n else {\r\n output[field] = value.toString();\r\n }\r\n }\r\n else if (expectedType === \"number\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else {\r\n var num = parseFloat(value);\r\n if (isNaN(num)) {\r\n output[field] = \"NaN\";\r\n }\r\n else {\r\n output[field] = num;\r\n }\r\n }\r\n }\r\n else {\r\n output[field] = \"invalid field: \" + name + \" is of unknown type.\";\r\n logger.throwInternal(LoggingSeverity.CRITICAL, output[field], null, true);\r\n }\r\n });\r\n }\r\n return output;\r\n }\r\n });\r\n }\r\n /**\r\n * Serializes the current object to a JSON string.\r\n */\r\n Serializer.prototype.serialize = function (input) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n return Serializer;\r\n}());\r\nexport { Serializer };\r\n//# sourceMappingURL=Serializer.js.map","import { EventHelper, getWindow, getDocument, getNavigator, isUndefined, isNullOrUndefined } from '@microsoft/applicationinsights-core-js';\r\nimport dynamicProto from '@microsoft/dynamicproto-js';\r\n/**\r\n * @description Monitors browser for offline events\r\n * @export default - Offline: Static instance of OfflineListener\r\n * @class OfflineListener\r\n */\r\nvar OfflineListener = /** @class */ (function () {\r\n function OfflineListener() {\r\n var _window = getWindow();\r\n var _document = getDocument();\r\n var isListening = false;\r\n var _onlineStatus = true;\r\n dynamicProto(OfflineListener, this, function (_self) {\r\n try {\r\n if (_window) {\r\n if (EventHelper.Attach(_window, 'online', _setOnline)) {\r\n EventHelper.Attach(_window, 'offline', _setOffline);\r\n isListening = true;\r\n }\r\n }\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (!isUndefined(target.ononline)) {\r\n target.ononline = _setOnline;\r\n target.onoffline = _setOffline;\r\n isListening = true;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // this makes react-native less angry\r\n isListening = false;\r\n }\r\n _self.isListening = isListening;\r\n _self.isOnline = function () {\r\n var result = true;\r\n var _navigator = getNavigator();\r\n if (isListening) {\r\n result = _onlineStatus;\r\n }\r\n else if (_navigator && !isNullOrUndefined(_navigator.onLine)) {\r\n result = _navigator.onLine;\r\n }\r\n return result;\r\n };\r\n _self.isOffline = function () {\r\n return !_self.isOnline();\r\n };\r\n function _setOnline() {\r\n _onlineStatus = true;\r\n }\r\n function _setOffline() {\r\n _onlineStatus = false;\r\n }\r\n });\r\n }\r\n OfflineListener.prototype.isOnline = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return false;\r\n };\r\n OfflineListener.prototype.isOffline = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return false;\r\n };\r\n OfflineListener.Offline = new OfflineListener;\r\n return OfflineListener;\r\n}());\r\nexport { OfflineListener };\r\nexport var Offline = OfflineListener.Offline;\r\n//# sourceMappingURL=Offline.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar HashCodeScoreGenerator = /** @class */ (function () {\r\n function HashCodeScoreGenerator() {\r\n }\r\n HashCodeScoreGenerator.prototype.getHashCodeScore = function (key) {\r\n var score = this.getHashCode(key) / HashCodeScoreGenerator.INT_MAX_VALUE;\r\n return score * 100;\r\n };\r\n HashCodeScoreGenerator.prototype.getHashCode = function (input) {\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n while (input.length < HashCodeScoreGenerator.MIN_INPUT_LENGTH) {\r\n input = input.concat(input);\r\n }\r\n // 5381 is a magic number: http://stackoverflow.com/questions/10696223/reason-for-5381-number-in-djb-hash-function\r\n var hash = 5381;\r\n for (var i = 0; i < input.length; ++i) {\r\n hash = ((hash << 5) + hash) + input.charCodeAt(i);\r\n // 'hash' is of number type which means 53 bit integer (http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types-number-type)\r\n // 'hash & hash' will keep it 32 bit integer - just to make it clearer what the result is.\r\n hash = hash & hash;\r\n }\r\n return Math.abs(hash);\r\n };\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n HashCodeScoreGenerator.INT_MAX_VALUE = 2147483647;\r\n // (Magic number) DJB algorithm can't work on shorter strings (results in poor distribution\r\n HashCodeScoreGenerator.MIN_INPUT_LENGTH = 8;\r\n return HashCodeScoreGenerator;\r\n}());\r\nexport { HashCodeScoreGenerator };\r\n//# sourceMappingURL=HashCodeScoreGenerator.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { HashCodeScoreGenerator } from './HashCodeScoreGenerator';\r\nimport { ContextTagKeys } from '@microsoft/applicationinsights-common';\r\nvar SamplingScoreGenerator = /** @class */ (function () {\r\n function SamplingScoreGenerator() {\r\n this.hashCodeGeneragor = new HashCodeScoreGenerator();\r\n this.keys = new ContextTagKeys();\r\n }\r\n SamplingScoreGenerator.prototype.getSamplingScore = function (item) {\r\n var score = 0;\r\n if (item.tags && item.tags[this.keys.userId]) {\r\n score = this.hashCodeGeneragor.getHashCodeScore(item.tags[this.keys.userId]);\r\n }\r\n else if (item.ext && item.ext.user && item.ext.user.id) {\r\n score = this.hashCodeGeneragor.getHashCodeScore(item.ext.user.id);\r\n }\r\n else if (item.tags && item.tags[this.keys.operationId]) {\r\n score = this.hashCodeGeneragor.getHashCodeScore(item.tags[this.keys.operationId]);\r\n }\r\n else if (item.ext && item.ext.telemetryTrace && item.ext.telemetryTrace.traceID) {\r\n score = this.hashCodeGeneragor.getHashCodeScore(item.ext.telemetryTrace.traceID);\r\n }\r\n else {\r\n // tslint:disable-next-line:insecure-random\r\n score = (Math.random() * 100);\r\n }\r\n return score;\r\n };\r\n return SamplingScoreGenerator;\r\n}());\r\nexport { SamplingScoreGenerator };\r\n//# sourceMappingURL=SamplingScoreGenerator.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { SamplingScoreGenerator } from './SamplingScoreGenerators/SamplingScoreGenerator';\r\nimport { Metric } from '@microsoft/applicationinsights-common';\r\nimport { _InternalMessageId, LoggingSeverity, safeGetLogger } from '@microsoft/applicationinsights-core-js';\r\nvar Sample = /** @class */ (function () {\r\n function Sample(sampleRate, logger) {\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n this.INT_MAX_VALUE = 2147483647;\r\n this._logger = logger || safeGetLogger(null);\r\n if (sampleRate > 100 || sampleRate < 0) {\r\n this._logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.SampleRateOutOfRange, \"Sampling rate is out of range (0..100). Sampling will be disabled, you may be sending too much data which may affect your AI service level.\", { samplingRate: sampleRate }, true);\r\n this.sampleRate = 100;\r\n }\r\n this.sampleRate = sampleRate;\r\n this.samplingScoreGenerator = new SamplingScoreGenerator();\r\n }\r\n /**\r\n * Determines if an envelope is sampled in (i.e. will be sent) or not (i.e. will be dropped).\r\n */\r\n Sample.prototype.isSampledIn = function (envelope) {\r\n var samplingPercentage = this.sampleRate; // 0 - 100\r\n var isSampledIn = false;\r\n if (samplingPercentage === null || samplingPercentage === undefined || samplingPercentage >= 100) {\r\n return true;\r\n }\r\n else if (envelope.baseType === Metric.dataType) {\r\n // exclude MetricData telemetry from sampling\r\n return true;\r\n }\r\n isSampledIn = this.samplingScoreGenerator.getSamplingScore(envelope) < samplingPercentage;\r\n return isSampledIn;\r\n };\r\n return Sample;\r\n}());\r\nexport { Sample };\r\n//# sourceMappingURL=Sample.js.map","import { SessionStorageSendBuffer, ArraySendBuffer } from './SendBuffer';\r\nimport { DependencyEnvelopeCreator, EventEnvelopeCreator, ExceptionEnvelopeCreator, MetricEnvelopeCreator, PageViewEnvelopeCreator, PageViewPerformanceEnvelopeCreator, TraceEnvelopeCreator } from './EnvelopeCreator';\r\nimport { Serializer } from './Serializer'; // todo move to channel\r\nimport { DisabledPropertyName, RequestHeaders, PageView, Event, Trace, Exception, Metric, PageViewPerformance, RemoteDependencyData, ProcessLegacy, BreezeChannelIdentifier, SampleRate, isInternalApplicationInsightsEndpoint, utlCanUseSessionStorage, isBeaconApiSupported } from '@microsoft/applicationinsights-common';\r\nimport { _InternalMessageId, LoggingSeverity, getWindow, getNavigator, getJSON, BaseTelemetryPlugin, getGlobalInst, objForEachKey, isNullOrUndefined, arrForEach, dateNow, dumpObj, getExceptionName, getIEVersion, throwError } from '@microsoft/applicationinsights-core-js';\r\nimport { Offline } from './Offline';\r\nimport { Sample } from './TelemetryProcessors/Sample';\r\nimport dynamicProto from '@microsoft/dynamicproto-js';\r\nfunction _getResponseText(xhr) {\r\n try {\r\n return xhr.responseText;\r\n }\r\n catch (e) {\r\n // Best effort, as XHR may throw while XDR wont so just ignore\r\n }\r\n return null;\r\n}\r\nvar Sender = /** @class */ (function (_super) {\r\n __extends(Sender, _super);\r\n function Sender() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 1001;\r\n _this.identifier = BreezeChannelIdentifier;\r\n /**\r\n * Whether XMLHttpRequest object is supported. Older version of IE (8,9) do not support it.\r\n */\r\n _this._XMLHttpRequestSupported = false;\r\n /**\r\n * How many times in a row a retryable error condition has occurred.\r\n */\r\n var _consecutiveErrors;\r\n /**\r\n * The time to retry at in milliseconds from 1970/01/01 (this makes the timer calculation easy).\r\n */\r\n var _retryAt;\r\n /**\r\n * The time of the last send operation.\r\n */\r\n var _lastSend;\r\n /**\r\n * Handle to the timer for delayed sending of batches of data.\r\n */\r\n var _timeoutHandle;\r\n var _serializer;\r\n var _stamp_specific_redirects;\r\n dynamicProto(Sender, _this, function (_self, _base) {\r\n function _notImplemented() {\r\n throwError(\"Method not implemented.\");\r\n }\r\n _self.pause = _notImplemented;\r\n _self.resume = _notImplemented;\r\n _self.flush = function () {\r\n try {\r\n _self.triggerSend(true, null, 1 /* ManualFlush */);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.FlushFailed, \"flush failed, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n _self.onunloadFlush = function () {\r\n if ((_self._senderConfig.onunloadDisableBeacon() === false || _self._senderConfig.isBeaconApiDisabled() === false) && isBeaconApiSupported()) {\r\n try {\r\n _self.triggerSend(true, _beaconSender, 2 /* Unload */);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.FailedToSendQueuedTelemetry, \"failed to flush with beacon sender on page unload, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n else {\r\n _self.flush();\r\n }\r\n };\r\n _self.teardown = _notImplemented;\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n var ctx = _self._getTelCtx();\r\n var identifier = _self.identifier;\r\n _serializer = new Serializer(core.logger);\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = 0;\r\n _self._sender = null;\r\n _stamp_specific_redirects = 0;\r\n var defaultConfig = Sender._getDefaultAppInsightsChannelConfig();\r\n _self._senderConfig = Sender._getEmptyAppInsightsChannelConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _self._senderConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };\r\n });\r\n _self._buffer = (_self._senderConfig.enableSessionStorageBuffer() && utlCanUseSessionStorage())\r\n ? new SessionStorageSendBuffer(_self.diagLog(), _self._senderConfig) : new ArraySendBuffer(_self._senderConfig);\r\n _self._sample = new Sample(_self._senderConfig.samplingPercentage(), _self.diagLog());\r\n if (!_validateInstrumentationKey(config)) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidInstrumentationKey, \"Invalid Instrumentation key \" + config.instrumentationKey);\r\n }\r\n if (!_self._senderConfig.isBeaconApiDisabled() && isBeaconApiSupported()) {\r\n _self._sender = _beaconSender;\r\n }\r\n else {\r\n if (typeof XMLHttpRequest !== undefined) {\r\n var xhr = getGlobalInst(\"XMLHttpRequest\");\r\n if (xhr) {\r\n var testXhr = new xhr();\r\n if (\"withCredentials\" in testXhr) {\r\n _self._sender = _xhrSender;\r\n _self._XMLHttpRequestSupported = true;\r\n }\r\n else if (typeof XDomainRequest !== undefined) {\r\n _self._sender = _xdrSender; // IE 8 and 9\r\n }\r\n }\r\n }\r\n }\r\n };\r\n _self.processTelemetry = function (telemetryItem, itemCtx) {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n try {\r\n // if master off switch is set, don't send any data\r\n if (_self._senderConfig.disableTelemetry()) {\r\n // Do not send/save data\r\n return;\r\n }\r\n // validate input\r\n if (!telemetryItem) {\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSendEmptyTelemetry, \"Cannot send empty telemetry\");\r\n return;\r\n }\r\n // validate event\r\n if (telemetryItem.baseData && !telemetryItem.baseType) {\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidEvent, \"Cannot send telemetry without baseData and baseType\");\r\n return;\r\n }\r\n if (!telemetryItem.baseType) {\r\n // Default\r\n telemetryItem.baseType = \"EventData\";\r\n }\r\n // ensure a sender was constructed\r\n if (!_self._sender) {\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.SenderNotInitialized, \"Sender was not initialized\");\r\n return;\r\n }\r\n // check if this item should be sampled in, else add sampleRate tag\r\n if (!_isSampledIn(telemetryItem)) {\r\n // Item is sampled out, do not send it\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TelemetrySampledAndNotSent, \"Telemetry item was sampled out and not sent\", { SampleRate: _self._sample.sampleRate });\r\n return;\r\n }\r\n else {\r\n telemetryItem[SampleRate] = _self._sample.sampleRate;\r\n }\r\n // construct an envelope that Application Insights endpoint can understand\r\n var aiEnvelope_1 = Sender.constructEnvelope(telemetryItem, _self._senderConfig.instrumentationKey(), itemCtx.diagLog());\r\n if (!aiEnvelope_1) {\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CreateEnvelopeError, \"Unable to create an AppInsights envelope\");\r\n return;\r\n }\r\n var doNotSendItem_1 = false;\r\n // this is for running in legacy mode, where customer may already have a custom initializer present\r\n if (telemetryItem.tags && telemetryItem.tags[ProcessLegacy]) {\r\n arrForEach(telemetryItem.tags[ProcessLegacy], function (callBack) {\r\n try {\r\n if (callBack && callBack(aiEnvelope_1) === false) {\r\n doNotSendItem_1 = true;\r\n itemCtx.diagLog().warnToConsole(\"Telemetry processor check returns false\");\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n });\r\n delete telemetryItem.tags[ProcessLegacy];\r\n }\r\n if (doNotSendItem_1) {\r\n return; // do not send, no need to execute next plugin\r\n }\r\n // check if the incoming payload is too large, truncate if necessary\r\n var payload = _serializer.serialize(aiEnvelope_1);\r\n // flush if we would exceed the max-size limit by adding this item\r\n var bufferPayload = _self._buffer.getItems();\r\n var batch = _self._buffer.batchPayloads(bufferPayload);\r\n if (batch && (batch.length + payload.length > _self._senderConfig.maxBatchSizeInBytes())) {\r\n _self.triggerSend(true, null, 10 /* MaxBatchSize */);\r\n }\r\n // enqueue the payload\r\n _self._buffer.enqueue(payload);\r\n // ensure an invocation timeout is set\r\n _setupTimer();\r\n }\r\n catch (e) {\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.FailedAddingTelemetryToBuffer, \"Failed adding telemetry to the sender's buffer, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n // hand off the telemetry item to the next plugin\r\n _self.processNext(telemetryItem, itemCtx);\r\n };\r\n /**\r\n * xhr state changes\r\n */\r\n _self._xhrReadyStateChange = function (xhr, payload, countOfItemsInPayload) {\r\n if (xhr.readyState === 4) {\r\n var response = null;\r\n if (!_self._appId) {\r\n response = _parseResponse(_getResponseText(xhr) || xhr.response);\r\n if (response && response.appId) {\r\n _self._appId = response.appId;\r\n }\r\n }\r\n if ((xhr.status < 200 || xhr.status >= 300) && xhr.status !== 0) {\r\n // Update End Point url if permanent redirect or moved permanently\r\n // Updates the end point url before retry\r\n if (xhr.status == 301 || xhr.status == 308) {\r\n if (!_checkAndUpdateEndPointUrl(xhr)) {\r\n _self._onError(payload, _formatErrorMessageXhr(xhr));\r\n return;\r\n }\r\n }\r\n if (!_self._senderConfig.isRetryDisabled() && _isRetriable(xhr.status)) {\r\n _resendPayload(payload);\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, \". \" +\r\n \"Response code \" + xhr.status + \". Will retry to send \" + payload.length + \" items.\");\r\n }\r\n else {\r\n _self._onError(payload, _formatErrorMessageXhr(xhr));\r\n }\r\n }\r\n else if (Offline.isOffline()) {\r\n // Note: Don't check for status == 0, since adblock gives this code\r\n if (!_self._senderConfig.isRetryDisabled()) {\r\n var offlineBackOffMultiplier = 10; // arbritrary number\r\n _resendPayload(payload, offlineBackOffMultiplier);\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, \". Offline - Response Code: \" + xhr.status + \". Offline status: \" + Offline.isOffline() + \". Will retry to send \" + payload.length + \" items.\");\r\n }\r\n }\r\n else {\r\n // check if the xhr's responseURL is same as endpoint url\r\n // TODO after 10 redirects force send telemetry with 'redirect=false' as query parameter.\r\n _checkAndUpdateEndPointUrl(xhr);\r\n if (xhr.status === 206) {\r\n if (!response) {\r\n response = _parseResponse(_getResponseText(xhr) || xhr.response);\r\n }\r\n if (response && !_self._senderConfig.isRetryDisabled()) {\r\n _self._onPartialSuccess(payload, response);\r\n }\r\n else {\r\n _self._onError(payload, _formatErrorMessageXhr(xhr));\r\n }\r\n }\r\n else {\r\n _consecutiveErrors = 0;\r\n _self._onSuccess(payload, countOfItemsInPayload);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Immediately send buffered data\r\n * @param async {boolean} - Indicates if the events should be sent asynchronously\r\n * @param forcedSender {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n */\r\n _self.triggerSend = function (async, forcedSender, sendReason) {\r\n if (async === void 0) { async = true; }\r\n try {\r\n // Send data only if disableTelemetry is false\r\n if (!_self._senderConfig.disableTelemetry()) {\r\n if (_self._buffer.count() > 0) {\r\n var payload = _self._buffer.getItems();\r\n _notifySendRequest(sendReason || 0 /* Undefined */, async);\r\n // invoke send\r\n if (forcedSender) {\r\n forcedSender.call(_this, payload, async);\r\n }\r\n else {\r\n _self._sender(payload, async);\r\n }\r\n }\r\n // update lastSend time to enable throttling\r\n _lastSend = +new Date;\r\n }\r\n else {\r\n _self._buffer.clear();\r\n }\r\n clearTimeout(_timeoutHandle);\r\n _timeoutHandle = null;\r\n _retryAt = null;\r\n }\r\n catch (e) {\r\n /* Ignore this error for IE under v10 */\r\n var ieVer = getIEVersion();\r\n if (!ieVer || ieVer > 9) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TransmissionFailed, \"Telemetry transmission failed, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n };\r\n /**\r\n * error handler\r\n */\r\n _self._onError = function (payload, message, event) {\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.OnError, \"Failed to send telemetry.\", { message: message });\r\n _self._buffer.clearSent(payload);\r\n };\r\n /**\r\n * partial success handler\r\n */\r\n _self._onPartialSuccess = function (payload, results) {\r\n var failed = [];\r\n var retry = [];\r\n // Iterate through the reversed array of errors so that splicing doesn't have invalid indexes after the first item.\r\n var errors = results.errors.reverse();\r\n for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {\r\n var error = errors_1[_i];\r\n var extracted = payload.splice(error.index, 1)[0];\r\n if (_isRetriable(error.statusCode)) {\r\n retry.push(extracted);\r\n }\r\n else {\r\n // All other errors, including: 402 (Monthly quota exceeded) and 439 (Too many requests and refresh cache).\r\n failed.push(extracted);\r\n }\r\n }\r\n if (payload.length > 0) {\r\n _self._onSuccess(payload, results.itemsAccepted);\r\n }\r\n if (failed.length > 0) {\r\n _self._onError(failed, _formatErrorMessageXhr(null, ['partial success', results.itemsAccepted, 'of', results.itemsReceived].join(' ')));\r\n }\r\n if (retry.length > 0) {\r\n _resendPayload(retry);\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, \"Partial success. \" +\r\n \"Delivered: \" + payload.length + \", Failed: \" + failed.length +\r\n \". Will retry to send \" + retry.length + \" our of \" + results.itemsReceived + \" items\");\r\n }\r\n };\r\n /**\r\n * success handler\r\n */\r\n _self._onSuccess = function (payload, countOfItemsInPayload) {\r\n _self._buffer.clearSent(payload);\r\n };\r\n /**\r\n * xdr state changes\r\n */\r\n _self._xdrOnLoad = function (xdr, payload) {\r\n var responseText = _getResponseText(xdr);\r\n if (xdr && (responseText + \"\" === \"200\" || responseText === \"\")) {\r\n _consecutiveErrors = 0;\r\n _self._onSuccess(payload, 0);\r\n }\r\n else {\r\n var results = _parseResponse(responseText);\r\n if (results && results.itemsReceived && results.itemsReceived > results.itemsAccepted\r\n && !_self._senderConfig.isRetryDisabled()) {\r\n _self._onPartialSuccess(payload, results);\r\n }\r\n else {\r\n _self._onError(payload, _formatErrorMessageXdr(xdr));\r\n }\r\n }\r\n };\r\n function _isSampledIn(envelope) {\r\n return _self._sample.isSampledIn(envelope);\r\n }\r\n function _checkAndUpdateEndPointUrl(xhr) {\r\n var responseUrl = xhr.responseURL;\r\n // Maximum stamp specific redirects allowed(uncomment this when breeze is ready with not allowing redirects feature)\r\n if (_stamp_specific_redirects >= 10) {\r\n // _self._senderConfig.endpointUrl = () => Sender._getDefaultAppInsightsChannelConfig().endpointUrl()+\"/?redirect=false\";\r\n // _stamp_specific_redirects = 0;\r\n return false;\r\n }\r\n if (!isNullOrUndefined(responseUrl) && responseUrl !== '') {\r\n if (responseUrl !== _self._senderConfig.endpointUrl()) {\r\n _self._senderConfig.endpointUrl = function () { return responseUrl; };\r\n ++_stamp_specific_redirects;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n /**\r\n * Send Beacon API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n * Note: Beacon API does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _beaconSender(payload, isAsync) {\r\n var url = _self._senderConfig.endpointUrl();\r\n var batch = _self._buffer.batchPayloads(payload);\r\n // Chrome only allows CORS-safelisted values for the sendBeacon data argument\r\n // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283\r\n var plainTextBatch = new Blob([batch], { type: 'text/plain;charset=UTF-8' });\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n var queued = getNavigator().sendBeacon(url, plainTextBatch);\r\n if (queued) {\r\n _self._buffer.markAsSent(payload);\r\n // no response from beaconSender, clear buffer\r\n _self._onSuccess(payload, payload.length);\r\n }\r\n else {\r\n _xhrSender(payload, true);\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, \". \" + \"Failed to send telemetry with Beacon API, retried with xhrSender.\");\r\n }\r\n }\r\n /**\r\n * Send XMLHttpRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n */\r\n function _xhrSender(payload, isAsync) {\r\n var xhr = new XMLHttpRequest();\r\n var endPointUrl = _self._senderConfig.endpointUrl();\r\n try {\r\n xhr[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n xhr.open(\"POST\", endPointUrl, isAsync);\r\n xhr.setRequestHeader(\"Content-type\", \"application/json\");\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n xhr.setRequestHeader(RequestHeaders.sdkContextHeader, RequestHeaders.sdkContextHeaderAppIdRequest);\r\n }\r\n xhr.onreadystatechange = function () { return _self._xhrReadyStateChange(xhr, payload, payload.length); };\r\n xhr.onerror = function (event) { return _self._onError(payload, _formatErrorMessageXhr(xhr), event); };\r\n // compose an array of payloads\r\n var batch = _self._buffer.batchPayloads(payload);\r\n xhr.send(batch);\r\n _self._buffer.markAsSent(payload);\r\n }\r\n /**\r\n * Parses the response from the backend.\r\n * @param response - XMLHttpRequest or XDomainRequest response\r\n */\r\n function _parseResponse(response) {\r\n try {\r\n if (response && response !== \"\") {\r\n var result = getJSON().parse(response);\r\n if (result && result.itemsReceived && result.itemsReceived >= result.itemsAccepted &&\r\n result.itemsReceived - result.itemsAccepted === result.errors.length) {\r\n return result;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidBackendResponse, \"Cannot parse the response. \" + getExceptionName(e), {\r\n response: response\r\n });\r\n }\r\n return null;\r\n }\r\n /**\r\n * Resend payload. Adds payload back to the send buffer and setup a send timer (with exponential backoff).\r\n * @param payload\r\n */\r\n function _resendPayload(payload, linearFactor) {\r\n if (linearFactor === void 0) { linearFactor = 1; }\r\n if (!payload || payload.length === 0) {\r\n return;\r\n }\r\n _self._buffer.clearSent(payload);\r\n _consecutiveErrors++;\r\n for (var _i = 0, payload_1 = payload; _i < payload_1.length; _i++) {\r\n var item = payload_1[_i];\r\n _self._buffer.enqueue(item);\r\n }\r\n // setup timer\r\n _setRetryTime(linearFactor);\r\n _setupTimer();\r\n }\r\n /**\r\n * Calculates the time to wait before retrying in case of an error based on\r\n * http://en.wikipedia.org/wiki/Exponential_backoff\r\n */\r\n function _setRetryTime(linearFactor) {\r\n var SlotDelayInSeconds = 10;\r\n var delayInSeconds;\r\n if (_consecutiveErrors <= 1) {\r\n delayInSeconds = SlotDelayInSeconds;\r\n }\r\n else {\r\n var backOffSlot = (Math.pow(2, _consecutiveErrors) - 1) / 2;\r\n // tslint:disable-next-line:insecure-random\r\n var backOffDelay = Math.floor(Math.random() * backOffSlot * SlotDelayInSeconds) + 1;\r\n backOffDelay = linearFactor * backOffDelay;\r\n delayInSeconds = Math.max(Math.min(backOffDelay, 3600), SlotDelayInSeconds);\r\n }\r\n // TODO: Log the backoff time like the C# version does.\r\n var retryAfterTimeSpan = dateNow() + (delayInSeconds * 1000);\r\n // TODO: Log the retry at time like the C# version does.\r\n _retryAt = retryAfterTimeSpan;\r\n }\r\n /**\r\n * Sets up the timer which triggers actually sending the data.\r\n */\r\n function _setupTimer() {\r\n if (!_timeoutHandle) {\r\n var retryInterval = _retryAt ? Math.max(0, _retryAt - dateNow()) : 0;\r\n var timerValue = Math.max(_self._senderConfig.maxBatchInterval(), retryInterval);\r\n _timeoutHandle = setTimeout(function () {\r\n _self.triggerSend(true, null, 1 /* NormalSchedule */);\r\n }, timerValue);\r\n }\r\n }\r\n /**\r\n * Checks if the SDK should resend the payload after receiving this status code from the backend.\r\n * @param statusCode\r\n */\r\n function _isRetriable(statusCode) {\r\n return statusCode === 408 // Timeout\r\n || statusCode === 429 // Too many requests.\r\n || statusCode === 500 // Internal server error.\r\n || statusCode === 503; // Service unavailable.\r\n }\r\n function _formatErrorMessageXhr(xhr, message) {\r\n if (xhr) {\r\n return \"XMLHttpRequest,Status:\" + xhr.status + \",Response:\" + _getResponseText(xhr) || xhr.response || \"\";\r\n }\r\n return message;\r\n }\r\n /**\r\n * Send XDomainRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n *\r\n * Note: XDomainRequest does not support sync requests. This 'isAsync' parameter is added\r\n * to maintain consistency with the xhrSender's contract\r\n * Note: XDomainRequest does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _xdrSender(payload, isAsync) {\r\n var _window = getWindow();\r\n var xdr = new XDomainRequest();\r\n xdr.onload = function () { return _self._xdrOnLoad(xdr, payload); };\r\n xdr.onerror = function (event) { return _self._onError(payload, _formatErrorMessageXdr(xdr), event); };\r\n // XDomainRequest requires the same protocol as the hosting page.\r\n // If the protocol doesn't match, we can't send the telemetry :(.\r\n var hostingProtocol = _window && _window.location && _window.location.protocol || \"\";\r\n if (_self._senderConfig.endpointUrl().lastIndexOf(hostingProtocol, 0) !== 0) {\r\n _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, \". \" +\r\n \"Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.\");\r\n _self._buffer.clear();\r\n return;\r\n }\r\n var endpointUrl = _self._senderConfig.endpointUrl().replace(/^(https?:)/, \"\");\r\n xdr.open('POST', endpointUrl);\r\n // compose an array of payloads\r\n var batch = _self._buffer.batchPayloads(payload);\r\n xdr.send(batch);\r\n _self._buffer.markAsSent(payload);\r\n }\r\n function _formatErrorMessageXdr(xdr, message) {\r\n if (xdr) {\r\n return \"XDomainRequest,Response:\" + _getResponseText(xdr) || \"\";\r\n }\r\n return message;\r\n }\r\n // Using function lookups for backward compatibility as the getNotifyMgr() did not exist until after v2.5.6\r\n function _getNotifyMgr() {\r\n var func = 'getNotifyMgr';\r\n if (_self.core[func]) {\r\n return _self.core[func]();\r\n }\r\n // using _self.core['_notificationManager'] for backward compatibility\r\n return _self.core['_notificationManager'];\r\n }\r\n function _notifySendRequest(sendRequest, isAsync) {\r\n var manager = _getNotifyMgr();\r\n if (manager && manager.eventsSendRequest) {\r\n try {\r\n manager.eventsSendRequest(sendRequest, isAsync);\r\n }\r\n catch (e) {\r\n _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.NotificationException, \"send request notification failed: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n /**\r\n * Validate UUID Format\r\n * Specs taken from https://tools.ietf.org/html/rfc4122 and breeze repo\r\n */\r\n function _validateInstrumentationKey(config) {\r\n var disableIKeyValidationFlag = isNullOrUndefined(config.disableInstrumentationKeyValidation) ? false : config.disableInstrumentationKeyValidation;\r\n if (disableIKeyValidationFlag) {\r\n return true;\r\n }\r\n var UUID_Regex = '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$';\r\n var regexp = new RegExp(UUID_Regex);\r\n return regexp.test(config.instrumentationKey);\r\n }\r\n });\r\n return _this;\r\n }\r\n Sender.constructEnvelope = function (orig, iKey, logger) {\r\n var envelope;\r\n if (iKey !== orig.iKey && !isNullOrUndefined(iKey)) {\r\n envelope = __assign({}, orig, { iKey: iKey });\r\n }\r\n else {\r\n envelope = orig;\r\n }\r\n switch (envelope.baseType) {\r\n case Event.dataType:\r\n return EventEnvelopeCreator.EventEnvelopeCreator.Create(logger, envelope);\r\n case Trace.dataType:\r\n return TraceEnvelopeCreator.TraceEnvelopeCreator.Create(logger, envelope);\r\n case PageView.dataType:\r\n return PageViewEnvelopeCreator.PageViewEnvelopeCreator.Create(logger, envelope);\r\n case PageViewPerformance.dataType:\r\n return PageViewPerformanceEnvelopeCreator.PageViewPerformanceEnvelopeCreator.Create(logger, envelope);\r\n case Exception.dataType:\r\n return ExceptionEnvelopeCreator.ExceptionEnvelopeCreator.Create(logger, envelope);\r\n case Metric.dataType:\r\n return MetricEnvelopeCreator.MetricEnvelopeCreator.Create(logger, envelope);\r\n case RemoteDependencyData.dataType:\r\n return DependencyEnvelopeCreator.DependencyEnvelopeCreator.Create(logger, envelope);\r\n default:\r\n return EventEnvelopeCreator.EventEnvelopeCreator.Create(logger, envelope);\r\n }\r\n };\r\n Sender._getDefaultAppInsightsChannelConfig = function () {\r\n // set default values\r\n return {\r\n endpointUrl: function () { return \"https://dc.services.visualstudio.com/v2/track\"; },\r\n emitLineDelimitedJson: function () { return false; },\r\n maxBatchInterval: function () { return 15000; },\r\n maxBatchSizeInBytes: function () { return 102400; },\r\n disableTelemetry: function () { return false; },\r\n enableSessionStorageBuffer: function () { return true; },\r\n isRetryDisabled: function () { return false; },\r\n isBeaconApiDisabled: function () { return true; },\r\n onunloadDisableBeacon: function () { return false; },\r\n instrumentationKey: function () { return undefined; },\r\n namePrefix: function () { return undefined; },\r\n samplingPercentage: function () { return 100; }\r\n };\r\n };\r\n Sender._getEmptyAppInsightsChannelConfig = function () {\r\n return {\r\n endpointUrl: undefined,\r\n emitLineDelimitedJson: undefined,\r\n maxBatchInterval: undefined,\r\n maxBatchSizeInBytes: undefined,\r\n disableTelemetry: undefined,\r\n enableSessionStorageBuffer: undefined,\r\n isRetryDisabled: undefined,\r\n isBeaconApiDisabled: undefined,\r\n onunloadDisableBeacon: undefined,\r\n instrumentationKey: undefined,\r\n namePrefix: undefined,\r\n samplingPercentage: undefined\r\n };\r\n };\r\n Sender.prototype.pause = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Sender.prototype.resume = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Sender.prototype.flush = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Sender.prototype.onunloadFlush = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Sender.prototype.teardown = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Sender.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Sender.prototype.processTelemetry = function (telemetryItem, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * xhr state changes\r\n */\r\n Sender.prototype._xhrReadyStateChange = function (xhr, payload, countOfItemsInPayload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Immediately send buffered data\r\n * @param async {boolean} - Indicates if the events should be sent asynchronously\r\n * @param forcedSender {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n */\r\n Sender.prototype.triggerSend = function (async, forcedSender, sendReason) {\r\n if (async === void 0) { async = true; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * error handler\r\n */\r\n Sender.prototype._onError = function (payload, message, event) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * partial success handler\r\n */\r\n Sender.prototype._onPartialSuccess = function (payload, results) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * success handler\r\n */\r\n Sender.prototype._onSuccess = function (payload, countOfItemsInPayload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * xdr state changes\r\n */\r\n Sender.prototype._xdrOnLoad = function (xdr, payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return Sender;\r\n}(BaseTelemetryPlugin));\r\nexport { Sender };\r\n//# sourceMappingURL=Sender.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from '@microsoft/dynamicproto-js';\r\nimport { utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage } from '@microsoft/applicationinsights-common';\r\nimport { _InternalMessageId, LoggingSeverity, safeGetCookieMgr, isFunction, newId, dumpObj, getExceptionName, dateNow, safeGetLogger } from '@microsoft/applicationinsights-core-js';\r\nvar cookieNameConst = 'ai_session';\r\nvar Session = /** @class */ (function () {\r\n function Session() {\r\n }\r\n return Session;\r\n}());\r\nexport { Session };\r\nvar _SessionManager = /** @class */ (function () {\r\n function _SessionManager(config, core) {\r\n var self = this;\r\n var _storageNamePrefix;\r\n var _cookieUpdatedTimestamp;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n dynamicProto(_SessionManager, self, function (_self) {\r\n if (!config) {\r\n config = {};\r\n }\r\n if (!isFunction(config.sessionExpirationMs)) {\r\n config.sessionExpirationMs = function () { return _SessionManager.acquisitionSpan; };\r\n }\r\n if (!isFunction(config.sessionRenewalMs)) {\r\n config.sessionRenewalMs = function () { return _SessionManager.renewalSpan; };\r\n }\r\n _self.config = config;\r\n _storageNamePrefix = function () { return _self.config.namePrefix && _self.config.namePrefix() ? cookieNameConst + _self.config.namePrefix() : cookieNameConst; };\r\n _self.automaticSession = new Session();\r\n _self.update = function () {\r\n // Always using Date getTime() as there is a bug in older IE instances that causes the performance timings to have the hi-bit set eg 0x800000000 causing\r\n // the number to be incorrect.\r\n var nowMs = dateNow();\r\n var isExpired = false;\r\n var session = _self.automaticSession;\r\n if (!session.id) {\r\n isExpired = !_initializeAutomaticSession(session, nowMs);\r\n }\r\n var sessionExpirationMs = _self.config.sessionExpirationMs();\r\n if (!isExpired && sessionExpirationMs > 0) {\r\n var sessionRenewalMs = _self.config.sessionRenewalMs();\r\n var timeSinceAcqMs = nowMs - session.acquisitionDate;\r\n var timeSinceRenewalMs = nowMs - session.renewalDate;\r\n isExpired = timeSinceAcqMs < 0 || timeSinceRenewalMs < 0; // expired if the acquisition or last renewal are in the future\r\n isExpired = isExpired || timeSinceAcqMs > sessionExpirationMs; // expired if the time since acquisition is more than session Expiration\r\n isExpired = isExpired || timeSinceRenewalMs > sessionRenewalMs; // expired if the time since last renewal is more than renewal period\r\n }\r\n // renew if acquisitionSpan or renewalSpan has elapsed\r\n if (isExpired) {\r\n // update automaticSession so session state has correct id\r\n _renew(nowMs);\r\n }\r\n else {\r\n // do not update the cookie more often than cookieUpdateInterval\r\n if (!_cookieUpdatedTimestamp || nowMs - _cookieUpdatedTimestamp > _SessionManager.cookieUpdateInterval) {\r\n _setCookie(session, nowMs);\r\n }\r\n }\r\n };\r\n /**\r\n * Record the current state of the automatic session and store it in our cookie string format\r\n * into the browser's local storage. This is used to restore the session data when the cookie\r\n * expires.\r\n */\r\n _self.backup = function () {\r\n var session = _self.automaticSession;\r\n _setStorage(session.id, session.acquisitionDate, session.renewalDate);\r\n };\r\n /**\r\n * Use config.namePrefix + ai_session cookie data or local storage data (when the cookie is unavailable) to\r\n * initialize the automatic session.\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSession(session, now) {\r\n var isValid = false;\r\n var cookieValue = _cookieManager.get(_storageNamePrefix());\r\n if (cookieValue && isFunction(cookieValue.split)) {\r\n isValid = _initializeAutomaticSessionWithData(session, cookieValue);\r\n }\r\n else {\r\n // There's no cookie, but we might have session data in local storage\r\n // This can happen if the session expired or the user actively deleted the cookie\r\n // We only want to recover data if the cookie is missing from expiry. We should respect the user's wishes if the cookie was deleted actively.\r\n // The User class handles this for us and deletes our local storage object if the persistent user cookie was removed.\r\n var storageValue = utlGetLocalStorage(_logger, _storageNamePrefix());\r\n if (storageValue) {\r\n isValid = _initializeAutomaticSessionWithData(session, storageValue);\r\n }\r\n }\r\n return isValid || !!session.id;\r\n }\r\n /**\r\n * Extract id, acquisitionDate, and renewalDate from an ai_session payload string and\r\n * use this data to initialize automaticSession.\r\n *\r\n * @param {string} sessionData - The string stored in an ai_session cookie or local storage backup\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSessionWithData(session, sessionData) {\r\n var isValid = false;\r\n var sessionReset = \", session will be reset\";\r\n var tokens = sessionData.split(\"|\");\r\n if (tokens.length >= 2) {\r\n try {\r\n var acqMs = +tokens[1] || 0;\r\n var renewalMs = +tokens[2] || 0;\r\n if (isNaN(acqMs) || acqMs <= 0) {\r\n _logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.SessionRenewalDateIsZero, \"AI session acquisition date is 0\" + sessionReset);\r\n }\r\n else if (isNaN(renewalMs) || renewalMs <= 0) {\r\n _logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.SessionRenewalDateIsZero, \"AI session renewal date is 0\" + sessionReset);\r\n }\r\n else if (tokens[0]) {\r\n // Everything looks valid so set the values\r\n session.id = tokens[0];\r\n session.acquisitionDate = acqMs;\r\n session.renewalDate = renewalMs;\r\n isValid = true;\r\n }\r\n }\r\n catch (e) {\r\n _logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.ErrorParsingAISessionCookie, \"Error parsing ai_session value [\" + (sessionData || \"\") + \"]\" + sessionReset + \" - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return isValid;\r\n }\r\n function _renew(nowMs) {\r\n var theConfig = (_self.config || {});\r\n var getNewId = (theConfig.getNewId ? theConfig.getNewId() : null) || newId;\r\n _self.automaticSession.id = getNewId(theConfig.idLength ? theConfig.idLength() : 22);\r\n _self.automaticSession.acquisitionDate = nowMs;\r\n _setCookie(_self.automaticSession, nowMs);\r\n // If this browser does not support local storage, fire an internal log to keep track of it at this point\r\n if (!utlCanUseLocalStorage()) {\r\n _logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.BrowserDoesNotSupportLocalStorage, \"Browser does not support local storage. Session durations will be inaccurate.\");\r\n }\r\n }\r\n function _setCookie(session, nowMs) {\r\n var acq = session.acquisitionDate;\r\n session.renewalDate = nowMs;\r\n var config = _self.config;\r\n var renewalPeriodMs = config.sessionRenewalMs();\r\n // Set cookie to expire after the session expiry time passes or the session renewal deadline, whichever is sooner\r\n // Expiring the cookie will cause the session to expire even if the user isn't on the page\r\n var acqTimeLeftMs = (acq + config.sessionExpirationMs()) - nowMs;\r\n var cookie = [session.id, acq, nowMs];\r\n var maxAgeSec = 0;\r\n if (acqTimeLeftMs < renewalPeriodMs) {\r\n maxAgeSec = acqTimeLeftMs / 1000;\r\n }\r\n else {\r\n maxAgeSec = renewalPeriodMs / 1000;\r\n }\r\n var cookieDomain = config.cookieDomain ? config.cookieDomain() : null;\r\n // if sessionExpirationMs is set to 0, it means the expiry is set to 0 for this session cookie\r\n // A cookie with 0 expiry in the session cookie will never expire for that browser session. If the browser is closed the cookie expires. \r\n // Depending on the browser, another instance does not inherit this cookie, however, another tab will\r\n _cookieManager.set(_storageNamePrefix(), cookie.join('|'), config.sessionExpirationMs() > 0 ? maxAgeSec : null, cookieDomain);\r\n _cookieUpdatedTimestamp = nowMs;\r\n }\r\n function _setStorage(guid, acq, renewal) {\r\n // Keep data in local storage to retain the last session id, allowing us to cleanly end the session when it expires\r\n // Browsers that don't support local storage won't be able to end sessions cleanly from the client\r\n // The server will notice this and end the sessions itself, with loss of accurate session duration\r\n utlSetLocalStorage(_logger, _storageNamePrefix(), [guid, acq, renewal].join('|'));\r\n }\r\n });\r\n }\r\n _SessionManager.prototype.update = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Record the current state of the automatic session and store it in our cookie string format\r\n * into the browser's local storage. This is used to restore the session data when the cookie\r\n * expires.\r\n */\r\n _SessionManager.prototype.backup = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n _SessionManager.acquisitionSpan = 86400000; // 24 hours in ms\r\n _SessionManager.renewalSpan = 1800000; // 30 minutes in ms\r\n _SessionManager.cookieUpdateInterval = 60000; // 1 minute in ms\r\n return _SessionManager;\r\n}());\r\nexport { _SessionManager };\r\n//# sourceMappingURL=Session.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Application = /** @class */ (function () {\r\n function Application() {\r\n }\r\n return Application;\r\n}());\r\nexport { Application };\r\n//# sourceMappingURL=Application.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Device = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the Device class\r\n */\r\n function Device() {\r\n // don't attempt to fingerprint browsers\r\n this.id = \"browser\";\r\n // Device type is a dimension in our data platform\r\n // Setting it to 'Browser' allows to separate client and server dependencies/exceptions\r\n this.deviceClass = \"Browser\";\r\n }\r\n return Device;\r\n}());\r\nexport { Device };\r\n//# sourceMappingURL=Device.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Version = \"2.6.1\";\r\nvar Internal = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the internal telemetry data class.\r\n */\r\n function Internal(config) {\r\n this.sdkVersion = (config.sdkExtension && config.sdkExtension() ? config.sdkExtension() + \"_\" : \"\") + \"javascript:\" + Version;\r\n }\r\n return Internal;\r\n}());\r\nexport { Internal };\r\n//# sourceMappingURL=Internal.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlRemoveStorage } from '@microsoft/applicationinsights-common';\r\nimport { _InternalMessageId, LoggingSeverity, safeGetCookieMgr, safeGetLogger, newId, toISOString } from '@microsoft/applicationinsights-core-js';\r\nfunction _validateUserInput(id) {\r\n // Validate:\r\n // 1. Id is a non-empty string.\r\n // 2. It does not contain special characters for cookies.\r\n if (typeof id !== 'string' ||\r\n !id ||\r\n id.match(/,|;|=| |\\|/)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nvar User = /** @class */ (function () {\r\n function User(config, core) {\r\n this.isNewUser = false;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n dynamicProto(User, this, function (_self) {\r\n // get userId or create new one if none exists\r\n var cookie = _cookieManager.get(User.userCookieName);\r\n if (cookie) {\r\n _self.isNewUser = false;\r\n var params = cookie.split(User.cookieSeparator);\r\n if (params.length > 0) {\r\n _self.id = params[0];\r\n }\r\n }\r\n _self.config = config;\r\n if (!_self.id) {\r\n var theConfig = (config || {});\r\n var getNewId = (theConfig.getNewId ? theConfig.getNewId() : null) || newId;\r\n _self.id = getNewId(theConfig.idLength ? config.idLength() : 22);\r\n // without expiration, cookies expire at the end of the session\r\n // set it to 365 days from now\r\n // 365 * 24 * 60 * 60 = 31536000 \r\n var oneYear = 31536000;\r\n var acqStr = toISOString(new Date());\r\n _self.accountAcquisitionDate = acqStr;\r\n _self.isNewUser = true;\r\n var newCookie = [_self.id, acqStr];\r\n _cookieManager.set(User.userCookieName, newCookie.join(User.cookieSeparator), oneYear);\r\n // If we have an config.namePrefix() + ai_session in local storage this means the user actively removed our cookies.\r\n // We should respect their wishes and clear ourselves from local storage\r\n var name_1 = config.namePrefix && config.namePrefix() ? config.namePrefix() + 'ai_session' : 'ai_session';\r\n utlRemoveStorage(_logger, name_1);\r\n }\r\n // We still take the account id from the ctor param for backward compatibility. \r\n // But if the the customer set the accountId through the newer setAuthenticatedUserContext API, we will override it.\r\n _self.accountId = config.accountId ? config.accountId() : undefined;\r\n // Get the auth user id and account id from the cookie if exists\r\n // Cookie is in the pattern: |\r\n var authCookie = _cookieManager.get(User.authUserCookieName);\r\n if (authCookie) {\r\n authCookie = decodeURI(authCookie);\r\n var authCookieString = authCookie.split(User.cookieSeparator);\r\n if (authCookieString[0]) {\r\n _self.authenticatedId = authCookieString[0];\r\n }\r\n if (authCookieString.length > 1 && authCookieString[1]) {\r\n _self.accountId = authCookieString[1];\r\n }\r\n }\r\n _self.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n // Validate inputs to ensure no cookie control characters.\r\n var isInvalidInput = !_validateUserInput(authenticatedUserId) || (accountId && !_validateUserInput(accountId));\r\n if (isInvalidInput) {\r\n _logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.SetAuthContextFailedAccountName, \"Setting auth user context failed. \" +\r\n \"User auth/account id should be of type string, and not contain commas, semi-colons, equal signs, spaces, or vertical-bars.\", true);\r\n return;\r\n }\r\n // Create cookie string.\r\n _self.authenticatedId = authenticatedUserId;\r\n var authCookie = _self.authenticatedId;\r\n if (accountId) {\r\n _self.accountId = accountId;\r\n authCookie = [_self.authenticatedId, _self.accountId].join(User.cookieSeparator);\r\n }\r\n if (storeInCookie) {\r\n // Set the cookie. No expiration date because this is a session cookie (expires when browser closed).\r\n // Encoding the cookie to handle unexpected unicode characters.\r\n _cookieManager.set(User.authUserCookieName, encodeURI(authCookie));\r\n }\r\n };\r\n /**\r\n * Clears the authenticated user id and the account id from the user context.\r\n * @returns {}\r\n */\r\n _self.clearAuthenticatedUserContext = function () {\r\n _self.authenticatedId = null;\r\n _self.accountId = null;\r\n _cookieManager.del(User.authUserCookieName);\r\n };\r\n });\r\n }\r\n /**\r\n * Sets the authenticated user id and the account id in this session.\r\n *\r\n * @param authenticatedUserId {string} - The authenticated user id. A unique and persistent string that represents each authenticated user in the service.\r\n * @param accountId {string} - An optional string to represent the account associated with the authenticated user.\r\n */\r\n User.prototype.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Clears the authenticated user id and the account id from the user context.\r\n * @returns {}\r\n */\r\n User.prototype.clearAuthenticatedUserContext = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n User.cookieSeparator = '|';\r\n User.userCookieName = 'ai_user';\r\n User.authUserCookieName = 'ai_authUser';\r\n return User;\r\n}());\r\nexport { User };\r\n//# sourceMappingURL=User.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Location = /** @class */ (function () {\r\n function Location() {\r\n }\r\n return Location;\r\n}());\r\nexport { Location };\r\n//# sourceMappingURL=Location.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { DataSanitizer } from '@microsoft/applicationinsights-common';\r\nimport { generateW3CId, getLocation } from '@microsoft/applicationinsights-core-js';\r\nvar TelemetryTrace = /** @class */ (function () {\r\n function TelemetryTrace(id, parentId, name, logger) {\r\n var _self = this;\r\n _self.traceID = id || generateW3CId();\r\n _self.parentID = parentId;\r\n _self.name = name;\r\n var location = getLocation();\r\n if (!name && location && location.pathname) {\r\n _self.name = location.pathname;\r\n }\r\n _self.name = DataSanitizer.sanitizeString(logger, _self.name);\r\n }\r\n return TelemetryTrace;\r\n}());\r\nexport { TelemetryTrace };\r\n//# sourceMappingURL=TelemetryTrace.js.map","/**\r\n * TelemetryContext.ts\r\n * @copyright Microsoft 2018\r\n */\r\nimport dynamicProto from '@microsoft/dynamicproto-js';\r\nimport { isString, objKeys, hasWindow, _InternalLogMessage, setValue, getSetValue } from '@microsoft/applicationinsights-core-js';\r\nimport { Session, _SessionManager } from './Context/Session';\r\nimport { Extensions, CtxTagKeys, PageView } from '@microsoft/applicationinsights-common';\r\nimport { Application } from './Context/Application';\r\nimport { Device } from './Context/Device';\r\nimport { Internal } from './Context/Internal';\r\nimport { User } from './Context/User';\r\nimport { Location } from './Context/Location';\r\nimport { TelemetryTrace } from './Context/TelemetryTrace';\r\nvar strExt = \"ext\";\r\nvar strTags = \"tags\";\r\nfunction _removeEmpty(target, name) {\r\n if (target && target[name] && objKeys(target[name]).length === 0) {\r\n delete target[name];\r\n }\r\n}\r\nvar TelemetryContext = /** @class */ (function () {\r\n function TelemetryContext(core, defaultConfig) {\r\n var _this = this;\r\n var logger = core.logger;\r\n this.appId = function () { return null; };\r\n dynamicProto(TelemetryContext, this, function (_self) {\r\n _self.application = new Application();\r\n _self.internal = new Internal(defaultConfig);\r\n if (hasWindow()) {\r\n _self.sessionManager = new _SessionManager(defaultConfig, core);\r\n _self.device = new Device();\r\n _self.location = new Location();\r\n _self.user = new User(defaultConfig, core);\r\n _self.telemetryTrace = new TelemetryTrace(undefined, undefined, undefined, logger);\r\n _self.session = new Session();\r\n }\r\n _self.applySessionContext = function (evt, itemCtx) {\r\n var session = _self.session;\r\n var sessionManager = _self.sessionManager;\r\n // If customer set session info, apply their context; otherwise apply context automatically generated\r\n if (session && isString(session.id)) {\r\n setValue(getSetValue(evt.ext, Extensions.AppExt), \"sesId\", session.id);\r\n }\r\n else if (sessionManager && sessionManager.automaticSession) {\r\n setValue(getSetValue(evt.ext, Extensions.AppExt), \"sesId\", sessionManager.automaticSession.id, isString);\r\n }\r\n };\r\n _self.applyOperatingSystemContxt = function (evt, itemCtx) {\r\n setValue(evt.ext, Extensions.OSExt, _self.os);\r\n };\r\n _self.applyApplicationContext = function (evt, itemCtx) {\r\n var application = _self.application;\r\n if (application) {\r\n // evt.ext.app\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.applicationVersion, application.ver, isString);\r\n setValue(tags, CtxTagKeys.applicationBuild, application.build, isString);\r\n }\r\n };\r\n _self.applyDeviceContext = function (evt, itemCtx) {\r\n var device = _self.device;\r\n if (device) {\r\n // evt.ext.device\r\n var extDevice = getSetValue(getSetValue(evt, strExt), Extensions.DeviceExt);\r\n setValue(extDevice, \"localId\", device.id, isString);\r\n setValue(extDevice, \"ip\", device.ip, isString);\r\n setValue(extDevice, \"model\", device.model, isString);\r\n setValue(extDevice, \"deviceClass\", device.deviceClass, isString);\r\n }\r\n };\r\n _self.applyInternalContext = function (evt, itemCtx) {\r\n var internal = _self.internal;\r\n if (internal) {\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.internalAgentVersion, internal.agentVersion, isString); // not mapped in CS 4.0\r\n setValue(tags, CtxTagKeys.internalSdkVersion, internal.sdkVersion, isString);\r\n if (evt.baseType === _InternalLogMessage.dataType || evt.baseType === PageView.dataType) {\r\n setValue(tags, CtxTagKeys.internalSnippet, internal.snippetVer, isString);\r\n setValue(tags, CtxTagKeys.internalSdkSrc, internal.sdkSrc, isString);\r\n }\r\n }\r\n };\r\n _self.applyLocationContext = function (evt, itemCtx) {\r\n var location = _this.location;\r\n if (location) {\r\n setValue(getSetValue(evt, strTags, []), CtxTagKeys.locationIp, location.ip, isString);\r\n }\r\n };\r\n _self.applyOperationContext = function (evt, itemCtx) {\r\n var telemetryTrace = _self.telemetryTrace;\r\n if (telemetryTrace) {\r\n var extTrace = getSetValue(getSetValue(evt, strExt), Extensions.TraceExt, { traceID: undefined, parentID: undefined });\r\n setValue(extTrace, \"traceID\", telemetryTrace.traceID, isString);\r\n setValue(extTrace, \"name\", telemetryTrace.name, isString);\r\n setValue(extTrace, \"parentID\", telemetryTrace.parentID, isString);\r\n }\r\n };\r\n _self.applyWebContext = function (evt, itemCtx) {\r\n var web = _this.web;\r\n if (web) {\r\n setValue(getSetValue(evt, strExt), Extensions.WebExt, web);\r\n }\r\n };\r\n _self.applyUserContext = function (evt, itemCtx) {\r\n var user = _self.user;\r\n if (user) {\r\n var tags = getSetValue(evt, strTags, []);\r\n // stays in tags\r\n setValue(tags, CtxTagKeys.userAccountId, user.accountId, isString);\r\n // CS 4.0\r\n var extUser = getSetValue(getSetValue(evt, strExt), Extensions.UserExt);\r\n setValue(extUser, \"id\", user.id, isString);\r\n setValue(extUser, \"authId\", user.authenticatedId, isString);\r\n }\r\n };\r\n _self.cleanUp = function (evt, itemCtx) {\r\n var ext = evt.ext;\r\n if (ext) {\r\n _removeEmpty(ext, Extensions.DeviceExt);\r\n _removeEmpty(ext, Extensions.UserExt);\r\n _removeEmpty(ext, Extensions.WebExt);\r\n _removeEmpty(ext, Extensions.OSExt);\r\n _removeEmpty(ext, Extensions.AppExt);\r\n _removeEmpty(ext, Extensions.TraceExt);\r\n }\r\n };\r\n });\r\n }\r\n TelemetryContext.prototype.applySessionContext = function (evt, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyOperatingSystemContxt = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyApplicationContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyDeviceContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyInternalContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyLocationContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyOperationContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyWebContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyUserContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.cleanUp = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return TelemetryContext;\r\n}());\r\nexport { TelemetryContext };\r\n//# sourceMappingURL=TelemetryContext.js.map","/**\r\n * PropertiesPlugin.ts\r\n * @copyright Microsoft 2018\r\n */\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BaseTelemetryPlugin, isNullOrUndefined, _InternalLogMessage, LoggingSeverity, _InternalMessageId, getNavigator, objForEachKey, getSetValue } from '@microsoft/applicationinsights-core-js';\r\nimport { TelemetryContext } from './TelemetryContext';\r\nimport { PageView, BreezeChannelIdentifier, PropertiesPluginIdentifier, getExtensionByName } from '@microsoft/applicationinsights-common';\r\nvar PropertiesPlugin = /** @class */ (function (_super) {\r\n __extends(PropertiesPlugin, _super);\r\n function PropertiesPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 110;\r\n _this.identifier = PropertiesPluginIdentifier;\r\n var _breezeChannel; // optional. If exists, grab appId from it\r\n var _extensionConfig;\r\n dynamicProto(PropertiesPlugin, _this, function (_self, _base) {\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n var ctx = _self._getTelCtx();\r\n var identifier = _self.identifier;\r\n var defaultConfig = PropertiesPlugin.getDefaultConfig();\r\n _extensionConfig = _extensionConfig || {};\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _extensionConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };\r\n });\r\n _self.context = new TelemetryContext(core, _extensionConfig);\r\n _breezeChannel = getExtensionByName(extensions, BreezeChannelIdentifier);\r\n _self.context.appId = function () { return _breezeChannel ? _breezeChannel[\"_appId\"] : null; };\r\n // Test hook to allow accessing the internal values -- explicitly not defined as an available property on the class\r\n _self[\"_extConfig\"] = _extensionConfig;\r\n };\r\n /**\r\n * Add Part A fields to the event\r\n * @param event The event that needs to be processed\r\n */\r\n _self.processTelemetry = function (event, itemCtx) {\r\n if (isNullOrUndefined(event)) {\r\n // TODO(barustum): throw an internal event once we have support for internal logging\r\n }\r\n else {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n // If the envelope is PageView, reset the internal message count so that we can send internal telemetry for the new page.\r\n if (event.name === PageView.envelopeType) {\r\n itemCtx.diagLog().resetInternalMessageCount();\r\n }\r\n var theContext = (_self.context || {});\r\n if (theContext.session) {\r\n // If customer did not provide custom session id update the session manager\r\n if (typeof _self.context.session.id !== \"string\" && theContext.sessionManager) {\r\n theContext.sessionManager.update();\r\n }\r\n }\r\n _processTelemetryInternal(event, itemCtx);\r\n if (theContext.user && theContext.user.isNewUser) {\r\n theContext.user.isNewUser = false;\r\n var message = new _InternalLogMessage(_InternalMessageId.SendBrowserInfoOnUserInit, ((getNavigator() || {}).userAgent || \"\"));\r\n itemCtx.diagLog().logInternalMessage(LoggingSeverity.CRITICAL, message);\r\n }\r\n _self.processNext(event, itemCtx);\r\n }\r\n };\r\n function _processTelemetryInternal(evt, itemCtx) {\r\n // Set Part A fields\r\n getSetValue(evt, \"tags\", []);\r\n getSetValue(evt, \"ext\", {});\r\n var ctx = _self.context;\r\n ctx.applySessionContext(evt, itemCtx);\r\n ctx.applyApplicationContext(evt, itemCtx);\r\n ctx.applyDeviceContext(evt, itemCtx);\r\n ctx.applyOperationContext(evt, itemCtx);\r\n ctx.applyUserContext(evt, itemCtx);\r\n ctx.applyOperatingSystemContxt(evt, itemCtx);\r\n ctx.applyWebContext(evt, itemCtx);\r\n ctx.applyLocationContext(evt, itemCtx); // legacy tags\r\n ctx.applyInternalContext(evt, itemCtx); // legacy tags\r\n ctx.cleanUp(evt, itemCtx);\r\n }\r\n });\r\n return _this;\r\n }\r\n PropertiesPlugin.getDefaultConfig = function () {\r\n var defaultConfig = {\r\n instrumentationKey: function () { return undefined; },\r\n accountId: function () { return null; },\r\n sessionRenewalMs: function () { return 30 * 60 * 1000; },\r\n samplingPercentage: function () { return 100; },\r\n sessionExpirationMs: function () { return 24 * 60 * 60 * 1000; },\r\n cookieDomain: function () { return null; },\r\n sdkExtension: function () { return null; },\r\n isBrowserLinkTrackingEnabled: function () { return false; },\r\n appId: function () { return null; },\r\n namePrefix: function () { return undefined; },\r\n idLength: function () { return 22; },\r\n getNewId: function () { return null; }\r\n };\r\n return defaultConfig;\r\n };\r\n PropertiesPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Add Part A fields to the event\r\n * @param event The event that needs to be processed\r\n */\r\n PropertiesPlugin.prototype.processTelemetry = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return PropertiesPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport default PropertiesPlugin;\r\n//# sourceMappingURL=PropertiesPlugin.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strFunction, strPrototype } from \"./EnvUtils\";\r\nimport { hasOwnProperty } from \"./HelperFuncs\";\r\nvar aiInstrumentHooks = \"_aiHooks\";\r\n;\r\nvar cbNames = [\r\n \"req\", \"rsp\", \"hkErr\", \"fnErr\"\r\n];\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strConstructor = \"constructor\";\r\n/** @ignore */\r\nfunction _arrLoop(arr, fn) {\r\n if (arr) {\r\n for (var lp = 0; lp < arr.length; lp++) {\r\n if (fn(arr[lp], lp)) {\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @ignore */\r\nfunction _doCallbacks(hooks, callDetails, cbArgs, hookCtx, type) {\r\n if (type >= 0 /* Request */ && type <= 2 /* HookError */) {\r\n _arrLoop(hooks, function (hook, idx) {\r\n var cbks = hook.cbks;\r\n var cb = cbks[cbNames[type]];\r\n if (cb) {\r\n // Set the specific hook context implementation using a lazy creation pattern\r\n callDetails.ctx = function () {\r\n var ctx = hookCtx[idx] = (hookCtx[idx] || {});\r\n return ctx;\r\n };\r\n try {\r\n cb.apply(callDetails.inst, cbArgs);\r\n }\r\n catch (err) {\r\n var orgEx = callDetails.err;\r\n try {\r\n // Report Hook error via the callback\r\n var hookErrorCb = cbks[cbNames[2 /* HookError */]];\r\n if (hookErrorCb) {\r\n callDetails.err = err;\r\n hookErrorCb.apply(callDetails.inst, cbArgs);\r\n }\r\n }\r\n catch (e) {\r\n // Not much we can do here -- swallowing the exception to avoid crashing the hosting app\r\n }\r\n finally {\r\n // restore the original exception (if any)\r\n callDetails.err = orgEx;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/** @ignore */\r\nfunction _createFunctionHook(aiHook) {\r\n // Define a temporary method that queues-up a the real method call\r\n return function () {\r\n var funcThis = this;\r\n // Capture the original arguments passed to the method\r\n var orgArgs = arguments;\r\n var hooks = aiHook.h;\r\n var funcArgs = {\r\n name: aiHook.n,\r\n inst: funcThis,\r\n ctx: null,\r\n set: _replaceArg\r\n };\r\n var hookCtx = [];\r\n var cbArgs = _createArgs([funcArgs], orgArgs);\r\n function _createArgs(target, theArgs) {\r\n _arrLoop(theArgs, function (arg) {\r\n target.push(arg);\r\n });\r\n return target;\r\n }\r\n function _replaceArg(idx, value) {\r\n orgArgs = _createArgs([], orgArgs);\r\n orgArgs[idx] = value;\r\n cbArgs = _createArgs([funcArgs], orgArgs);\r\n }\r\n // Call the pre-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 0 /* Request */);\r\n // Call the original function was called\r\n var theFunc = aiHook.f;\r\n try {\r\n funcArgs.rslt = theFunc.apply(funcThis, orgArgs);\r\n }\r\n catch (err) {\r\n // Report the request callback\r\n funcArgs.err = err;\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 3 /* FunctionError */);\r\n // rethrow the original exception so anyone listening for it can catch the exception\r\n throw err;\r\n }\r\n // Call the post-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 1 /* Response */);\r\n return funcArgs.rslt;\r\n };\r\n}\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Object[\"getPrototypeOf\"];\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nfunction _getObjProto(target) {\r\n if (target) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n // target[Constructor] May break if the constructor has been changed or removed\r\n var newProto = target[str__Proto] || target[strPrototype] || target[strConstructor];\r\n if (newProto) {\r\n return newProto;\r\n }\r\n }\r\n return null;\r\n}\r\n/** @ignore */\r\nfunction _getOwner(target, name, checkPrototype) {\r\n var owner = null;\r\n if (target) {\r\n if (hasOwnProperty(target, name)) {\r\n owner = target;\r\n }\r\n else if (checkPrototype) {\r\n owner = _getOwner(_getObjProto(target), name, false);\r\n }\r\n }\r\n return owner;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProto(target, funcName, callbacks) {\r\n if (target) {\r\n return InstrumentFunc(target[strPrototype], funcName, callbacks, false);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProtos(target, funcNames, callbacks) {\r\n if (target) {\r\n return InstrumentFuncs(target[strPrototype], funcNames, callbacks, false);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFunc(target, funcName, callbacks, checkPrototype) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n if (target && funcName && callbacks) {\r\n var owner = _getOwner(target, funcName, checkPrototype);\r\n if (owner) {\r\n var fn = owner[funcName];\r\n if (typeof fn === strFunction) {\r\n var aiHook_1 = fn[aiInstrumentHooks];\r\n if (!aiHook_1) {\r\n // Only hook the function once\r\n aiHook_1 = {\r\n i: 0,\r\n n: funcName,\r\n f: fn,\r\n h: []\r\n };\r\n // Override (hook) the original function\r\n var newFunc = _createFunctionHook(aiHook_1);\r\n newFunc[aiInstrumentHooks] = aiHook_1; // Tag and store the function hooks\r\n owner[funcName] = newFunc;\r\n }\r\n var theHook = {\r\n // tslint:disable:object-literal-shorthand\r\n id: aiHook_1.i,\r\n cbks: callbacks,\r\n rm: function () {\r\n // DO NOT Use () => { shorthand for the function as the this gets replaced\r\n // with the outer this and not the this for theHook instance.\r\n var id = this.id;\r\n _arrLoop(aiHook_1.h, function (hook, idx) {\r\n if (hook.id === id) {\r\n aiHook_1.h.splice(idx, 1);\r\n return 1;\r\n }\r\n });\r\n }\r\n // tslint:enable:object-literal-shorthand\r\n };\r\n aiHook_1.i++;\r\n aiHook_1.h.push(theHook);\r\n return theHook;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFuncs(target, funcNames, callbacks, checkPrototype) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n var hooks = null;\r\n _arrLoop(funcNames, function (funcName) {\r\n var hook = InstrumentFunc(target, funcName, callbacks, checkPrototype);\r\n if (hook) {\r\n if (!hooks) {\r\n hooks = [];\r\n }\r\n hooks.push(hook);\r\n }\r\n });\r\n return hooks;\r\n}\r\n//# sourceMappingURL=InstrumentHooks.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { DataSanitizer, dateTimeUtilsDuration, urlGetAbsoluteUrl, urlGetCompleteUrl, msToTimeSpan } from '@microsoft/applicationinsights-common';\r\nimport { objKeys, arrForEach, isNumber, isString, normalizeJsName, objForEachKey } from '@microsoft/applicationinsights-core-js';\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar strProperties = \"properties\";\r\n/** @ignore */\r\nfunction _calcPerfDuration(resourceEntry, start, end) {\r\n var result = 0;\r\n var from = resourceEntry[start];\r\n var to = resourceEntry[end];\r\n if (from && to) {\r\n result = dateTimeUtilsDuration(from, to);\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfDuration(props, name, resourceEntry, start, end) {\r\n var result = 0;\r\n var value = _calcPerfDuration(resourceEntry, start, end);\r\n if (value) {\r\n result = _setPerfValue(props, name, msToTimeSpan(value));\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfValue(props, name, value) {\r\n var strPerf = \"ajaxPerf\";\r\n var result = 0;\r\n if (props && name && value) {\r\n var perfData = props[strPerf] = (props[strPerf] || {});\r\n perfData[name] = value;\r\n result = 1;\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _populatePerfData(ajaxData, dependency) {\r\n /*\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API\r\n * | -startTime\r\n * | -redirectStart\r\n * | | -redirectEnd\r\n * | | | -fetchStart\r\n * | | | | -domainLookupStart\r\n * | | | | |- domainLookupEnd\r\n * | | | | | | -connectStart\r\n * | | | | | | | -secureConnectionStart\r\n * | | | | | | | | -connectEnd\r\n * | | | | | | | | | -requestStart\r\n * | | | | | | | | | | | -responseStart\r\n * | | | | | | | | | | | | | -responseEnd\r\n * +------------+-+---+----------------+-+--+--------+-+-----------+-+------------+-+\r\n * |--redirect--| |---|--domainLookup--| |--connect--| |--request--| |--response--| |\r\n * |-------------------networkConnect----------------|\r\n * | |---------sentRequest--------|\r\n * |------------------------------------perfTotal-----------------------------------|\r\n */\r\n var resourceEntry = ajaxData.perfTiming;\r\n var props = dependency[strProperties] || {};\r\n var propsSet = 0;\r\n var strName = \"name\";\r\n var strStart = \"Start\";\r\n var strEnd = \"End\";\r\n var strDomainLookup = \"domainLookup\";\r\n var strConnect = \"connect\";\r\n var strRedirect = \"redirect\";\r\n var strRequest = \"request\";\r\n var strResponse = \"response\";\r\n var strDuration = \"duration\";\r\n var strStartTime = \"startTime\";\r\n var strDomainLookupStart = strDomainLookup + strStart;\r\n var strDomainLookupEnd = strDomainLookup + strEnd;\r\n var strConnectStart = strConnect + strStart;\r\n var strConnectEnd = strConnect + strEnd;\r\n var strRequestStart = strRequest + strStart;\r\n var strRequestEnd = strRequest + strEnd;\r\n var strResponseStart = strResponse + strStart;\r\n var strResponseEnd = strResponse + strEnd;\r\n var strRedirectStart = strRedirect + strStart;\r\n var strRedirectEnd = strRedirect = strEnd;\r\n var strTransferSize = \"transferSize\";\r\n var strEncodedBodySize = \"encodedBodySize\";\r\n var strDecodedBodySize = \"decodedBodySize\";\r\n var strServerTiming = \"serverTiming\";\r\n if (resourceEntry) {\r\n // redirect\r\n propsSet |= _setPerfDuration(props, strRedirect, resourceEntry, strRedirectStart, strRedirectEnd);\r\n // domainLookup\r\n propsSet |= _setPerfDuration(props, strDomainLookup, resourceEntry, strDomainLookupStart, strDomainLookupEnd);\r\n // connect\r\n propsSet |= _setPerfDuration(props, strConnect, resourceEntry, strConnectStart, strConnectEnd);\r\n // request\r\n propsSet |= _setPerfDuration(props, strRequest, resourceEntry, strRequestStart, strRequestEnd);\r\n // response\r\n propsSet |= _setPerfDuration(props, strResponse, resourceEntry, strResponseStart, strResponseEnd);\r\n // Network connection time\r\n propsSet |= _setPerfDuration(props, \"networkConnect\", resourceEntry, strStartTime, strConnectEnd);\r\n // Sent Request\r\n propsSet |= _setPerfDuration(props, \"sentRequest\", resourceEntry, strRequestStart, strResponseEnd);\r\n // PerfTotal / Duration\r\n var duration = resourceEntry[strDuration];\r\n if (!duration) {\r\n duration = _calcPerfDuration(resourceEntry, strStartTime, strResponseEnd) || 0;\r\n }\r\n propsSet |= _setPerfValue(props, strDuration, duration);\r\n propsSet |= _setPerfValue(props, \"perfTotal\", duration);\r\n var serverTiming = resourceEntry[strServerTiming];\r\n if (serverTiming) {\r\n var server_1 = {};\r\n arrForEach(serverTiming, function (value, idx) {\r\n var name = normalizeJsName(value[strName] || \"\" + idx);\r\n var newValue = server_1[name] || {};\r\n objForEachKey(value, function (key, val) {\r\n if (key !== strName && isString(val) || isNumber(val)) {\r\n if (newValue[key]) {\r\n val = newValue[key] + \";\" + val;\r\n }\r\n if (val || !isString(val)) {\r\n // Only set the value if it has a value and it's not an empty string\r\n newValue[key] = val;\r\n }\r\n }\r\n });\r\n server_1[name] = newValue;\r\n });\r\n propsSet |= _setPerfValue(props, strServerTiming, server_1);\r\n }\r\n propsSet |= _setPerfValue(props, strTransferSize, resourceEntry[strTransferSize]);\r\n propsSet |= _setPerfValue(props, strEncodedBodySize, resourceEntry[strEncodedBodySize]);\r\n propsSet |= _setPerfValue(props, strDecodedBodySize, resourceEntry[strDecodedBodySize]);\r\n }\r\n else {\r\n if (ajaxData.perfMark) {\r\n propsSet |= _setPerfValue(props, \"missing\", ajaxData.perfAttempts);\r\n }\r\n }\r\n if (propsSet) {\r\n dependency[strProperties] = props;\r\n }\r\n}\r\nvar XHRMonitoringState = /** @class */ (function () {\r\n function XHRMonitoringState() {\r\n var self = this;\r\n self.openDone = false;\r\n self.setRequestHeaderDone = false;\r\n self.sendDone = false;\r\n self.abortDone = false;\r\n // True, if onreadyStateChangeCallback function attached to xhr, otherwise false\r\n self.stateChangeAttached = false;\r\n }\r\n return XHRMonitoringState;\r\n}());\r\nexport { XHRMonitoringState };\r\nvar ajaxRecord = /** @class */ (function () {\r\n function ajaxRecord(traceID, spanID, logger) {\r\n var self = this;\r\n var _logger = logger;\r\n var strResponseText = \"responseText\";\r\n // Assigning the initial/default values within the constructor to avoid typescript from creating a bunch of\r\n // this.XXXX = null\r\n self.perfMark = null;\r\n self.completed = false;\r\n self.requestHeadersSize = null;\r\n self.requestHeaders = null;\r\n self.responseReceivingDuration = null;\r\n self.callbackDuration = null;\r\n self.ajaxTotalDuration = null;\r\n self.aborted = 0;\r\n self.pageUrl = null;\r\n self.requestUrl = null;\r\n self.requestSize = 0;\r\n self.method = null;\r\n self.status = null;\r\n self.requestSentTime = null;\r\n self.responseStartedTime = null;\r\n self.responseFinishedTime = null;\r\n self.callbackFinishedTime = null;\r\n self.endTime = null;\r\n self.xhrMonitoringState = new XHRMonitoringState();\r\n self.clientFailure = 0;\r\n self.traceID = traceID;\r\n self.spanID = spanID;\r\n dynamicProto(ajaxRecord, self, function (self) {\r\n self.getAbsoluteUrl = function () {\r\n return self.requestUrl ? urlGetAbsoluteUrl(self.requestUrl) : null;\r\n };\r\n self.getPathName = function () {\r\n return self.requestUrl ? DataSanitizer.sanitizeUrl(_logger, urlGetCompleteUrl(self.method, self.requestUrl)) : null;\r\n };\r\n self.CreateTrackItem = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n // round to 3 decimal points\r\n self.ajaxTotalDuration = Math.round(dateTimeUtilsDuration(self.requestSentTime, self.responseFinishedTime) * 1000) / 1000;\r\n if (self.ajaxTotalDuration < 0) {\r\n return null;\r\n }\r\n var dependency = (_a = {\r\n id: \"|\" + self.traceID + \".\" + self.spanID,\r\n target: self.getAbsoluteUrl(),\r\n name: self.getPathName(),\r\n type: ajaxType,\r\n startTime: null,\r\n duration: self.ajaxTotalDuration,\r\n success: (+(self.status)) >= 200 && (+(self.status)) < 400,\r\n responseCode: (+(self.status)),\r\n method: self.method\r\n },\r\n _a[strProperties] = { HttpMethod: self.method },\r\n _a);\r\n if (self.requestSentTime) {\r\n // Set the correct dependency start time\r\n dependency.startTime = new Date();\r\n dependency.startTime.setTime(self.requestSentTime);\r\n }\r\n // Add Ajax perf details if available\r\n _populatePerfData(self, dependency);\r\n if (enableRequestHeaderTracking) {\r\n if (objKeys(self.requestHeaders).length > 0) {\r\n dependency[strProperties] = dependency[strProperties] || {};\r\n dependency[strProperties].requestHeaders = self.requestHeaders;\r\n }\r\n }\r\n if (getResponse) {\r\n var response = getResponse();\r\n if (response) {\r\n // enrich dependency target with correlation context from the server\r\n var correlationContext = response.correlationContext;\r\n if (correlationContext) {\r\n dependency.correlationContext = /* dependency.target + \" | \" + */ correlationContext;\r\n }\r\n if (response.headerMap) {\r\n if (objKeys(response.headerMap).length > 0) {\r\n dependency[strProperties] = dependency[strProperties] || {};\r\n dependency[strProperties].responseHeaders = response.headerMap;\r\n }\r\n }\r\n if (self.status >= 400) {\r\n var responseType = response.type;\r\n dependency[strProperties] = dependency[strProperties] || {};\r\n if (responseType === \"\" || responseType === \"text\") {\r\n dependency[strProperties][strResponseText] = response[strResponseText] ? response.statusText + \" - \" + response[strResponseText] : response.statusText;\r\n }\r\n if (responseType === \"json\") {\r\n dependency[strProperties][strResponseText] = response.response ? response.statusText + \" - \" + JSON.stringify(response.response) : response.statusText;\r\n }\r\n }\r\n }\r\n }\r\n return dependency;\r\n var _a;\r\n };\r\n });\r\n }\r\n ajaxRecord.prototype.getAbsoluteUrl = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n ajaxRecord.prototype.getPathName = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n ajaxRecord.prototype.CreateTrackItem = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n return ajaxRecord;\r\n}());\r\nexport { ajaxRecord };\r\n;\r\n//# sourceMappingURL=ajaxRecord.js.map","import { generateW3CId } from '@microsoft/applicationinsights-core-js';\r\nvar Traceparent = /** @class */ (function () {\r\n function Traceparent(traceId, spanId) {\r\n var self = this;\r\n self.traceFlag = Traceparent.DEFAULT_TRACE_FLAG;\r\n self.version = Traceparent.DEFAULT_VERSION;\r\n if (traceId && Traceparent.isValidTraceId(traceId)) {\r\n self.traceId = traceId;\r\n }\r\n else {\r\n self.traceId = generateW3CId();\r\n }\r\n if (spanId && Traceparent.isValidSpanId(spanId)) {\r\n self.spanId = spanId;\r\n }\r\n else {\r\n self.spanId = generateW3CId().substr(0, 16);\r\n }\r\n }\r\n Traceparent.isValidTraceId = function (id) {\r\n return id.match(/^[0-9a-f]{32}$/) && id !== \"00000000000000000000000000000000\";\r\n };\r\n Traceparent.isValidSpanId = function (id) {\r\n return id.match(/^[0-9a-f]{16}$/) && id !== \"0000000000000000\";\r\n };\r\n Traceparent.prototype.toString = function () {\r\n var self = this;\r\n return self.version + \"-\" + self.traceId + \"-\" + self.spanId + \"-\" + self.traceFlag;\r\n };\r\n Traceparent.DEFAULT_TRACE_FLAG = \"01\";\r\n Traceparent.DEFAULT_VERSION = \"00\";\r\n return Traceparent;\r\n}());\r\nexport { Traceparent };\r\n//# sourceMappingURL=TraceParent.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { RequestHeaders, CorrelationIdHelper, TelemetryItemCreator, RemoteDependencyData, dateTimeUtilsNow, DisabledPropertyName, PropertiesPluginIdentifier, DistributedTracingModes } from '@microsoft/applicationinsights-common';\r\nimport { isNullOrUndefined, arrForEach, isString, strTrim, isFunction, LoggingSeverity, _InternalMessageId, BaseTelemetryPlugin, getLocation, getGlobal, strUndefined, strPrototype, InstrumentFunc, InstrumentProto, getPerformance, objForEachKey, generateW3CId, getIEVersion, dumpObj } from '@microsoft/applicationinsights-core-js';\r\nimport { ajaxRecord } from './ajaxRecord';\r\nimport { EventHelper } from './ajaxUtils';\r\nimport { Traceparent } from './TraceParent';\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar AJAX_MONITOR_PREFIX = \"ai.ajxmn.\";\r\nvar strDiagLog = \"diagLog\";\r\nvar strAjaxData = \"ajaxData\";\r\nvar strThrowInternal = \"throwInternal\";\r\nvar strFetch = \"fetch\";\r\n// Using a global value so that to handle same iKey with multiple app insights instances (mostly for testing)\r\nvar _markCount = 0;\r\n/** @Ignore */\r\nfunction _supportsFetch() {\r\n var _global = getGlobal();\r\n if (!_global ||\r\n isNullOrUndefined(_global.Request) ||\r\n isNullOrUndefined(_global.Request[strPrototype]) ||\r\n isNullOrUndefined(_global[strFetch])) {\r\n return null;\r\n }\r\n return _global[strFetch];\r\n}\r\n/**\r\n * Determines whether ajax monitoring can be enabled on this document\r\n * @returns True if Ajax monitoring is supported on this page, otherwise false\r\n * @ignore\r\n */\r\nfunction _supportsAjaxMonitoring(ajaxMonitorInstance) {\r\n var result = false;\r\n if (typeof XMLHttpRequest !== strUndefined && !isNullOrUndefined(XMLHttpRequest)) {\r\n var proto = XMLHttpRequest[strPrototype];\r\n result = !isNullOrUndefined(proto) &&\r\n !isNullOrUndefined(proto.open) &&\r\n !isNullOrUndefined(proto.send) &&\r\n !isNullOrUndefined(proto.abort);\r\n }\r\n var ieVer = getIEVersion();\r\n if (ieVer && ieVer < 9) {\r\n result = false;\r\n }\r\n if (result) {\r\n // Disable if the XmlHttpRequest can't be extended or hooked\r\n try {\r\n var xhr = new XMLHttpRequest();\r\n xhr[strAjaxData] = {};\r\n // Check that we can update the prototype\r\n var theOpen = XMLHttpRequest[strPrototype].open;\r\n XMLHttpRequest[strPrototype].open = theOpen;\r\n }\r\n catch (e) {\r\n // We can't decorate the xhr object so disable monitoring\r\n result = false;\r\n _throwInternalCritical(ajaxMonitorInstance, _InternalMessageId.FailedMonitorAjaxOpen, \"Failed to enable XMLHttpRequest monitoring, extension is not supported\", {\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n return result;\r\n}\r\n/** @Ignore */\r\nfunction _getFailedAjaxDiagnosticsMessage(xhr) {\r\n var result = \"\";\r\n try {\r\n if (!isNullOrUndefined(xhr) &&\r\n !isNullOrUndefined(xhr[strAjaxData]) &&\r\n !isNullOrUndefined(xhr[strAjaxData].requestUrl)) {\r\n result += \"(url: '\" + xhr[strAjaxData].requestUrl + \"')\";\r\n }\r\n }\r\n catch (e) { }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _throwInternalCritical(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n ajaxMonitorInstance[strDiagLog]()[strThrowInternal](LoggingSeverity.CRITICAL, msgId, message, properties, isUserAct);\r\n}\r\n/** @ignore */\r\nfunction _throwInternalWarning(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n ajaxMonitorInstance[strDiagLog]()[strThrowInternal](LoggingSeverity.WARNING, msgId, message, properties, isUserAct);\r\n}\r\n/** @Ignore */\r\nfunction _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {\r\n // tslint:disable-next-line\r\n return function (args) {\r\n _throwInternalCritical(ajaxMonitorInstance, internalMessage, message, {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(args.inst),\r\n exception: dumpObj(args.err)\r\n });\r\n };\r\n}\r\nfunction _indexOf(value, match) {\r\n if (value && match) {\r\n return value.indexOf(match);\r\n }\r\n return -1;\r\n}\r\nvar AjaxMonitor = /** @class */ (function (_super) {\r\n __extends(AjaxMonitor, _super);\r\n function AjaxMonitor() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AjaxMonitor.identifier;\r\n _this.priority = 120;\r\n var strTrackDependencyDataInternal = \"trackDependencyDataInternal\"; // Using string to help with minification\r\n var location = getLocation();\r\n var _fetchInitialized = false; // fetch monitoring initialized\r\n var _xhrInitialized = false; // XHR monitoring initialized\r\n var _currentWindowHost = location && location.host && location.host.toLowerCase();\r\n var _config = AjaxMonitor.getEmptyConfig();\r\n var _enableRequestHeaderTracking = false;\r\n var _trackAjaxAttempts = 0;\r\n var _context;\r\n var _isUsingW3CHeaders;\r\n var _isUsingAIHeaders;\r\n var _markPrefix;\r\n var _enableAjaxPerfTracking = false;\r\n var _maxAjaxCallsPerView = 0;\r\n var _enableResponseHeaderTracking = false;\r\n var _hooks = [];\r\n var _disabledUrls = {};\r\n dynamicProto(AjaxMonitor, _this, function (_self, base) {\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (!_self.isInitialized()) {\r\n base.initialize(config, core, extensions, pluginChain);\r\n var ctx_1 = _self._getTelCtx();\r\n var defaultConfig = AjaxMonitor.getDefaultConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _config[field] = ctx_1.getConfig(AjaxMonitor.identifier, field, value);\r\n });\r\n var distributedTracingMode = _config.distributedTracingMode;\r\n _enableRequestHeaderTracking = _config.enableRequestHeaderTracking;\r\n _enableAjaxPerfTracking = _config.enableAjaxPerfTracking;\r\n _maxAjaxCallsPerView = _config.maxAjaxCallsPerView;\r\n _enableResponseHeaderTracking = _config.enableResponseHeaderTracking;\r\n _isUsingAIHeaders = distributedTracingMode === DistributedTracingModes.AI || distributedTracingMode === DistributedTracingModes.AI_AND_W3C;\r\n _isUsingW3CHeaders = distributedTracingMode === DistributedTracingModes.AI_AND_W3C || distributedTracingMode === DistributedTracingModes.W3C;\r\n if (_enableAjaxPerfTracking) {\r\n var iKey = config.instrumentationKey || \"unkwn\";\r\n if (iKey.length > 5) {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey.substring(iKey.length - 5) + \".\";\r\n }\r\n else {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey + \".\";\r\n }\r\n }\r\n if (_config.disableAjaxTracking === false) {\r\n _instrumentXhr();\r\n }\r\n _instrumentFetch();\r\n if (extensions.length > 0 && extensions) {\r\n var propExt = void 0, extIx = 0;\r\n while (!propExt && extIx < extensions.length) {\r\n if (extensions[extIx] && extensions[extIx].identifier === PropertiesPluginIdentifier) {\r\n propExt = extensions[extIx];\r\n }\r\n extIx++;\r\n }\r\n if (propExt) {\r\n _context = propExt.context; // we could move IPropertiesPlugin to common as well\r\n }\r\n }\r\n }\r\n };\r\n _self.teardown = function () {\r\n // Remove all instrumentation hooks\r\n arrForEach(_hooks, function (fn) {\r\n fn.rm();\r\n });\r\n _hooks = [];\r\n _fetchInitialized = false;\r\n _xhrInitialized = false;\r\n _self.setInitialized(false);\r\n };\r\n _self.trackDependencyData = function (dependency, properties) {\r\n _self[strTrackDependencyDataInternal](dependency, properties);\r\n };\r\n _self.includeCorrelationHeaders = function (ajaxData, input, init, xhr) {\r\n // Test Hook to allow the overriding of the location host\r\n var currentWindowHost = _self[\"_currentWindowHost\"] || _currentWindowHost;\r\n if (input) {\r\n if (CorrelationIdHelper.canIncludeCorrelationHeader(_config, ajaxData.getAbsoluteUrl(), currentWindowHost)) {\r\n if (!init) {\r\n init = {};\r\n }\r\n // init headers override original request headers\r\n // so, if they exist use only them, otherwise use request's because they should have been applied in the first place\r\n // not using original request headers will result in them being lost\r\n init.headers = new Headers(init.headers || (input instanceof Request ? (input.headers || {}) : {}));\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData.traceID + \".\" + ajaxData.spanID;\r\n init.headers.set(RequestHeaders.requestIdHeader, id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.requestIdHeader] = id;\r\n }\r\n }\r\n var appId = _config.appId || (_context && _context.appId());\r\n if (appId) {\r\n init.headers.set(RequestHeaders.requestContextHeader, RequestHeaders.requestContextAppIdFormat + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.requestContextHeader] = RequestHeaders.requestContextAppIdFormat + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceparent = new Traceparent(ajaxData.traceID, ajaxData.spanID);\r\n init.headers.set(RequestHeaders.traceParentHeader, traceparent.toString());\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.traceParentHeader] = traceparent.toString();\r\n }\r\n }\r\n }\r\n return init;\r\n }\r\n else if (xhr) {\r\n if (CorrelationIdHelper.canIncludeCorrelationHeader(_config, ajaxData.getAbsoluteUrl(), currentWindowHost)) {\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData.traceID + \".\" + ajaxData.spanID;\r\n xhr.setRequestHeader(RequestHeaders.requestIdHeader, id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.requestIdHeader] = id;\r\n }\r\n }\r\n var appId = _config.appId || (_context && _context.appId());\r\n if (appId) {\r\n xhr.setRequestHeader(RequestHeaders.requestContextHeader, RequestHeaders.requestContextAppIdFormat + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.requestContextHeader] = RequestHeaders.requestContextAppIdFormat + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceparent = new Traceparent(ajaxData.traceID, ajaxData.spanID);\r\n xhr.setRequestHeader(RequestHeaders.traceParentHeader, traceparent.toString());\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.traceParentHeader] = traceparent.toString();\r\n }\r\n }\r\n }\r\n return xhr;\r\n }\r\n return undefined;\r\n };\r\n _self[strTrackDependencyDataInternal] = function (dependency, properties, systemProperties) {\r\n if (_maxAjaxCallsPerView === -1 || _trackAjaxAttempts < _maxAjaxCallsPerView) {\r\n // Hack since expected format in w3c mode is |abc.def.\r\n // Non-w3c format is |abc.def\r\n // @todo Remove if better solution is available, e.g. handle in portal\r\n if ((_config.distributedTracingMode === DistributedTracingModes.W3C\r\n || _config.distributedTracingMode === DistributedTracingModes.AI_AND_W3C)\r\n && typeof dependency.id === \"string\" && dependency.id[dependency.id.length - 1] !== \".\") {\r\n dependency.id += \".\";\r\n }\r\n if (isNullOrUndefined(dependency.startTime)) {\r\n dependency.startTime = new Date();\r\n }\r\n var item = TelemetryItemCreator.create(dependency, RemoteDependencyData.dataType, RemoteDependencyData.envelopeType, _self[strDiagLog](), properties, systemProperties);\r\n _self.core.track(item);\r\n }\r\n else if (_trackAjaxAttempts === _maxAjaxCallsPerView) {\r\n _throwInternalCritical(_self, _InternalMessageId.MaxAjaxPerPVExceeded, \"Maximum ajax per page view limit reached, ajax monitoring is paused until the next trackPageView(). In order to increase the limit set the maxAjaxCallsPerView configuration parameter.\", true);\r\n }\r\n ++_trackAjaxAttempts;\r\n };\r\n // Fetch Stuff\r\n function _instrumentFetch() {\r\n var fetch = _supportsFetch();\r\n if (!fetch) {\r\n return;\r\n }\r\n var global = getGlobal();\r\n var isPolyfill = fetch.polyfill;\r\n if (_config.disableFetchTracking === false) {\r\n _hooks.push(InstrumentFunc(global, strFetch, {\r\n // Add request hook\r\n req: function (callDetails, input, init) {\r\n var fetchData;\r\n if (_fetchInitialized &&\r\n !_isDisabledRequest(null, input, init) &&\r\n // If we have a polyfil and XHR instrumented then let XHR report otherwise we get duplicates\r\n !(isPolyfill && _xhrInitialized)) {\r\n var ctx = callDetails.ctx();\r\n fetchData = _createFetchRecord(input, init);\r\n var newInit = _self.includeCorrelationHeaders(fetchData, input, init);\r\n if (newInit !== init) {\r\n callDetails.set(1, newInit);\r\n }\r\n ctx.data = fetchData;\r\n }\r\n },\r\n rsp: function (callDetails, input) {\r\n var fetchData = callDetails.ctx().data;\r\n if (fetchData) {\r\n // Replace the result with the new promise from this code\r\n callDetails.rslt = callDetails.rslt.then(function (response) {\r\n _reportFetchMetrics(callDetails, (response || {}).status, response, fetchData, function () {\r\n var ajaxResponse = {\r\n statusText: response.statusText,\r\n headerMap: null,\r\n correlationContext: _getFetchCorrelationContext(response)\r\n };\r\n if (_enableResponseHeaderTracking) {\r\n var responseHeaderMap_1 = {};\r\n response.headers.forEach(function (value, name) {\r\n responseHeaderMap_1[name] = value;\r\n });\r\n ajaxResponse.headerMap = responseHeaderMap_1;\r\n }\r\n return ajaxResponse;\r\n });\r\n return response;\r\n })[\"catch\"](function (reason) {\r\n _reportFetchMetrics(callDetails, 0, input, fetchData, null, { error: reason.message });\r\n throw reason;\r\n });\r\n }\r\n },\r\n // Create an error callback to report any hook errors\r\n hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxOpen, \"Failed to monitor Window.fetch, monitoring data for this fetch call may be incorrect.\")\r\n }));\r\n _fetchInitialized = true;\r\n }\r\n else if (isPolyfill) {\r\n // If fetch is a polyfill we need to capture the request to ensure that we correctly track\r\n // disabled request URLS (i.e. internal urls) to ensure we don't end up in a constant loop\r\n // of reporting ourselves, for example React Native uses a polyfill for fetch\r\n // Note: Polyfill implementations that don't support the \"poyyfill\" tag are not supported\r\n // the workaround is to add a polyfill property to your fetch implementation before initializing\r\n // App Insights\r\n _hooks.push(InstrumentFunc(global, strFetch, {\r\n req: function (callDetails, input, init) {\r\n // Just call so that we record any disabled URL\r\n _isDisabledRequest(null, input, init);\r\n }\r\n }));\r\n }\r\n if (isPolyfill) {\r\n // retag the instrumented fetch with the same polyfill settings this is mostly for testing\r\n // But also supports multiple App Insights usages\r\n global[strFetch].polyfill = isPolyfill;\r\n }\r\n }\r\n function _hookProto(target, funcName, callbacks) {\r\n _hooks.push(InstrumentProto(target, funcName, callbacks));\r\n }\r\n function _instrumentXhr() {\r\n if (_supportsAjaxMonitoring(_self) && !_xhrInitialized) {\r\n // Instrument open\r\n _hookProto(XMLHttpRequest, \"open\", {\r\n req: function (args, method, url, async) {\r\n var xhr = args.inst;\r\n var ajaxData = xhr[strAjaxData];\r\n if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, true) &&\r\n (!ajaxData || !ajaxData.xhrMonitoringState.openDone)) {\r\n _openHandler(xhr, method, url, async);\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxOpen, \"Failed to monitor XMLHttpRequest.open, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n // Instrument send\r\n _hookProto(XMLHttpRequest, \"send\", {\r\n req: function (args, context) {\r\n var xhr = args.inst;\r\n var ajaxData = xhr[strAjaxData];\r\n if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState.sendDone) {\r\n _createMarkId(\"xhr\", ajaxData);\r\n ajaxData.requestSentTime = dateTimeUtilsNow();\r\n xhr = _self.includeCorrelationHeaders(ajaxData, undefined, undefined, xhr);\r\n ajaxData.xhrMonitoringState.sendDone = true;\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxSend, \"Failed to monitor XMLHttpRequest, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n // Instrument abort\r\n _hookProto(XMLHttpRequest, \"abort\", {\r\n req: function (args) {\r\n var xhr = args.inst;\r\n var ajaxData = xhr[strAjaxData];\r\n if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState.abortDone) {\r\n ajaxData.aborted = 1;\r\n ajaxData.xhrMonitoringState.abortDone = true;\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxAbort, \"Failed to monitor XMLHttpRequest.abort, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n // Instrument setRequestHeader\r\n if (_enableRequestHeaderTracking) {\r\n _hookProto(XMLHttpRequest, \"setRequestHeader\", {\r\n req: function (args, header, value) {\r\n var xhr = args.inst;\r\n if (_isMonitoredXhrInstance(xhr)) {\r\n xhr[strAjaxData].requestHeaders[header] = value;\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxSetRequestHeader, \"Failed to monitor XMLHttpRequest.setRequestHeader, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n }\r\n _xhrInitialized = true;\r\n }\r\n }\r\n function _isDisabledRequest(xhr, request, init) {\r\n var isDisabled = false;\r\n var theUrl = ((!isString(request) ? (request || {}).url || \"\" : request) || \"\").toLowerCase();\r\n var idx = _indexOf(theUrl, \"?\");\r\n var idx2 = _indexOf(theUrl, \"#\");\r\n if (idx === -1 || (idx2 !== -1 && idx2 < idx)) {\r\n idx = idx2;\r\n }\r\n if (idx !== -1) {\r\n // Strip off any Query string\r\n theUrl = theUrl.substring(0, idx);\r\n }\r\n // check that this instance is not not used by ajax call performed inside client side monitoring to send data to collector\r\n if (!isNullOrUndefined(xhr)) {\r\n // Look on the XMLHttpRequest of the URL string value\r\n isDisabled = xhr[DisabledPropertyName] === true || theUrl[DisabledPropertyName] === true;\r\n }\r\n else if (!isNullOrUndefined(request)) {\r\n // Look for DisabledPropertyName in either Request or RequestInit\r\n isDisabled = (typeof request === 'object' ? request[DisabledPropertyName] === true : false) ||\r\n (init ? init[DisabledPropertyName] === true : false);\r\n }\r\n if (isDisabled) {\r\n // Add the disabled url if not present\r\n if (!_disabledUrls[theUrl]) {\r\n _disabledUrls[theUrl] = 1;\r\n }\r\n }\r\n else {\r\n // Check to see if the url is listed as disabled\r\n if (_disabledUrls[theUrl]) {\r\n isDisabled = true;\r\n }\r\n }\r\n return isDisabled;\r\n }\r\n /// Verifies that particalar instance of XMLHttpRequest needs to be monitored\r\n /// Optional parameter. True if ajaxData must be excluded from verification\r\n /// True if instance needs to be monitored, otherwise false\r\n function _isMonitoredXhrInstance(xhr, excludeAjaxDataValidation) {\r\n var ajaxValidation = true;\r\n var initialized = _xhrInitialized;\r\n if (!isNullOrUndefined(xhr)) {\r\n ajaxValidation = excludeAjaxDataValidation === true || !isNullOrUndefined(xhr[strAjaxData]);\r\n }\r\n // checking to see that all interested functions on xhr were instrumented\r\n return initialized\r\n // checking on ajaxData to see that it was not removed in user code\r\n && ajaxValidation;\r\n }\r\n function _openHandler(xhr, method, url, async) {\r\n var traceID = (_context && _context.telemetryTrace && _context.telemetryTrace.traceID) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog]());\r\n ajaxData.method = method;\r\n ajaxData.requestUrl = url;\r\n ajaxData.xhrMonitoringState.openDone = true;\r\n ajaxData.requestHeaders = {};\r\n ajaxData.async = async;\r\n xhr[strAjaxData] = ajaxData;\r\n _attachToOnReadyStateChange(xhr);\r\n }\r\n function _attachToOnReadyStateChange(xhr) {\r\n xhr[strAjaxData].xhrMonitoringState.stateChangeAttached = EventHelper.Attach(xhr, \"readystatechange\", function () {\r\n try {\r\n if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr)) {\r\n _onAjaxComplete(xhr);\r\n }\r\n }\r\n catch (e) {\r\n var exceptionText = dumpObj(e);\r\n // ignore messages with c00c023f, as this a known IE9 XHR abort issue\r\n if (!exceptionText || _indexOf(exceptionText.toLowerCase(), \"c00c023f\") === -1) {\r\n _throwInternalCritical(_self, _InternalMessageId.FailedMonitorAjaxRSC, \"Failed to monitor XMLHttpRequest 'readystatechange' event handler, monitoring data for this ajax call may be incorrect.\", {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr),\r\n exception: exceptionText\r\n });\r\n }\r\n }\r\n });\r\n }\r\n function _getResponseText(xhr) {\r\n try {\r\n var responseType = xhr.responseType;\r\n if (responseType === \"\" || responseType === \"text\") {\r\n // As per the specification responseText is only valid if the type is an empty string or \"text\"\r\n return xhr.responseText;\r\n }\r\n }\r\n catch (e) {\r\n // This shouldn't happend because of the above check -- but just in case, so just ignore\r\n }\r\n return null;\r\n }\r\n function _onAjaxComplete(xhr) {\r\n var ajaxData = xhr[strAjaxData];\r\n ajaxData.responseFinishedTime = dateTimeUtilsNow();\r\n ajaxData.status = xhr.status;\r\n function _reportXhrError(e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"ajaxDiagnosticsMessage\"] = _getFailedAjaxDiagnosticsMessage(xhr);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, _InternalMessageId.FailedMonitorAjaxDur, \"Failed to calculate the duration of the ajax call, monitoring data for this ajax call won't be sent.\", errorProps);\r\n }\r\n _findPerfResourceEntry(\"xmlhttprequest\", ajaxData, function () {\r\n try {\r\n var dependency = ajaxData.CreateTrackItem(\"Ajax\", _enableRequestHeaderTracking, function () {\r\n var ajaxResponse = {\r\n statusText: xhr.statusText,\r\n headerMap: null,\r\n correlationContext: _getAjaxCorrelationContext(xhr),\r\n type: xhr.responseType,\r\n responseText: _getResponseText(xhr),\r\n response: xhr.response\r\n };\r\n if (_enableResponseHeaderTracking) {\r\n var headers = xhr.getAllResponseHeaders();\r\n if (headers) {\r\n // xhr.getAllResponseHeaders() method returns all the response headers, separated by CRLF, as a string or null\r\n // the regex converts the header string into an array of individual headers\r\n var arr = strTrim(headers).split(/[\\r\\n]+/);\r\n var responseHeaderMap_2 = {};\r\n arrForEach(arr, function (line) {\r\n var parts = line.split(': ');\r\n var header = parts.shift();\r\n var value = parts.join(': ');\r\n responseHeaderMap_2[header] = value;\r\n });\r\n ajaxResponse.headerMap = responseHeaderMap_2;\r\n }\r\n }\r\n return ajaxResponse;\r\n });\r\n if (dependency) {\r\n _self[strTrackDependencyDataInternal](dependency);\r\n }\r\n else {\r\n _reportXhrError(null, {\r\n requestSentTime: ajaxData.requestSentTime,\r\n responseFinishedTime: ajaxData.responseFinishedTime\r\n });\r\n }\r\n }\r\n finally {\r\n // cleanup telemetry data\r\n try {\r\n xhr[strAjaxData] = null;\r\n }\r\n catch (e) {\r\n // May throw in environments that prevent extension or freeze xhr\r\n }\r\n }\r\n }, function (e) {\r\n _reportXhrError(e, null);\r\n });\r\n }\r\n function _getAjaxCorrelationContext(xhr) {\r\n try {\r\n var responseHeadersString = xhr.getAllResponseHeaders();\r\n if (responseHeadersString !== null) {\r\n var index = _indexOf(responseHeadersString.toLowerCase(), RequestHeaders.requestContextHeaderLowerCase);\r\n if (index !== -1) {\r\n var responseHeader = xhr.getResponseHeader(RequestHeaders.requestContextHeader);\r\n return CorrelationIdHelper.getCorrelationContext(responseHeader);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, _InternalMessageId.FailedMonitorAjaxGetCorrelationHeader, \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\", {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr),\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n function _createMarkId(type, ajaxData) {\r\n if (ajaxData.requestUrl && _markPrefix && _enableAjaxPerfTracking) {\r\n var performance_1 = getPerformance();\r\n if (performance_1 && isFunction(performance_1.mark)) {\r\n _markCount++;\r\n var markId = _markPrefix + type + \"#\" + _markCount;\r\n performance_1.mark(markId);\r\n var entries = performance_1.getEntriesByName(markId);\r\n if (entries && entries.length === 1) {\r\n ajaxData.perfMark = entries[0];\r\n }\r\n }\r\n }\r\n }\r\n function _findPerfResourceEntry(initiatorType, ajaxData, trackCallback, reportError) {\r\n var perfMark = ajaxData.perfMark;\r\n var performance = getPerformance();\r\n var maxAttempts = _config.maxAjaxPerfLookupAttempts;\r\n var retryDelay = _config.ajaxPerfLookupDelay;\r\n var requestUrl = ajaxData.requestUrl;\r\n var attempt = 0;\r\n (function locateResourceTiming() {\r\n try {\r\n if (performance && perfMark) {\r\n attempt++;\r\n var perfTiming = null;\r\n var entries = performance.getEntries();\r\n for (var lp = entries.length - 1; lp >= 0; lp--) {\r\n var entry = entries[lp];\r\n if (entry) {\r\n if (entry.entryType === \"resource\") {\r\n if (entry.initiatorType === initiatorType &&\r\n (_indexOf(entry.name, requestUrl) !== -1 || _indexOf(requestUrl, entry.name) !== -1)) {\r\n perfTiming = entry;\r\n }\r\n }\r\n else if (entry.entryType === \"mark\" && entry.name === perfMark.name) {\r\n // We hit the start event\r\n ajaxData.perfTiming = perfTiming;\r\n break;\r\n }\r\n if (entry.startTime < perfMark.startTime - 1000) {\r\n // Fallback to try and reduce the time spent looking for the perf entry\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (!perfMark || // - we don't have a perfMark or\r\n ajaxData.perfTiming || // - we have not found the perf entry or\r\n attempt >= maxAttempts || // - we have tried too many attempts or\r\n ajaxData.async === false) {\r\n if (perfMark && isFunction(performance.clearMarks)) {\r\n // Remove the mark so we don't fill up the performance resources too much\r\n performance.clearMarks(perfMark.name);\r\n }\r\n ajaxData.perfAttempts = attempt;\r\n // just continue and report the track event\r\n trackCallback();\r\n }\r\n else {\r\n // We need to wait for the browser to populate the window.performance entry\r\n // This needs to be at least 1ms as waiting <= 1 (on firefox) is not enough time for fetch or xhr,\r\n // this is a scheduling issue for the browser implementation\r\n setTimeout(locateResourceTiming, retryDelay);\r\n }\r\n }\r\n catch (e) {\r\n reportError(e);\r\n }\r\n })();\r\n }\r\n function _createFetchRecord(input, init) {\r\n var traceID = (_context && _context.telemetryTrace && _context.telemetryTrace.traceID) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog]());\r\n ajaxData.requestSentTime = dateTimeUtilsNow();\r\n if (input instanceof Request) {\r\n ajaxData.requestUrl = input ? input.url : \"\";\r\n }\r\n else {\r\n ajaxData.requestUrl = input;\r\n }\r\n var method = \"GET\";\r\n if (init && init.method) {\r\n method = init.method;\r\n }\r\n else if (input && input instanceof Request) {\r\n method = input.method;\r\n }\r\n ajaxData.method = method;\r\n var requestHeaders = {};\r\n if (_enableRequestHeaderTracking) {\r\n var headers = new Headers((init ? init.headers : 0) || (input instanceof Request ? (input.headers || {}) : {}));\r\n headers.forEach(function (value, key) {\r\n requestHeaders[key] = value;\r\n });\r\n }\r\n ajaxData.requestHeaders = requestHeaders;\r\n _createMarkId(\"fetch\", ajaxData);\r\n return ajaxData;\r\n }\r\n function _getFailedFetchDiagnosticsMessage(input) {\r\n var result = \"\";\r\n try {\r\n if (!isNullOrUndefined(input)) {\r\n if (typeof (input) === \"string\") {\r\n result += \"(url: '\" + input + \"')\";\r\n }\r\n else {\r\n result += \"(url: '\" + input.url + \"')\";\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalCritical(_self, _InternalMessageId.FailedMonitorAjaxOpen, \"Failed to grab failed fetch diagnostics message\", { exception: dumpObj(e) });\r\n }\r\n return result;\r\n }\r\n function _reportFetchMetrics(callDetails, status, input, ajaxData, getResponse, properties) {\r\n if (!ajaxData) {\r\n return;\r\n }\r\n function _reportFetchError(msgId, e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"fetchDiagnosticsMessage\"] = _getFailedFetchDiagnosticsMessage(input);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, msgId, \"Failed to calculate the duration of the fetch call, monitoring data for this fetch call won't be sent.\", errorProps);\r\n }\r\n ajaxData.responseFinishedTime = dateTimeUtilsNow();\r\n ajaxData.status = status;\r\n _findPerfResourceEntry(\"fetch\", ajaxData, function () {\r\n var dependency = ajaxData.CreateTrackItem(\"Fetch\", _enableRequestHeaderTracking, getResponse);\r\n if (dependency) {\r\n _self[strTrackDependencyDataInternal](dependency);\r\n }\r\n else {\r\n _reportFetchError(_InternalMessageId.FailedMonitorAjaxDur, null, {\r\n requestSentTime: ajaxData.requestSentTime,\r\n responseFinishedTime: ajaxData.responseFinishedTime\r\n });\r\n }\r\n }, function (e) {\r\n _reportFetchError(_InternalMessageId.FailedMonitorAjaxGetCorrelationHeader, e, null);\r\n });\r\n }\r\n function _getFetchCorrelationContext(response) {\r\n if (response && response.headers) {\r\n try {\r\n var responseHeader = response.headers.get(RequestHeaders.requestContextHeader);\r\n return CorrelationIdHelper.getCorrelationContext(responseHeader);\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, _InternalMessageId.FailedMonitorAjaxGetCorrelationHeader, \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\", {\r\n fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response),\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n AjaxMonitor.getDefaultConfig = function () {\r\n var config = {\r\n maxAjaxCallsPerView: 500,\r\n disableAjaxTracking: false,\r\n disableFetchTracking: true,\r\n disableCorrelationHeaders: false,\r\n distributedTracingMode: DistributedTracingModes.AI_AND_W3C,\r\n correlationHeaderExcludedDomains: [\r\n \"*.blob.core.windows.net\",\r\n \"*.blob.core.chinacloudapi.cn\",\r\n \"*.blob.core.cloudapi.de\",\r\n \"*.blob.core.usgovcloudapi.net\"\r\n ],\r\n correlationHeaderDomains: undefined,\r\n appId: undefined,\r\n enableCorsCorrelation: false,\r\n enableRequestHeaderTracking: false,\r\n enableResponseHeaderTracking: false,\r\n enableAjaxErrorStatusText: false,\r\n enableAjaxPerfTracking: false,\r\n maxAjaxPerfLookupAttempts: 3,\r\n ajaxPerfLookupDelay: 25\r\n };\r\n return config;\r\n };\r\n AjaxMonitor.getEmptyConfig = function () {\r\n var emptyConfig = this.getDefaultConfig();\r\n objForEachKey(emptyConfig, function (value) {\r\n emptyConfig[value] = undefined;\r\n });\r\n return emptyConfig;\r\n };\r\n AjaxMonitor.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AjaxMonitor.prototype.teardown = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AjaxMonitor.prototype.processTelemetry = function (item, itemCtx) {\r\n this.processNext(item, itemCtx);\r\n };\r\n /**\r\n * Logs dependency call\r\n * @param dependencyData dependency data object\r\n */\r\n AjaxMonitor.prototype.trackDependencyData = function (dependency, properties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AjaxMonitor.prototype.includeCorrelationHeaders = function (ajaxData, input, init, xhr) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Protected function to allow sub classes the chance to add additional properties to the delendency event\r\n * before it's sent. This function calls track, so sub-classes must call this function after they have\r\n * populated their properties.\r\n * @param dependencyData dependency data object\r\n */\r\n AjaxMonitor.prototype.trackDependencyDataInternal = function (dependency, properties, systemProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AjaxMonitor.identifier = \"AjaxDependencyPlugin\";\r\n return AjaxMonitor;\r\n}(BaseTelemetryPlugin));\r\nexport { AjaxMonitor };\r\n//# sourceMappingURL=ajax.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// @duplicate of https://github.com/microsoft/ApplicationInsights-node.js/blob/develop/Library/ConnectionStringParser.ts\r\n\r\nimport { ConnectionString, ConnectionStringKey } from \"./Interfaces/ConnectionString\";\r\nimport { DEFAULT_BREEZE_ENDPOINT } from \"./Constants\";\r\nimport { arrReduce, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\n\r\nconst _FIELDS_SEPARATOR = \";\";\r\nconst _FIELD_KEY_VALUE_SEPARATOR = \"=\";\r\n\r\nexport function parseConnectionString(connectionString?: string): ConnectionString {\r\n if (!connectionString) {\r\n return {};\r\n }\r\n\r\n const kvPairs = connectionString.split(_FIELDS_SEPARATOR);\r\n\r\n const result: ConnectionString = arrReduce(kvPairs, (fields: ConnectionString, kv: string) => {\r\n const kvParts = kv.split(_FIELD_KEY_VALUE_SEPARATOR);\r\n\r\n if (kvParts.length === 2) { // only save fields with valid formats\r\n const key = kvParts[0].toLowerCase() as ConnectionStringKey;\r\n const value = kvParts[1];\r\n fields[key] = value as string;\r\n }\r\n return fields;\r\n }, {});\r\n\r\n if (objKeys(result).length > 0) {\r\n // this is a valid connection string, so parse the results\r\n\r\n if (result.endpointsuffix) {\r\n // use endpoint suffix where overrides are not provided\r\n const locationPrefix = result.location ? result.location + \".\" : \"\";\r\n result.ingestionendpoint = result.ingestionendpoint || (\"https://\" + locationPrefix + \"dc.\" + result.endpointsuffix);\r\n }\r\n\r\n // apply the default endpoints\r\n result.ingestionendpoint = result.ingestionendpoint || DEFAULT_BREEZE_ENDPOINT;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport const ConnectionStringParser = {\r\n parse: parseConnectionString\r\n};\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { IConfiguration, ICookieMgrConfig, isNullOrUndefined } from '@microsoft/applicationinsights-core-js';\r\nimport { DistributedTracingModes } from '../Enums';\r\n\r\n/**\r\n * @description Configuration settings for how telemetry is sent\r\n * @export\r\n * @interface IConfig\r\n */\r\nexport interface IConfig {\r\n\r\n /**\r\n * @description\r\n * @type {boolean}\r\n * @memberof IConfig\r\n */\r\n emitLineDelimitedJson?: boolean;\r\n\r\n /**\r\n * @description An optional account id, if your app groups users into accounts. No spaces, commas, semicolons, equals, or vertical bars.\r\n * @type {string}\r\n * @memberof IConfig\r\n */\r\n accountId?: string;\r\n\r\n /**\r\n * @description A session is logged if the user is inactive for this amount of time in milliseconds. Default 30 mins.\r\n * @type {number}\r\n * @memberof IConfig\r\n * @default 30*60*1000\r\n */\r\n sessionRenewalMs?: number;\r\n\r\n /**\r\n * @description A session is logged if it has continued for this amount of time in milliseconds. Default 24h.\r\n * @type {number}\r\n * @memberof IConfig\r\n * @default 24*60*60*1000\r\n */\r\n sessionExpirationMs?: number;\r\n\r\n /**\r\n * @description Max size of telemetry batch. If batch exceeds limit, it is sent and a new batch is started\r\n * @type {number}\r\n * @memberof IConfig\r\n * @default 100000\r\n */\r\n maxBatchSizeInBytes?: number;\r\n\r\n /**\r\n * @description How long to batch telemetry for before sending (milliseconds)\r\n * @type {number}\r\n * @memberof IConfig\r\n * @default 15 seconds\r\n */\r\n maxBatchInterval?: number;\r\n\r\n /**\r\n * @description If true, debugging data is thrown as an exception by the logger. Default false\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n enableDebug?: boolean;\r\n\r\n /**\r\n * @description If true, exceptions are not autocollected. Default is false\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n disableExceptionTracking?: boolean;\r\n\r\n /**\r\n * @description If true, telemetry is not collected or sent. Default is false\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n disableTelemetry?: boolean;\r\n\r\n /**\r\n * @description Percentage of events that will be sent. Default is 100, meaning all events are sent.\r\n * @type {number}\r\n * @memberof IConfig\r\n * @defaultValue 100\r\n */\r\n samplingPercentage?: number;\r\n\r\n /**\r\n * @description If true, on a pageview,the previous instrumented page's view time is tracked and sent as telemetry and a new timer is started for the current pageview. Default is false.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n */\r\n autoTrackPageVisitTime?: boolean;\r\n\r\n /**\r\n * @description Automatically track route changes in Single Page Applications (SPA). If true, each route change will send a new Pageview to Application Insights.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n */\r\n enableAutoRouteTracking?: boolean;\r\n\r\n /**\r\n * @description If true, Ajax calls are not autocollected. Default is false\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n disableAjaxTracking?: boolean;\r\n\r\n /**\r\n * @description If true, Fetch requests are not autocollected. Default is true.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue true\r\n */\r\n disableFetchTracking?: boolean;\r\n\r\n /**\r\n * @description If true, default behavior of trackPageView is changed to record end of page view duration interval when trackPageView is called. If false and no custom duration is provided to trackPageView, the page view performance is calculated using the navigation timing API. Default is false\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n overridePageViewDuration?: boolean;\r\n\r\n /**\r\n * @description Default 500 - controls how many ajax calls will be monitored per page view. Set to -1 to monitor all (unlimited) ajax calls on the page.\r\n * @type {number}\r\n * @memberof IConfig\r\n */\r\n maxAjaxCallsPerView?: number;\r\n\r\n /**\r\n * @ignore\r\n * @description If false, internal telemetry sender buffers will be checked at startup for items not yet sent. Default is true\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue true\r\n */\r\n disableDataLossAnalysis?: boolean;\r\n\r\n /**\r\n * @description If false, the SDK will add two headers ('Request-Id' and 'Request-Context') to all dependency requests to correlate them with corresponding requests on the server side. Default is false.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n disableCorrelationHeaders?: boolean;\r\n\r\n /**\r\n * @description Sets the distributed tracing mode. If AI_AND_W3C mode or W3C mode is set, W3C trace context headers (traceparent/tracestate) will be generated and included in all outgoing requests. \r\n * AI_AND_W3C is provided for back-compatibility with any legacy Application Insights instrumented services\r\n * @type {enum}\r\n * @memberof IConfig\r\n * @defaultValue AI_AND_W3C\r\n */\r\n distributedTracingMode?: DistributedTracingModes;\r\n\r\n /**\r\n * @description Disable correlation headers for specific domain\r\n * @type {string[]}\r\n * @memberof IConfig\r\n */\r\n correlationHeaderExcludedDomains?: string[];\r\n\r\n /**\r\n * @description Default false. If true, flush method will not be called when onBeforeUnload event triggers.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n */\r\n disableFlushOnBeforeUnload?: boolean;\r\n\r\n /**\r\n * @description Default value of {@link #disableFlushOnBeforeUnload}. If true, flush method will not be called when onUnload event triggers.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n */\r\n disableFlushOnUnload?: boolean;\r\n\r\n /**\r\n * @description If true, the buffer with all unsent telemetry is stored in session storage. The buffer is restored on page load. Default is true.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue true\r\n */\r\n enableSessionStorageBuffer?: boolean;\r\n\r\n /**\r\n * @deprecated Use either disableCookiesUsage or specify a cookieMgrCfg with the enabled value set.\r\n * If true, the SDK will not store or read any data from cookies. Default is false. As this field is being deprecated, when both \r\n * isCookieUseDisabled and disableCookiesUsage are used disableCookiesUsage will take precedent.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n isCookieUseDisabled?: boolean;\r\n\r\n /**\r\n * If true, the SDK will not store or read any data from cookies. Default is false.\r\n * If you have also specified a cookieMgrCfg then enabled property (if specified) will take precedent over this value.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n disableCookiesUsage?: boolean;\r\n\r\n /**\r\n * @description Custom cookie domain. This is helpful if you want to share Application Insights cookies across subdomains.\r\n * @type {string}\r\n * @memberof IConfig\r\n * @defaultValue \"\"\r\n */\r\n cookieDomain?: string;\r\n\r\n /**\r\n * @description Custom cookie path. This is helpful if you want to share Application Insights cookies behind an application gateway.\r\n * @type {string}\r\n * @memberof IConfig\r\n * @defaultValue \"\"\r\n */\r\n cookiePath?: string;\r\n\r\n /**\r\n * [Optional] A Cookie Manager configuration which includes hooks to allow interception of the get, set and delete cookie \r\n * operations. If this configuration is specified any specified enabled and domain properties will take precedence over the\r\n * cookieDomain and disableCookiesUsage values.\r\n */\r\n cookieMgrCfg?: ICookieMgrConfig;\r\n\r\n /** \r\n * Default false. If false, retry on 206 (partial success), 408 (timeout), 429 (too many requests), 500 (internal server error), 503 (service unavailable), and 0 (offline, only if detected)\r\n * @description\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n isRetryDisabled?: boolean;\r\n\r\n /**\r\n * @deprecated Used when initizialing from snippet only.\r\n * @description The url from where the JS SDK will be downloaded.\r\n * @type {string}\r\n * @memberof IConfig\r\n */\r\n url?: string;\r\n\r\n /**\r\n * @description If true, the SDK will not store or read any data from local and session storage. Default is false.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n isStorageUseDisabled?: boolean;\r\n\r\n /**\r\n * @description If false, the SDK will send all telemetry using the [Beacon API](https://www.w3.org/TR/beacon)\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue true\r\n */\r\n isBeaconApiDisabled?: boolean;\r\n\r\n /**\r\n * @description Sets the sdk extension name. Only alphabetic characters are allowed. The extension name is added as a prefix to the 'ai.internal.sdkVersion' tag (e.g. 'ext_javascript:2.0.0'). Default is null.\r\n * @type {string}\r\n * @memberof IConfig\r\n * @defaultValue null\r\n */\r\n sdkExtension?: string;\r\n\r\n /**\r\n * @description Default is false. If true, the SDK will track all [Browser Link](https://docs.microsoft.com/en-us/aspnet/core/client-side/using-browserlink) requests.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n isBrowserLinkTrackingEnabled?: boolean;\r\n\r\n /**\r\n * @description AppId is used for the correlation between AJAX dependencies happening on the client-side with the server-side requets. When Beacon API is enabled, it cannot be used automatically, but can be set manually in the configuration. Default is null\r\n * @type {string}\r\n * @memberof IConfig\r\n * @defaultValue null\r\n */\r\n appId?: string;\r\n\r\n /**\r\n * @description If true, the SDK will add two headers ('Request-Id' and 'Request-Context') to all CORS requests to correlate outgoing AJAX dependencies with corresponding requests on the server side. Default is false\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n enableCorsCorrelation?: boolean;\r\n\r\n /**\r\n * @description An optional value that will be used as name postfix for localStorage and cookie name.\r\n * @type {string}\r\n * @memberof IConfig\r\n * @defaultValue null\r\n */\r\n namePrefix?: string;\r\n\r\n /**\r\n * @description An optional value that will track Request Header through trackDependency function.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n enableRequestHeaderTracking?: boolean;\r\n\r\n /**\r\n * @description An optional value that will track Response Header through trackDependency function.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n enableResponseHeaderTracking?: boolean;\r\n\r\n /**\r\n * @description An optional value that will track Response Error data through trackDependency function.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n enableAjaxErrorStatusText?: boolean;\r\n\r\n /**\r\n * Flag to enable looking up and including additional browser window.performance timings\r\n * in the reported ajax (XHR and fetch) reported metrics. \r\n * Defaults to false.\r\n */\r\n enableAjaxPerfTracking?:boolean;\r\n\r\n /**\r\n * The maximum number of times to look for the window.performance timings (if available), this \r\n * is required as not all browsers populate the window.performance before reporting the \r\n * end of the XHR request and for fetch requests this is added after its complete\r\n * Defaults to 3\r\n */\r\n maxAjaxPerfLookupAttempts?: number;\r\n\r\n /**\r\n * The amount of time to wait before re-attempting to find the windows.performance timings\r\n * for an ajax request, time is in milliseconds and is passed directly to setTimeout()\r\n * Defaults to 25.\r\n */\r\n ajaxPerfLookupDelay?: number;\r\n \r\n /**\r\n * @description Default false. when tab is closed, the SDK will send all remaining telemetry using the [Beacon API](https://www.w3.org/TR/beacon)\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n onunloadDisableBeacon?: boolean;\r\n\r\n // Internal\r\n\r\n /**\r\n * @ignore\r\n * @description Internal only\r\n * @type {boolean}\r\n * @memberof IConfig\r\n */\r\n autoExceptionInstrumented?: boolean;\r\n correlationHeaderDomains?: string[]\r\n\r\n /**\r\n * @ignore\r\n * @description Internal only\r\n * @type {boolean}\r\n * @memberof IConfig\r\n */\r\n autoUnhandledPromiseInstrumented?: boolean;\r\n\r\n /**\r\n * @description Default false. Define whether to track unhandled promise rejections and report as JS errors. \r\n * When disableExceptionTracking is enabled (dont track exceptions) this value will be false.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n enableUnhandledPromiseRejectionTracking?: boolean;\r\n\r\n /**\r\n * @description Disable correlation headers using regular expressions\r\n * @type {RegExp[]}\r\n */\r\n correlationHeaderExcludePatterns?: RegExp[];\r\n}\r\n\r\nexport class ConfigurationManager {\r\n public static getConfig(config: IConfiguration & IConfig, field: string, identifier?: string, defaultValue: number | string | boolean = false): number | string | boolean {\r\n let configValue;\r\n if (identifier && config.extensionConfig && config.extensionConfig[identifier] && !isNullOrUndefined(config.extensionConfig[identifier][field])) {\r\n configValue = config.extensionConfig[identifier][field];\r\n } else {\r\n configValue = config[field];\r\n }\r\n\r\n return !isNullOrUndefined(configValue) ? configValue : defaultValue;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { AppInsightsCore, LoggingSeverity, _InternalMessageId, hasWindow, hasDocument, isReactNative, doPerf, objForEachKey, proxyAssign, arrForEach, isString, isFunction, isNullOrUndefined, addEventHandler, isArray, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { ApplicationInsights } from \"@microsoft/applicationinsights-analytics-js\";\r\nimport { Sender } from \"@microsoft/applicationinsights-channel-js\";\r\nimport { PropertiesPlugin } from \"@microsoft/applicationinsights-properties-js\";\r\nimport { AjaxPlugin as DependenciesPlugin } from '@microsoft/applicationinsights-dependencies-js';\r\nimport { Util, CorrelationIdHelper, UrlHelper, DateTimeUtils, ConnectionStringParser, FieldType, RequestHeaders, DisabledPropertyName, ProcessLegacy, SampleRate, HttpMethod, DEFAULT_BREEZE_ENDPOINT, AIData, AIBase, Envelope, Event, Exception, Metric, PageView, PageViewData, RemoteDependencyData, Trace, PageViewPerformance, Data, SeverityLevel, ConfigurationManager, ContextTagKeys, DataSanitizer, TelemetryItemCreator, CtxTagKeys, Extensions, DistributedTracingModes, PropertiesPluginIdentifier, BreezeChannelIdentifier, AnalyticsPluginIdentifier, parseConnectionString } from \"@microsoft/applicationinsights-common\";\r\n\"use strict\";\r\nvar _internalSdkSrc;\r\n// This is an exclude list of properties that should not be updated during initialization\r\n// They include a combination of private and internal property names\r\nvar _ignoreUpdateSnippetProperties = [\r\n \"snippet\", \"dependencies\", \"properties\", \"_snippetVersion\", \"appInsightsNew\", \"getSKUDefaults\",\r\n];\r\n;\r\n// Re-exposing the Common classes as Telemetry, the list was taken by reviewing the generated code for the build while using\r\n// the previous configuration :-\r\n// import * as Common from \"@microsoft/applicationinsights-common\"\r\n// export const Telemetry = Common;\r\n/**\r\n * Telemetry type classes, e.g. PageView, Exception, etc\r\n */\r\nexport var Telemetry = {\r\n __proto__: null,\r\n PropertiesPluginIdentifier: PropertiesPluginIdentifier,\r\n BreezeChannelIdentifier: BreezeChannelIdentifier,\r\n AnalyticsPluginIdentifier: AnalyticsPluginIdentifier,\r\n Util: Util,\r\n CorrelationIdHelper: CorrelationIdHelper,\r\n UrlHelper: UrlHelper,\r\n DateTimeUtils: DateTimeUtils,\r\n ConnectionStringParser: ConnectionStringParser,\r\n FieldType: FieldType,\r\n RequestHeaders: RequestHeaders,\r\n DisabledPropertyName: DisabledPropertyName,\r\n ProcessLegacy: ProcessLegacy,\r\n SampleRate: SampleRate,\r\n HttpMethod: HttpMethod,\r\n DEFAULT_BREEZE_ENDPOINT: DEFAULT_BREEZE_ENDPOINT,\r\n AIData: AIData,\r\n AIBase: AIBase,\r\n Envelope: Envelope,\r\n Event: Event,\r\n Exception: Exception,\r\n Metric: Metric,\r\n PageView: PageView,\r\n PageViewData: PageViewData,\r\n RemoteDependencyData: RemoteDependencyData,\r\n Trace: Trace,\r\n PageViewPerformance: PageViewPerformance,\r\n Data: Data,\r\n SeverityLevel: SeverityLevel,\r\n ConfigurationManager: ConfigurationManager,\r\n ContextTagKeys: ContextTagKeys,\r\n DataSanitizer: DataSanitizer,\r\n TelemetryItemCreator: TelemetryItemCreator,\r\n CtxTagKeys: CtxTagKeys,\r\n Extensions: Extensions,\r\n DistributedTracingModes: DistributedTracingModes\r\n};\r\n/**\r\n * Application Insights API\r\n * @class Initialization\r\n * @implements {IApplicationInsights}\r\n */\r\nvar Initialization = /** @class */ (function () {\r\n function Initialization(snippet) {\r\n var _self = this;\r\n // initialize the queue and config in case they are undefined\r\n _self._snippetVersion = \"\" + (snippet.sv || snippet.version || \"\");\r\n snippet.queue = snippet.queue || [];\r\n snippet.version = snippet.version || 2.0; // Default to new version\r\n var config = snippet.config || {};\r\n if (config.connectionString) {\r\n var cs = parseConnectionString(config.connectionString);\r\n var ingest = cs.ingestionendpoint;\r\n config.endpointUrl = ingest ? ingest + \"/v2/track\" : config.endpointUrl; // only add /v2/track when from connectionstring\r\n config.instrumentationKey = cs.instrumentationkey || config.instrumentationKey;\r\n }\r\n _self.appInsights = new ApplicationInsights();\r\n _self.properties = new PropertiesPlugin();\r\n _self.dependencies = new DependenciesPlugin();\r\n _self.core = new AppInsightsCore();\r\n _self.snippet = snippet;\r\n _self.config = config;\r\n _self.getSKUDefaults();\r\n }\r\n // Analytics Plugin\r\n /**\r\n * Get the current cookie manager for this instance\r\n */\r\n Initialization.prototype.getCookieMgr = function () {\r\n return this.appInsights.getCookieMgr();\r\n };\r\n ;\r\n /**\r\n * Log a user action or other occurrence.\r\n * @param {IEventTelemetry} event\r\n * @param {ICustomProperties} [customProperties]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackEvent = function (event, customProperties) {\r\n this.appInsights.trackEvent(event, customProperties);\r\n };\r\n /**\r\n * Logs that a page, or similar container was displayed to the user.\r\n * @param {IPageViewTelemetry} pageView\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackPageView = function (pageView) {\r\n var inPv = pageView || {};\r\n this.appInsights.trackPageView(inPv);\r\n };\r\n /**\r\n * Log a bag of performance information via the customProperties field.\r\n * @param {IPageViewPerformanceTelemetry} pageViewPerformance\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackPageViewPerformance = function (pageViewPerformance) {\r\n var inPvp = pageViewPerformance || {};\r\n this.appInsights.trackPageViewPerformance(inPvp);\r\n };\r\n /**\r\n * Log an exception that you have caught.\r\n * @param {IExceptionTelemetry} exception\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackException = function (exception) {\r\n if (exception && !exception.exception && exception.error) {\r\n exception.exception = exception.error;\r\n }\r\n this.appInsights.trackException(exception);\r\n };\r\n /**\r\n * Manually send uncaught exception telemetry. This method is automatically triggered\r\n * on a window.onerror event.\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype._onerror = function (exception) {\r\n this.appInsights._onerror(exception);\r\n };\r\n /**\r\n * Log a diagnostic scenario such entering or leaving a function.\r\n * @param {ITraceTelemetry} trace\r\n * @param {ICustomProperties} [customProperties]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackTrace = function (trace, customProperties) {\r\n this.appInsights.trackTrace(trace, customProperties);\r\n };\r\n /**\r\n * Log a numeric value that is not associated with a specific event. Typically used\r\n * to send regular reports of performance indicators.\r\n *\r\n * To send a single measurement, just use the `name` and `average` fields\r\n * of {@link IMetricTelemetry}.\r\n *\r\n * If you take measurements frequently, you can reduce the telemetry bandwidth by\r\n * aggregating multiple measurements and sending the resulting average and modifying\r\n * the `sampleCount` field of {@link IMetricTelemetry}.\r\n * @param {IMetricTelemetry} metric input object argument. Only `name` and `average` are mandatory.\r\n * @param {ICustomProperties} [customProperties]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackMetric = function (metric, customProperties) {\r\n this.appInsights.trackMetric(metric, customProperties);\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n Initialization.prototype.startTrackPage = function (name) {\r\n this.appInsights.startTrackPage(name);\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n Initialization.prototype.stopTrackPage = function (name, url, customProperties, measurements) {\r\n this.appInsights.stopTrackPage(name, url, customProperties, measurements);\r\n };\r\n Initialization.prototype.startTrackEvent = function (name) {\r\n this.appInsights.startTrackEvent(name);\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n Initialization.prototype.stopTrackEvent = function (name, properties, measurements) {\r\n this.appInsights.stopTrackEvent(name, properties, measurements); // Todo: Fix to pass measurements once type is updated\r\n };\r\n Initialization.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n return this.appInsights.addTelemetryInitializer(telemetryInitializer);\r\n };\r\n // Properties Plugin\r\n /**\r\n * Set the authenticated user id and the account id. Used for identifying a specific signed-in user. Parameters must not contain whitespace or ,;=|\r\n *\r\n * The method will only set the `authenticatedUserId` and `accountId` in the current page view. To set them for the whole session, you should set `storeInCookie = true`\r\n * @param {string} authenticatedUserId\r\n * @param {string} [accountId]\r\n * @param {boolean} [storeInCookie=false]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n this.properties.context.user.setAuthenticatedUserContext(authenticatedUserId, accountId, storeInCookie);\r\n };\r\n /**\r\n * Clears the authenticated user id and account id. The associated cookie is cleared, if present.\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.clearAuthenticatedUserContext = function () {\r\n this.properties.context.user.clearAuthenticatedUserContext();\r\n };\r\n // Dependencies Plugin\r\n /**\r\n * Log a dependency call (e.g. ajax)\r\n * @param {IDependencyTelemetry} dependency\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackDependencyData = function (dependency) {\r\n this.dependencies.trackDependencyData(dependency);\r\n };\r\n // Misc\r\n /**\r\n * Manually trigger an immediate send of all telemetry still in the buffer.\r\n * @param {boolean} [async=true]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.flush = function (async) {\r\n var _this = this;\r\n if (async === void 0) { async = true; }\r\n doPerf(this.core, function () { return \"AISKU.flush\"; }, function () {\r\n arrForEach(_this.core.getTransmissionControls(), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n channel.flush(async);\r\n });\r\n });\r\n }, null, async);\r\n };\r\n /**\r\n * Manually trigger an immediate send of all telemetry still in the buffer using beacon Sender.\r\n * Fall back to xhr sender if beacon is not supported.\r\n * @param {boolean} [async=true]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.onunloadFlush = function (async) {\r\n if (async === void 0) { async = true; }\r\n arrForEach(this.core.getTransmissionControls(), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n if (channel.onunloadFlush) {\r\n channel.onunloadFlush();\r\n }\r\n else {\r\n channel.flush(async);\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Initialize this instance of ApplicationInsights\r\n * @returns {IApplicationInsights}\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.loadAppInsights = function (legacyMode, logger, notificationManager) {\r\n var _this = this;\r\n if (legacyMode === void 0) { legacyMode = false; }\r\n var _self = this;\r\n function _updateSnippetProperties(snippet) {\r\n if (snippet) {\r\n var snippetVer = \"\";\r\n if (!isNullOrUndefined(_self._snippetVersion)) {\r\n snippetVer += _self._snippetVersion;\r\n }\r\n if (legacyMode) {\r\n snippetVer += \".lg\";\r\n }\r\n if (_self.context && _self.context.internal) {\r\n _self.context.internal.snippetVer = snippetVer || \"-\";\r\n }\r\n // apply updated properties to the global instance (snippet)\r\n objForEachKey(_self, function (field, value) {\r\n if (isString(field) &&\r\n !isFunction(value) &&\r\n field && field[0] !== \"_\" && // Don't copy \"internal\" values\r\n _ignoreUpdateSnippetProperties.indexOf(field) === -1) {\r\n snippet[field] = value;\r\n }\r\n });\r\n }\r\n }\r\n // dont allow additional channels/other extensions for legacy mode; legacy mode is only to allow users to switch with no code changes!\r\n if (legacyMode && _self.config.extensions && _self.config.extensions.length > 0) {\r\n throwError(\"Extensions not allowed in legacy mode\");\r\n }\r\n doPerf(_self.core, function () { return \"AISKU.loadAppInsights\"; }, function () {\r\n var extensions = [];\r\n var appInsightsChannel = new Sender();\r\n extensions.push(appInsightsChannel);\r\n extensions.push(_self.properties);\r\n extensions.push(_self.dependencies);\r\n extensions.push(_self.appInsights);\r\n // initialize core\r\n _self.core.initialize(_self.config, extensions, logger, notificationManager);\r\n _self.context = _self.properties.context;\r\n if (_internalSdkSrc && _self.context) {\r\n _self.context.internal.sdkSrc = _internalSdkSrc;\r\n }\r\n _updateSnippetProperties(_self.snippet);\r\n // Empty queue of all api calls logged prior to sdk download\r\n _self.emptyQueue();\r\n _self.pollInternalLogs();\r\n _self.addHousekeepingBeforeUnload(_this);\r\n });\r\n return _self;\r\n };\r\n /**\r\n * Overwrite the lazy loaded fields of global window snippet to contain the\r\n * actual initialized API methods\r\n * @param {Snippet} snippet\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.updateSnippetDefinitions = function (snippet) {\r\n // apply full appInsights to the global instance\r\n // Note: This must be called before loadAppInsights is called\r\n proxyAssign(snippet, this, function (name) {\r\n // Not excluding names prefixed with \"_\" as we need to proxy some functions like _onError\r\n return name && _ignoreUpdateSnippetProperties.indexOf(name) === -1;\r\n });\r\n };\r\n /**\r\n * Call any functions that were queued before the main script was loaded\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.emptyQueue = function () {\r\n var _self = this;\r\n // call functions that were queued before the main script was loaded\r\n try {\r\n if (isArray(_self.snippet.queue)) {\r\n // note: do not check length in the for-loop conditional in case something goes wrong and the stub methods are not overridden.\r\n var length_1 = _self.snippet.queue.length;\r\n for (var i = 0; i < length_1; i++) {\r\n var call = _self.snippet.queue[i];\r\n call();\r\n }\r\n _self.snippet.queue = undefined;\r\n delete _self.snippet.queue;\r\n }\r\n }\r\n catch (exception) {\r\n var properties = {};\r\n if (exception && isFunction(exception.toString)) {\r\n properties.exception = exception.toString();\r\n }\r\n // need from core\r\n // Microsoft.ApplicationInsights._InternalLogging.throwInternal(\r\n // LoggingSeverity.WARNING,\r\n // _InternalMessageId.FailedToSendQueuedTelemetry,\r\n // \"Failed to send queued telemetry\",\r\n // properties);\r\n }\r\n };\r\n Initialization.prototype.pollInternalLogs = function () {\r\n this.core.pollInternalLogs();\r\n };\r\n Initialization.prototype.addHousekeepingBeforeUnload = function (appInsightsInstance) {\r\n // Add callback to push events when the user navigates away\r\n if (hasWindow() || hasDocument()) {\r\n var performHousekeeping = function () {\r\n // Adds the ability to flush all data before the page unloads.\r\n // Note: This approach tries to push a sync request with all the pending events onbeforeunload.\r\n // Firefox does not respect this.Other browsers DO push out the call with < 100% hit rate.\r\n // Telemetry here will help us analyze how effective this approach is.\r\n // Another approach would be to make this call sync with a acceptable timeout to reduce the\r\n // impact on user experience.\r\n // appInsightsInstance.context._sender.triggerSend();\r\n appInsightsInstance.onunloadFlush(false);\r\n // Back up the current session to local storage\r\n // This lets us close expired sessions after the cookies themselves expire\r\n arrForEach(appInsightsInstance.appInsights.core['_extensions'], function (ext) {\r\n if (ext.identifier === PropertiesPluginIdentifier) {\r\n if (ext && ext.context && ext.context._sessionManager) {\r\n ext.context._sessionManager.backup();\r\n }\r\n return -1;\r\n }\r\n });\r\n };\r\n if (!appInsightsInstance.appInsights.config.disableFlushOnBeforeUnload) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigations.\r\n var added = addEventHandler('beforeunload', performHousekeeping);\r\n added = addEventHandler('pagehide', performHousekeeping) || added;\r\n // A reactNative app may not have a window and therefore the beforeunload/pagehide events -- so don't\r\n // log the failure in this case\r\n if (!added && !isReactNative()) {\r\n appInsightsInstance.appInsights.core.logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.FailedToAddHandlerForOnBeforeUnload, 'Could not add handler for beforeunload and pagehide');\r\n }\r\n }\r\n // We also need to hook the pagehide event as not all versions of Safari support load/unload events.\r\n if (!appInsightsInstance.appInsights.config.disableFlushOnUnload) {\r\n // Not adding any telemetry as pagehide as it's not supported on all browsers\r\n addEventHandler('pagehide', performHousekeeping);\r\n }\r\n }\r\n };\r\n Initialization.prototype.getSKUDefaults = function () {\r\n var _self = this;\r\n _self.config.diagnosticLogInterval =\r\n _self.config.diagnosticLogInterval && _self.config.diagnosticLogInterval > 0 ? _self.config.diagnosticLogInterval : 10000;\r\n };\r\n return Initialization;\r\n}());\r\nexport { Initialization };\r\n// tslint:disable-next-line\r\n(function () {\r\n var sdkSrc = null;\r\n var isModule = false;\r\n var cdns = [\r\n \"://js.monitor.azure.com/\",\r\n \"://az416426.vo.msecnd.net/\"\r\n ];\r\n try {\r\n // Try and determine whether the sdk is being loaded from the CDN\r\n // currentScript is only valid during initial processing\r\n var scrpt = (document || {}).currentScript;\r\n if (scrpt) {\r\n sdkSrc = scrpt.src;\r\n // } else {\r\n // // We need to update to at least typescript 2.9 for this to work :-(\r\n // // Leaving as a stub for now so after we upgrade this breadcrumb is available\r\n // let meta = import.meta;\r\n // sdkSrc = (meta || {}).url;\r\n // isModule = true;\r\n }\r\n }\r\n catch (e) {\r\n }\r\n if (sdkSrc) {\r\n try {\r\n var url = sdkSrc.toLowerCase();\r\n if (url) {\r\n var src = \"\";\r\n for (var idx = 0; idx < cdns.length; idx++) {\r\n if (url.indexOf(cdns[idx]) !== -1) {\r\n src = \"cdn\" + (idx + 1);\r\n if (url.indexOf(\"/scripts/\") === -1) {\r\n if (url.indexOf(\"/next/\") !== -1) {\r\n src += \"-next\";\r\n }\r\n else if (url.indexOf(\"/beta/\") !== -1) {\r\n src += \"-beta\";\r\n }\r\n }\r\n _internalSdkSrc = src + (isModule ? \".mod\" : \"\");\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n }\r\n }\r\n})();\r\n//# sourceMappingURL=Initialization.js.map","/**\r\n * ReactPlugin.ts\r\n * @copyright Microsoft 2019\r\n */\r\n\r\nimport {\r\n IConfig, IPageViewTelemetry, IMetricTelemetry, IAppInsights, IEventTelemetry, IExceptionTelemetry\r\n} from \"@microsoft/applicationinsights-common\";\r\nimport {\r\n IPlugin, IConfiguration, IAppInsightsCore, IDiagnosticLogger,\r\n ITelemetryPlugin, BaseTelemetryPlugin, CoreUtils, ITelemetryItem, IProcessTelemetryContext,\r\n ITelemetryPluginChain, _InternalMessageId, LoggingSeverity, ICustomProperties\r\n} from \"@microsoft/applicationinsights-core-js\";\r\nimport { IReactExtensionConfig } from './Interfaces/IReactExtensionConfig';\r\nimport { History, LocationListener, Location, Action } from \"history\";\r\n\r\nexport default class ReactPlugin extends BaseTelemetryPlugin {\r\n public priority = 185;\r\n public identifier = 'ReactPlugin';\r\n\r\n private _analyticsPlugin: IAppInsights;\r\n private _extensionConfig: IReactExtensionConfig;\r\n\r\n initialize(config: IConfiguration & IConfig, core: IAppInsightsCore, extensions: IPlugin[], pluginChain?:ITelemetryPluginChain) {\r\n super.initialize(config, core, extensions, pluginChain);\r\n this._extensionConfig =\r\n config.extensionConfig && config.extensionConfig[this.identifier]\r\n ? (config.extensionConfig[this.identifier] as IReactExtensionConfig)\r\n : { history: null };\r\n\r\n CoreUtils.arrForEach(extensions, ext => {\r\n const identifier = (ext as ITelemetryPlugin).identifier;\r\n if (identifier === 'ApplicationInsightsAnalytics') {\r\n this._analyticsPlugin = (ext as any) as IAppInsights;\r\n }\r\n });\r\n if (this._extensionConfig.history) {\r\n this.addHistoryListener(this._extensionConfig.history);\r\n const pageViewTelemetry: IPageViewTelemetry = {\r\n uri: this._extensionConfig.history.location.pathname\r\n };\r\n this.trackPageView(pageViewTelemetry);\r\n }\r\n }\r\n\r\n /**\r\n * Add Part A fields to the event\r\n * @param event The event that needs to be processed\r\n */\r\n processTelemetry(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n this.processNext(event, itemCtx);\r\n }\r\n\r\n trackMetric(metric: IMetricTelemetry, customProperties: ICustomProperties) {\r\n if (this._analyticsPlugin) {\r\n this._analyticsPlugin.trackMetric(metric, customProperties);\r\n } else {\r\n this.diagLog().throwInternal(\r\n LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, \"Analytics plugin is not available, React plugin telemetry will not be sent: \");\r\n }\r\n }\r\n\r\n trackPageView(pageView: IPageViewTelemetry) {\r\n if (this._analyticsPlugin) {\r\n this._analyticsPlugin.trackPageView(pageView);\r\n } else {\r\n this.diagLog().throwInternal(\r\n LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, \"Analytics plugin is not available, React plugin telemetry will not be sent: \");\r\n }\r\n }\r\n\r\n trackEvent(event: IEventTelemetry, customProperties?: ICustomProperties) {\r\n if (this._analyticsPlugin) {\r\n this._analyticsPlugin.trackEvent(event, customProperties);\r\n } else {\r\n this.diagLog().throwInternal(\r\n LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, \"Analytics plugin is not available, React plugin telemetry will not be sent: \");\r\n }\r\n }\r\n\r\n trackException(exception: IExceptionTelemetry, customProperties?: {\r\n [key: string]: any;\r\n }) {\r\n if (this._analyticsPlugin) {\r\n this._analyticsPlugin.trackException(exception, customProperties);\r\n } else {\r\n this.diagLog().throwInternal(\r\n LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, \"Analytics plugin is not available, React plugin telemetry will not be sent: \");\r\n }\r\n };\r\n\r\n\r\n private addHistoryListener(history: History): void {\r\n const locationListener: LocationListener = (location: Location, action: Action): void => {\r\n // Timeout to ensure any changes to the DOM made by route changes get included in pageView telemetry\r\n setTimeout(() => {\r\n const pageViewTelemetry: IPageViewTelemetry = { uri: location.pathname };\r\n this.trackPageView(pageViewTelemetry);\r\n }, 500);\r\n };\r\n history.listen(locationListener);\r\n }\r\n}\r\n","// from https://github.com/Azure-Samples/application-insights-react-demo/blob/master/src/TelemetryService.js\r\nimport { ApplicationInsights } from '@microsoft/applicationinsights-web';\r\nimport { ReactPlugin } from '@microsoft/applicationinsights-react-js';\r\nimport { History } from 'history'\r\n\r\nlet reactPlugin: ReactPlugin | null = null;\r\nlet appInsights: ApplicationInsights | null = null;\r\n\r\n/**\r\n * Create the App Insights Telemetry Service\r\n * @return {{reactPlugin: ReactPlugin, appInsights: ApplicationInsights, initialize: Function}} - Object\r\n */\r\nconst createTelemetryService = () => {\r\n\r\n /**\r\n * Initialize the Application Insights class\r\n * @param {string} instrumentationKey - Application Insights Instrumentation Key\r\n * @param {Object} browserHistory - client's browser history, supplied by the withRouter HOC\r\n * @return {void}\r\n */\r\n const initialize = (instrumentationKey: string, browserHistory: History) => {\r\n if (!browserHistory) {\r\n throw new Error('Could not initialize Telemetry Service');\r\n }\r\n if (!instrumentationKey) {\r\n throw new Error('Instrumentation key not provided in ./src/telemetry-provider.jsx')\r\n }\r\n\r\n reactPlugin = new ReactPlugin();\r\n\r\n appInsights = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: instrumentationKey,\r\n maxBatchInterval: 0,\r\n disableFetchTracking: false,\r\n extensions: [reactPlugin],\r\n extensionConfig: {\r\n [reactPlugin.identifier]: {\r\n history: browserHistory\r\n }\r\n }\r\n }\r\n });\r\n\r\n appInsights.loadAppInsights();\r\n };\r\n\r\n return { reactPlugin, appInsights, initialize };\r\n};\r\n\r\nexport const ai = createTelemetryService();\r\nexport const getAppInsights = () => appInsights;","import { IEventTelemetry, SeverityLevel } from '@microsoft/applicationinsights-web'\r\nimport { Action, Reducer } from 'redux'\r\nimport { getAppInsights } from '../common/TelemetryService'\r\nimport { ApiException } from '../generated/ApiClient'\r\nimport { isProblemDetails } from '../generated/ApiClientExtensions'\r\n\r\ntype AlertType = 'success' | 'error' | 'warning' | 'info'\r\n\r\nexport interface Message {\r\n title: string\r\n message: string\r\n alertType: AlertType\r\n}\r\n\r\nexport interface SnackbarMessage extends Message {\r\n key: number\r\n}\r\n\r\nexport interface SnackbarState {\r\n snackPack: SnackbarMessage[]\r\n}\r\n\r\ninterface SnackbarAddAction {\r\n type: 'snackbar/ADD_MESSAGE'\r\n message: SnackbarMessage\r\n}\r\n\r\ninterface SnackbarRemoveAction {\r\n type: 'snackbar/POP_MESSAGE'\r\n}\r\n\r\nexport type SnackbarAction = SnackbarAddAction | SnackbarRemoveAction\r\n\r\nexport const actionCreators = {\r\n addMessage: (message: Message): SnackbarAction => {\r\n const insights = getAppInsights()\r\n insights?.trackEvent({ name: message.title, properties: message })\r\n return { type: 'snackbar/ADD_MESSAGE', message: { ...message, key: new Date().getTime() } }\r\n },\r\n /** adds an unknown error, this could be a problem details object from the api or a JS error. \r\n * @param action can be used to control how the alert will appear\r\n * @param title when set, will override the title or message from the error */\r\n addError: (error: any, action: AlertType = 'error', title?: string): SnackbarAction => {\r\n const insights = getAppInsights()\r\n if (isProblemDetails(error)) {\r\n insights?.trackException({ exception: new Error(error.detail), severityLevel: SeverityLevel.Error, properties: { ...error } })\r\n return actionCreators.addMessage({ title: title ?? error.title!, message: error.detail!, alertType: action })\r\n }\r\n else if (ApiException.isApiException(error)) {\r\n insights?.trackException({ exception: error, severityLevel: SeverityLevel.Error, properties: { ...error } })\r\n return actionCreators.addMessage({ title: title ?? error.name, message: error.message, alertType: action })\r\n }\r\n else if ('message' in error && 'stack' in error) {\r\n // assume it's a regular Error. https://stackoverflow.com/a/30469297/5951133\r\n insights?.trackException({ exception: error, severityLevel: SeverityLevel.Error, properties: { ...error } })\r\n return actionCreators.addMessage({ title: title ?? error.message, message: error.stack, alertType: action })\r\n }\r\n else {\r\n insights?.trackException({ exception: new Error((title ? `${title}: ` : '') + 'Unknown error occurred on the frontend'), severityLevel: SeverityLevel.Error, properties: { ...error } })\r\n // ?? anything can be thrown in javascript, stringify the error so that it doesn't crash react\r\n return actionCreators.addMessage({ title: title ?? 'Unknown error', message: JSON.stringify(error), alertType: action })\r\n }\r\n },\r\n popMessage: (): SnackbarAction => {\r\n return { type: 'snackbar/POP_MESSAGE' }\r\n },\r\n}\r\n\r\nconst unloadedState = { snackPack: [] }\r\n\r\nexport const reducer: Reducer = (state: SnackbarState | undefined, incomingAction: Action): SnackbarState => {\r\n if (state === undefined)\r\n return unloadedState\r\n\r\n const action = incomingAction as SnackbarAction\r\n switch (action.type) {\r\n case 'snackbar/ADD_MESSAGE':\r\n return {\r\n snackPack: [...state.snackPack, action.message]\r\n }\r\n case 'snackbar/POP_MESSAGE':\r\n return {\r\n snackPack: state.snackPack.slice(1)\r\n }\r\n }\r\n return state\r\n}","import { Action, Reducer } from 'redux'\r\nimport { ActionsObservable, ofType } from 'redux-observable'\r\nimport { from, iif, of } from 'rxjs'\r\nimport { mergeMap, catchError, delay, map, merge, groupBy, pairwise, startWith } from 'rxjs/operators'\r\nimport { AppThunkAction } from '.'\r\nimport { ApiException, DeviceTwinOrHeartbeatRequestedType, DeviceTwinResponse, ModemsClient, ModemRequestDTO, ModemWithOrgSiteResponseDTO, ProblemDetails, ReportedTwinDTO, RelayApiClient, ModemDeviceTwinResponseDTO } from '../generated/ApiClient'\r\nimport { isComplete, isSimple } from '../generated/ApiClientExtensions'\r\nimport { actionCreators as snackbar, SnackbarAction } from './AlertSnackbarStore'\r\n\r\nexport interface ModemsState {\r\n isLoading: boolean\r\n // todo: there will probably need to be an error type if we can't find the modem\r\n modems: { [key: string]: ModemWithOrgSiteResponseDTO }\r\n // load device twins as a separate object so we can update them through server-side pushes\r\n deviceTwins: { [key: string]: { simpleTwin?: ReportedTwinDTO | undefined, completeTwin?: unknown | undefined } | undefined }\r\n}\r\n\r\ninterface RequestModemsAction {\r\n type: 'modems/RequestModems'\r\n}\r\n\r\ninterface ResponseModemsAction {\r\n type: 'modems/ReceiveModems'\r\n modems: ModemWithOrgSiteResponseDTO[]\r\n}\r\n\r\ninterface RequestModemAction {\r\n type: 'modems/RequestModem'\r\n modemHostId: string\r\n}\r\n\r\ninterface ResponseModemAction {\r\n type: 'modems/ReceiveModem'\r\n modem: ModemWithOrgSiteResponseDTO\r\n}\r\n\r\ninterface UpdateModemPropertiesAction {\r\n type: 'modems/UpdateModemProperties'\r\n modem: ModemRequestDTO\r\n}\r\n\r\ninterface RequestDeviceTwinPayload {\r\n modemHostId: string\r\n requestedType: DeviceTwinOrHeartbeatRequestedType\r\n}\r\n\r\ntype RequestDeviceTwinAction = RequestDeviceTwinPayload & {\r\n type: 'modems/RequestDeviceTwin'\r\n}\r\n\r\ntype RefreshDeviceTwinAction = RequestDeviceTwinPayload & {\r\n type: 'modems/RefreshDeviceTwin'\r\n}\r\n\r\ntype CancelDeviceTwinAction = RequestDeviceTwinPayload & {\r\n type: 'modems/CancelDeviceTwin'\r\n}\r\n\r\ninterface ResponseDeviceTwinAction {\r\n type: 'modems/ResponseDeviceTwin'\r\n twins: ModemDeviceTwinResponseDTO[]\r\n}\r\n\r\ntype ModemAction = RequestModemsAction | ResponseModemsAction | RequestModemAction | ResponseModemAction\r\n | RequestDeviceTwinAction | RefreshDeviceTwinAction | ResponseDeviceTwinAction | CancelDeviceTwinAction\r\n | UpdateModemPropertiesAction\r\n\r\nexport const actionCreators = {\r\n requestModems: (): AppThunkAction => async (dispatch, getState) => {\r\n const appState = getState()\r\n if (appState.modems) {\r\n dispatch({ type: 'modems/RequestModems' })\r\n const data = await new ModemsClient().getManyAll()\r\n dispatch({ type: 'modems/ReceiveModems', modems: data })\r\n }\r\n },\r\n requestModem: (modemHostId: string): AppThunkAction => async (dispatch, getState) => {\r\n const appState = getState()\r\n if (appState.modems) {\r\n dispatch({ type: 'modems/RequestModem', modemHostId })\r\n const data = await new ModemsClient().get2(modemHostId)\r\n dispatch({ type: 'modems/ReceiveModem', modem: data })\r\n }\r\n },\r\n updateModemProperties: (modemHostId: string, modem: ModemRequestDTO): AppThunkAction => async (dispatch, getState) => {\r\n const appState = getState()\r\n if (appState.modems && appState.modems.modems[modemHostId]) {\r\n try {\r\n const data = await new ModemsClient().update(modemHostId, modem)\r\n dispatch({ type: 'modems/ReceiveModem', modem: { ...appState.modems.modems[modemHostId], ...data } })\r\n }\r\n catch (error) {\r\n dispatch(snackbar.addError(error, undefined, 'Failed to save modem'))\r\n }\r\n }\r\n },\r\n requestTwin: (modemHostId: string, requestedType: DeviceTwinOrHeartbeatRequestedType): AppThunkAction => async (dispatch, getState) => {\r\n dispatch({ type: 'modems/RequestDeviceTwin', modemHostId, requestedType })\r\n },\r\n requestManyTwins: (modemHostIds: string[], requestedType: DeviceTwinOrHeartbeatRequestedType): AppThunkAction => async (dispatch, getState) => {\r\n const existingTwins = Object.entries(getState().modems?.deviceTwins ?? {}).filter(([_, o]) => o?.simpleTwin != undefined).map(([s, _]) => s)\r\n const data = await new ModemsClient().getDeviceTwins(requestedType, { modemIds: modemHostIds.filter(s => existingTwins.find(x => s === x) === undefined) })\r\n dispatch({ type: 'modems/ResponseDeviceTwin', twins: data })\r\n },\r\n cancelTwinRequest: (modemHostId: string): AppThunkAction => async (dispatch, getState) => {\r\n dispatch({ type: 'modems/CancelDeviceTwin', modemHostId, requestedType: 0 })\r\n }\r\n}\r\n\r\nexport const refreshTwinEpic = (action$: ActionsObservable) => {\r\n const client = new ModemsClient()\r\n return action$.pipe(\r\n ofType('modems/RequestDeviceTwin', 'modems/RefreshDeviceTwin', 'modems/CancelDeviceTwin'),\r\n groupBy(action => action.modemHostId),\r\n mergeMap(group =>\r\n group.pipe(\r\n startWith(undefined),\r\n pairwise(),\r\n mergeMap(([earlier, action]) =>// don't fire if the latest is cancel or a cancel came in ahead of a refresh\r\n iif(() => !((action!.type === 'modems/CancelDeviceTwin') || (earlier?.type === 'modems/CancelDeviceTwin' && action!.type === 'modems/RefreshDeviceTwin')),\r\n from(client.getDeviceTwin(action!.modemHostId, action!.requestedType)).pipe(\r\n map(data => ({ type: 'modems/ResponseDeviceTwin', twins: [data] })),\r\n catchError((err, caught) => of(snackbar.addError(err, 'warning', 'Unable to load device twin data. This error may resolve itself'))),\r\n // emit a second event later, which will retry the epic, operating like a poller\r\n merge(of(({ ...action, type: 'modems/RefreshDeviceTwin' }))\r\n .pipe(delay(60000)))\r\n ))))),\r\n )\r\n}\r\n\r\nconst unloadedState: ModemsState = { isLoading: false, modems: {}, deviceTwins: {} }\r\n\r\n// currently this replaces any modem information if a modem is refreshed from the server\r\nexport const reducer: Reducer = (state: ModemsState | undefined, incomingAction: Action): ModemsState => {\r\n if (state === undefined)\r\n return unloadedState\r\n\r\n const action = incomingAction as ModemAction\r\n switch (action.type) {\r\n case 'modems/RequestModems':\r\n return {\r\n ...state,\r\n isLoading: true\r\n }\r\n case 'modems/ReceiveModems':\r\n return {\r\n ...state,\r\n modems: {\r\n ...state.modems,\r\n ...Object.fromEntries(action.modems.map(s => [s.modemHostId, s]))\r\n },\r\n isLoading: false\r\n }\r\n case 'modems/ReceiveModem':\r\n return {\r\n ...state,\r\n modems: {\r\n ...state.modems,\r\n [action.modem.modemHostId]: action.modem\r\n },\r\n isLoading: false\r\n }\r\n case 'modems/ResponseDeviceTwin':\r\n const twins = Object.fromEntries(action.twins.map(s => [s.modemHostId, s.deviceTwin == undefined ? undefined : {\r\n simpleTwin: isSimple(s.deviceTwin) ? s.deviceTwin.Fields : undefined,\r\n completeTwin: isComplete(s.deviceTwin) ? JSON.parse(s.deviceTwin.Fields.item) : undefined\r\n }]))\r\n return {\r\n ...state,\r\n deviceTwins: {\r\n ...state.deviceTwins,\r\n ...twins\r\n }\r\n }\r\n default:\r\n return state\r\n }\r\n}","import { Observable } from '../Observable';\nimport { concat } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\nimport { MonoTypeOperatorFunction, OperatorFunction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(scheduler: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, v4: G, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, v6: I, scheduler: SchedulerLike): OperatorFunction;\n\nexport function startWith(v1: D): OperatorFunction;\nexport function startWith(v1: D, v2: E): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F, v4: G): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, v6: I): OperatorFunction;\nexport function startWith(...array: D[]): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(...array: Array): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins to emit\n * items emitted by the source Observable.\n *\n * First emits its arguments in order, and then any\n * emissions from the source.\n *\n * ![](startWith.png)\n *\n * ## Examples\n *\n * Start the chain of emissions with `\"first\"`, `\"second\"`\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * of(\"from source\")\n * .pipe(startWith(\"first\", \"second\"))\n * .subscribe(x => console.log(x));\n *\n * // results:\n * // \"first\"\n * // \"second\"\n * // \"from source\"\n * ```\n *\n * @param {...T} values - Items you want the modified Observable to emit first.\n * @param {SchedulerLike} [scheduler] - A {@link SchedulerLike} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items\n * emitted by the source Observable.\n * @method startWith\n * @owner Observable\n */\nexport function startWith(...array: Array): OperatorFunction {\n const scheduler = array[array.length - 1] as SchedulerLike;\n if (isScheduler(scheduler)) {\n // deprecated path\n array.pop();\n return (source: Observable) => concat(array as T[], source, scheduler);\n } else {\n return (source: Observable) => concat(array as T[], source);\n }\n}\n","import { merge as mergeStatic } from '../observable/merge';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction, MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(concurrent?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(...observables: Array | SchedulerLike | number>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(...observables: Array | SchedulerLike | number>): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link merge}.\n */\nexport function merge(...observables: Array | SchedulerLike | number>): OperatorFunction {\n return (source: Observable) => source.lift.call(mergeStatic(source, ...observables));\n}\n","export default function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}","import _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}","import _curry1 from \"./_curry1.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}","import _curry1 from \"./_curry1.js\";\nimport _curry2 from \"./_curry2.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry3(fn) {\n return function f3(a, b, c) {\n switch (arguments.length) {\n case 0:\n return f3;\n\n case 1:\n return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n });\n\n case 2:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _curry1(function (_c) {\n return fn(a, b, _c);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) {\n return fn(_a, _b, c);\n }) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b, c);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b, c);\n }) : _isPlaceholder(c) ? _curry1(function (_c) {\n return fn(a, b, _c);\n }) : fn(a, b, c);\n }\n };\n}","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nexport default Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};","export default function _isString(x) {\n return Object.prototype.toString.call(x) === '[object String]';\n}","import _curry1 from \"./_curry1.js\";\nimport _isArray from \"./_isArray.js\";\nimport _isString from \"./_isString.js\";\n/**\n * Tests whether or not an object is similar to an array.\n *\n * @private\n * @category Type\n * @category List\n * @sig * -> Boolean\n * @param {*} x The object to test.\n * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise.\n * @example\n *\n * _isArrayLike([]); //=> true\n * _isArrayLike(true); //=> false\n * _isArrayLike({}); //=> false\n * _isArrayLike({length: 10}); //=> false\n * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true\n */\n\nvar _isArrayLike =\n/*#__PURE__*/\n_curry1(function isArrayLike(x) {\n if (_isArray(x)) {\n return true;\n }\n\n if (!x) {\n return false;\n }\n\n if (typeof x !== 'object') {\n return false;\n }\n\n if (_isString(x)) {\n return false;\n }\n\n if (x.nodeType === 1) {\n return !!x.length;\n }\n\n if (x.length === 0) {\n return true;\n }\n\n if (x.length > 0) {\n return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1);\n }\n\n return false;\n});\n\nexport default _isArrayLike;","var XWrap =\n/*#__PURE__*/\nfunction () {\n function XWrap(fn) {\n this.f = fn;\n }\n\n XWrap.prototype['@@transducer/init'] = function () {\n throw new Error('init not implemented on XWrap');\n };\n\n XWrap.prototype['@@transducer/result'] = function (acc) {\n return acc;\n };\n\n XWrap.prototype['@@transducer/step'] = function (acc, x) {\n return this.f(acc, x);\n };\n\n return XWrap;\n}();\n\nexport default function _xwrap(fn) {\n return new XWrap(fn);\n}","export default function _arity(n, fn) {\n /* eslint-disable no-unused-vars */\n switch (n) {\n case 0:\n return function () {\n return fn.apply(this, arguments);\n };\n\n case 1:\n return function (a0) {\n return fn.apply(this, arguments);\n };\n\n case 2:\n return function (a0, a1) {\n return fn.apply(this, arguments);\n };\n\n case 3:\n return function (a0, a1, a2) {\n return fn.apply(this, arguments);\n };\n\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.apply(this, arguments);\n };\n\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.apply(this, arguments);\n };\n\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.apply(this, arguments);\n };\n\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.apply(this, arguments);\n };\n\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.apply(this, arguments);\n };\n\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.apply(this, arguments);\n };\n\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.apply(this, arguments);\n };\n\n default:\n throw new Error('First argument to _arity must be a non-negative integer no greater than ten');\n }\n}","import _arity from \"./internal/_arity.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Creates a function that is bound to a context.\n * Note: `R.bind` does not provide the additional argument-binding capabilities of\n * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @category Object\n * @sig (* -> *) -> {*} -> (* -> *)\n * @param {Function} fn The function to bind to context\n * @param {Object} thisObj The context to bind `fn` to\n * @return {Function} A function that will execute in the context of `thisObj`.\n * @see R.partial\n * @example\n *\n * const log = R.bind(console.log, console);\n * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3}\n * // logs {a: 2}\n * @symb R.bind(f, o)(a, b) = f.call(o, a, b)\n */\n\nvar bind =\n/*#__PURE__*/\n_curry2(function bind(fn, thisObj) {\n return _arity(fn.length, function () {\n return fn.apply(thisObj, arguments);\n });\n});\n\nexport default bind;","import _isArrayLike from \"./_isArrayLike.js\";\nimport _xwrap from \"./_xwrap.js\";\nimport bind from \"../bind.js\";\n\nfunction _arrayReduce(xf, acc, list) {\n var idx = 0;\n var len = list.length;\n\n while (idx < len) {\n acc = xf['@@transducer/step'](acc, list[idx]);\n\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n\n idx += 1;\n }\n\n return xf['@@transducer/result'](acc);\n}\n\nfunction _iterableReduce(xf, acc, iter) {\n var step = iter.next();\n\n while (!step.done) {\n acc = xf['@@transducer/step'](acc, step.value);\n\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n\n step = iter.next();\n }\n\n return xf['@@transducer/result'](acc);\n}\n\nfunction _methodReduce(xf, acc, obj, methodName) {\n return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc));\n}\n\nvar symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';\nexport default function _reduce(fn, acc, list) {\n if (typeof fn === 'function') {\n fn = _xwrap(fn);\n }\n\n if (_isArrayLike(list)) {\n return _arrayReduce(fn, acc, list);\n }\n\n if (typeof list['fantasy-land/reduce'] === 'function') {\n return _methodReduce(fn, acc, list, 'fantasy-land/reduce');\n }\n\n if (list[symIterator] != null) {\n return _iterableReduce(fn, acc, list[symIterator]());\n }\n\n if (typeof list.next === 'function') {\n return _iterableReduce(fn, acc, list);\n }\n\n if (typeof list.reduce === 'function') {\n return _methodReduce(fn, acc, list, 'reduce');\n }\n\n throw new TypeError('reduce: list must be array or iterable');\n}","import _curry3 from \"./internal/_curry3.js\";\nimport _reduce from \"./internal/_reduce.js\";\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * The iterator function receives two values: *(acc, value)*. It may use\n * [`R.reduced`](#reduced) to shortcut the iteration.\n *\n * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function\n * is *(value, acc)*.\n *\n * Note: `R.reduce` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduce` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description\n *\n * Dispatches to the `reduce` method of the third argument, if present. When\n * doing so, it is up to the user to handle the [`R.reduced`](#reduced)\n * shortcuting, as this is not implemented by `reduce`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduced, R.addIndex, R.reduceRight\n * @example\n *\n * R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10\n * // - -10\n * // / \\ / \\\n * // - 4 -6 4\n * // / \\ / \\\n * // - 3 ==> -3 3\n * // / \\ / \\\n * // - 2 -1 2\n * // / \\ / \\\n * // 0 1 0 1\n *\n * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d)\n */\n\nvar reduce =\n/*#__PURE__*/\n_curry3(_reduce);\n\nexport default reduce;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Creates a new list out of the two supplied by pairing up equally-positioned\n * items from both lists. The returned list is truncated to the length of the\n * shorter of the two input lists.\n * Note: `zip` is equivalent to `zipWith(function(a, b) { return [a, b] })`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [b] -> [[a,b]]\n * @param {Array} list1 The first array to consider.\n * @param {Array} list2 The second array to consider.\n * @return {Array} The list made by pairing up same-indexed elements of `list1` and `list2`.\n * @example\n *\n * R.zip([1, 2, 3], ['a', 'b', 'c']); //=> [[1, 'a'], [2, 'b'], [3, 'c']]\n * @symb R.zip([a, b, c], [d, e, f]) = [[a, d], [b, e], [c, f]]\n */\n\nvar zip =\n/*#__PURE__*/\n_curry2(function zip(a, b) {\n var rv = [];\n var idx = 0;\n var len = Math.min(a.length, b.length);\n\n while (idx < len) {\n rv[idx] = [a[idx], b[idx]];\n idx += 1;\n }\n\n return rv;\n});\n\nexport default zip;","export default function _isNumber(x) {\n return Object.prototype.toString.call(x) === '[object Number]';\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _isNumber from \"./internal/_isNumber.js\";\n/**\n * Returns a list of numbers from `from` (inclusive) to `to` (exclusive).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> Number -> [Number]\n * @param {Number} from The first number in the list.\n * @param {Number} to One more than the last number in the list.\n * @return {Array} The list of numbers in the set `[a, b)`.\n * @example\n *\n * R.range(1, 5); //=> [1, 2, 3, 4]\n * R.range(50, 53); //=> [50, 51, 52]\n */\n\nvar range =\n/*#__PURE__*/\n_curry2(function range(from, to) {\n if (!(_isNumber(from) && _isNumber(to))) {\n throw new TypeError('Both arguments to range must be numbers');\n }\n\n var result = [];\n var n = from;\n\n while (n < to) {\n result.push(n);\n n += 1;\n }\n\n return result;\n});\n\nexport default range;","export default function _arrayFromIterator(iter) {\n var list = [];\n var next;\n\n while (!(next = iter.next()).done) {\n list.push(next.value);\n }\n\n return list;\n}","export default function _includesWith(pred, x, list) {\n var idx = 0;\n var len = list.length;\n\n while (idx < len) {\n if (pred(x, list[idx])) {\n return true;\n }\n\n idx += 1;\n }\n\n return false;\n}","export default function _has(prop, obj) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}","// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction _objectIs(a, b) {\n // SameValue algorithm\n if (a === b) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return a !== 0 || 1 / a === 1 / b;\n } else {\n // Step 6.a: NaN == NaN\n return a !== a && b !== b;\n }\n}\n\nexport default typeof Object.is === 'function' ? Object.is : _objectIs;","import _has from \"./_has.js\";\nvar toString = Object.prototype.toString;\n\nvar _isArguments =\n/*#__PURE__*/\nfunction () {\n return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) {\n return toString.call(x) === '[object Arguments]';\n } : function _isArguments(x) {\n return _has('callee', x);\n };\n}();\n\nexport default _isArguments;","import _curry1 from \"./internal/_curry1.js\";\nimport _has from \"./internal/_has.js\";\nimport _isArguments from \"./internal/_isArguments.js\"; // cover IE < 9 keys issues\n\nvar hasEnumBug = !\n/*#__PURE__*/\n{\n toString: null\n}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; // Safari bug\n\nvar hasArgsEnumBug =\n/*#__PURE__*/\nfunction () {\n 'use strict';\n\n return arguments.propertyIsEnumerable('length');\n}();\n\nvar contains = function contains(list, item) {\n var idx = 0;\n\n while (idx < list.length) {\n if (list[idx] === item) {\n return true;\n }\n\n idx += 1;\n }\n\n return false;\n};\n/**\n * Returns a list containing the names of all the enumerable own properties of\n * the supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own properties.\n * @see R.keysIn, R.values\n * @example\n *\n * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c']\n */\n\n\nvar keys = typeof Object.keys === 'function' && !hasArgsEnumBug ?\n/*#__PURE__*/\n_curry1(function keys(obj) {\n return Object(obj) !== obj ? [] : Object.keys(obj);\n}) :\n/*#__PURE__*/\n_curry1(function keys(obj) {\n if (Object(obj) !== obj) {\n return [];\n }\n\n var prop, nIdx;\n var ks = [];\n\n var checkArgsLength = hasArgsEnumBug && _isArguments(obj);\n\n for (prop in obj) {\n if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) {\n ks[ks.length] = prop;\n }\n }\n\n if (hasEnumBug) {\n nIdx = nonEnumerableProps.length - 1;\n\n while (nIdx >= 0) {\n prop = nonEnumerableProps[nIdx];\n\n if (_has(prop, obj) && !contains(ks, prop)) {\n ks[ks.length] = prop;\n }\n\n nIdx -= 1;\n }\n }\n\n return ks;\n});\nexport default keys;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Gives a single-word string description of the (native) type of a value,\n * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not\n * attempt to distinguish user Object types any further, reporting them all as\n * 'Object'.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Type\n * @sig (* -> {*}) -> String\n * @param {*} val The value to test\n * @return {String}\n * @example\n *\n * R.type({}); //=> \"Object\"\n * R.type(1); //=> \"Number\"\n * R.type(false); //=> \"Boolean\"\n * R.type('s'); //=> \"String\"\n * R.type(null); //=> \"Null\"\n * R.type([]); //=> \"Array\"\n * R.type(/[A-z]/); //=> \"RegExp\"\n * R.type(() => {}); //=> \"Function\"\n * R.type(undefined); //=> \"Undefined\"\n */\n\nvar type =\n/*#__PURE__*/\n_curry1(function type(val) {\n return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1);\n});\n\nexport default type;","import _arrayFromIterator from \"./_arrayFromIterator.js\";\nimport _includesWith from \"./_includesWith.js\";\nimport _functionName from \"./_functionName.js\";\nimport _has from \"./_has.js\";\nimport _objectIs from \"./_objectIs.js\";\nimport keys from \"../keys.js\";\nimport type from \"../type.js\";\n/**\n * private _uniqContentEquals function.\n * That function is checking equality of 2 iterator contents with 2 assumptions\n * - iterators lengths are the same\n * - iterators values are unique\n *\n * false-positive result will be returned for comparision of, e.g.\n * - [1,2,3] and [1,2,3,4]\n * - [1,1,1] and [1,2,3]\n * */\n\nfunction _uniqContentEquals(aIterator, bIterator, stackA, stackB) {\n var a = _arrayFromIterator(aIterator);\n\n var b = _arrayFromIterator(bIterator);\n\n function eq(_a, _b) {\n return _equals(_a, _b, stackA.slice(), stackB.slice());\n } // if *a* array contains any element that is not included in *b*\n\n\n return !_includesWith(function (b, aItem) {\n return !_includesWith(eq, aItem, b);\n }, b, a);\n}\n\nexport default function _equals(a, b, stackA, stackB) {\n if (_objectIs(a, b)) {\n return true;\n }\n\n var typeA = type(a);\n\n if (typeA !== type(b)) {\n return false;\n }\n\n if (a == null || b == null) {\n return false;\n }\n\n if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') {\n return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a);\n }\n\n if (typeof a.equals === 'function' || typeof b.equals === 'function') {\n return typeof a.equals === 'function' && a.equals(b) && typeof b.equals === 'function' && b.equals(a);\n }\n\n switch (typeA) {\n case 'Arguments':\n case 'Array':\n case 'Object':\n if (typeof a.constructor === 'function' && _functionName(a.constructor) === 'Promise') {\n return a === b;\n }\n\n break;\n\n case 'Boolean':\n case 'Number':\n case 'String':\n if (!(typeof a === typeof b && _objectIs(a.valueOf(), b.valueOf()))) {\n return false;\n }\n\n break;\n\n case 'Date':\n if (!_objectIs(a.valueOf(), b.valueOf())) {\n return false;\n }\n\n break;\n\n case 'Error':\n return a.name === b.name && a.message === b.message;\n\n case 'RegExp':\n if (!(a.source === b.source && a.global === b.global && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.sticky === b.sticky && a.unicode === b.unicode)) {\n return false;\n }\n\n break;\n }\n\n var idx = stackA.length - 1;\n\n while (idx >= 0) {\n if (stackA[idx] === a) {\n return stackB[idx] === b;\n }\n\n idx -= 1;\n }\n\n switch (typeA) {\n case 'Map':\n if (a.size !== b.size) {\n return false;\n }\n\n return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b]));\n\n case 'Set':\n if (a.size !== b.size) {\n return false;\n }\n\n return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b]));\n\n case 'Arguments':\n case 'Array':\n case 'Object':\n case 'Boolean':\n case 'Number':\n case 'String':\n case 'Date':\n case 'Error':\n case 'RegExp':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'ArrayBuffer':\n break;\n\n default:\n // Values of other types are only equal if identical.\n return false;\n }\n\n var keysA = keys(a);\n\n if (keysA.length !== keys(b).length) {\n return false;\n }\n\n var extendedStackA = stackA.concat([a]);\n var extendedStackB = stackB.concat([b]);\n idx = keysA.length - 1;\n\n while (idx >= 0) {\n var key = keysA[idx];\n\n if (!(_has(key, b) && _equals(b[key], a[key], extendedStackA, extendedStackB))) {\n return false;\n }\n\n idx -= 1;\n }\n\n return true;\n}","export default function _functionName(f) {\n // String(x => x) evaluates to \"x => x\", so the pattern may not match.\n var match = String(f).match(/^function (\\w*)/);\n return match == null ? '' : match[1];\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _equals from \"./internal/_equals.js\";\n/**\n * Returns `true` if its arguments are equivalent, `false` otherwise. Handles\n * cyclical data structures.\n *\n * Dispatches symmetrically to the `equals` methods of both arguments, if\n * present.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -> b -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n * R.equals(1, 1); //=> true\n * R.equals(1, '1'); //=> false\n * R.equals([1, 2, 3], [1, 2, 3]); //=> true\n *\n * const a = {}; a.v = a;\n * const b = {}; b.v = b;\n * R.equals(a, b); //=> true\n */\n\nvar equals =\n/*#__PURE__*/\n_curry2(function equals(a, b) {\n return _equals(a, b, [], []);\n});\n\nexport default equals;","import _indexOf from \"./_indexOf.js\";\nexport default function _includes(a, list) {\n return _indexOf(list, a, 0) >= 0;\n}","import equals from \"../equals.js\";\nexport default function _indexOf(list, a, idx) {\n var inf, item; // Array.prototype.indexOf doesn't exist below IE9\n\n if (typeof list.indexOf === 'function') {\n switch (typeof a) {\n case 'number':\n if (a === 0) {\n // manually crawl the list to distinguish between +0 and -0\n inf = 1 / a;\n\n while (idx < list.length) {\n item = list[idx];\n\n if (item === 0 && 1 / item === inf) {\n return idx;\n }\n\n idx += 1;\n }\n\n return -1;\n } else if (a !== a) {\n // NaN\n while (idx < list.length) {\n item = list[idx];\n\n if (typeof item === 'number' && item !== item) {\n return idx;\n }\n\n idx += 1;\n }\n\n return -1;\n } // non-zero numbers can utilise Set\n\n\n return list.indexOf(a, idx);\n // all these types can utilise Set\n\n case 'string':\n case 'boolean':\n case 'function':\n case 'undefined':\n return list.indexOf(a, idx);\n\n case 'object':\n if (a === null) {\n // null can utilise Set\n return list.indexOf(a, idx);\n }\n\n }\n } // anything else not covered above, defer to R.equals\n\n\n while (idx < list.length) {\n if (equals(list[idx], a)) {\n return idx;\n }\n\n idx += 1;\n }\n\n return -1;\n}","import _includes from \"./_includes.js\";\n\nvar _Set =\n/*#__PURE__*/\nfunction () {\n function _Set() {\n /* globals Set */\n this._nativeSet = typeof Set === 'function' ? new Set() : null;\n this._items = {};\n }\n\n // until we figure out why jsdoc chokes on this\n // @param item The item to add to the Set\n // @returns {boolean} true if the item did not exist prior, otherwise false\n //\n _Set.prototype.add = function (item) {\n return !hasOrAdd(item, true, this);\n }; //\n // @param item The item to check for existence in the Set\n // @returns {boolean} true if the item exists in the Set, otherwise false\n //\n\n\n _Set.prototype.has = function (item) {\n return hasOrAdd(item, false, this);\n }; //\n // Combines the logic for checking whether an item is a member of the set and\n // for adding a new item to the set.\n //\n // @param item The item to check or add to the Set instance.\n // @param shouldAdd If true, the item will be added to the set if it doesn't\n // already exist.\n // @param set The set instance to check or add to.\n // @return {boolean} true if the item already existed, otherwise false.\n //\n\n\n return _Set;\n}();\n\nfunction hasOrAdd(item, shouldAdd, set) {\n var type = typeof item;\n var prevSize, newSize;\n\n switch (type) {\n case 'string':\n case 'number':\n // distinguish between +0 and -0\n if (item === 0 && 1 / item === -Infinity) {\n if (set._items['-0']) {\n return true;\n } else {\n if (shouldAdd) {\n set._items['-0'] = true;\n }\n\n return false;\n }\n } // these types can all utilise the native Set\n\n\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n\n set._nativeSet.add(item);\n\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = {};\n set._items[type][item] = true;\n }\n\n return false;\n } else if (item in set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][item] = true;\n }\n\n return false;\n }\n }\n\n case 'boolean':\n // set._items['boolean'] holds a two element array\n // representing [ falseExists, trueExists ]\n if (type in set._items) {\n var bIdx = item ? 1 : 0;\n\n if (set._items[type][bIdx]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][bIdx] = true;\n }\n\n return false;\n }\n } else {\n if (shouldAdd) {\n set._items[type] = item ? [false, true] : [true, false];\n }\n\n return false;\n }\n\n case 'function':\n // compare functions for reference equality\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n\n set._nativeSet.add(item);\n\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n\n return false;\n }\n\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n\n return false;\n }\n\n return true;\n }\n\n case 'undefined':\n if (set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type] = true;\n }\n\n return false;\n }\n\n case 'object':\n if (item === null) {\n if (!set._items['null']) {\n if (shouldAdd) {\n set._items['null'] = true;\n }\n\n return false;\n }\n\n return true;\n }\n\n /* falls through */\n\n default:\n // reduce the search size of heterogeneous sets by creating buckets\n // for each type.\n type = Object.prototype.toString.call(item);\n\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n\n return false;\n } // scan through all previously applied items\n\n\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n\n return false;\n }\n\n return true;\n }\n} // A simple Set type that honours R.equals semantics\n\n\nexport default _Set;","import _curry2 from \"./internal/_curry2.js\";\nimport _Set from \"./internal/_Set.js\";\n/**\n * Finds the set (i.e. no duplicates) of all elements in the first list not\n * contained in the second list. Objects and Arrays are compared in terms of\n * value equality, not reference equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` that are not in `list2`.\n * @see R.differenceWith, R.symmetricDifference, R.symmetricDifferenceWith, R.without\n * @example\n *\n * R.difference([1,2,3,4], [7,6,5,4,3]); //=> [1,2]\n * R.difference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5]\n * R.difference([{a: 1}, {b: 2}], [{a: 1}, {c: 3}]) //=> [{b: 2}]\n */\n\nvar difference =\n/*#__PURE__*/\n_curry2(function difference(first, second) {\n var out = [];\n var idx = 0;\n var firstLen = first.length;\n var secondLen = second.length;\n var toFilterOut = new _Set();\n\n for (var i = 0; i < secondLen; i += 1) {\n toFilterOut.add(second[i]);\n }\n\n while (idx < firstLen) {\n if (toFilterOut.add(first[idx])) {\n out[out.length] = first[idx];\n }\n\n idx += 1;\n }\n\n return out;\n});\n\nexport default difference;","import { Subscriber } from './Subscriber';\nimport { InnerSubscriber } from './InnerSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class OuterSubscriber extends Subscriber {\n notifyNext(outerValue: T, innerValue: R,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber): void {\n this.destination.next(innerValue);\n }\n\n notifyError(error: any, innerSub: InnerSubscriber): void {\n this.destination.error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n this.destination.complete();\n }\n}\n","import { Subscriber } from './Subscriber';\nimport { OuterSubscriber } from './OuterSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class InnerSubscriber extends Subscriber {\n private index = 0;\n\n constructor(private parent: OuterSubscriber, public outerValue: T, public outerIndex: number) {\n super();\n }\n\n protected _next(value: R): void {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n","import { Subscription } from '../Subscription';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { Subscriber } from '../Subscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue: undefined,\n outerIndex: undefined,\n innerSubscriber: InnerSubscriber\n): Subscription | undefined;\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue?: T,\n outerIndex?: number\n): Subscription | undefined;\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue?: T,\n outerIndex?: number,\n innerSubscriber: Subscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex)\n): Subscription | undefined {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber) as Subscription;\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function withLatestFrom(project: (v1: T) => R): OperatorFunction;\nexport function withLatestFrom, R>(source2: O2, project: (v1: T, v2: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, R>(v2: O2, v3: O3, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, R>(v2: O2, v3: O3, v4: O4, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(v2: O2, v3: O3, v4: O4, v5: O5, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom>(source2: O2): OperatorFunction]>;\nexport function withLatestFrom, O3 extends ObservableInput>(v2: O2, v3: O3): OperatorFunction, ObservedValueOf]>;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput>(v2: O2, v3: O3, v4: O4): OperatorFunction, ObservedValueOf, ObservedValueOf]>;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v2: O2, v3: O3, v4: O4, v5: O5): OperatorFunction, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): OperatorFunction, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function withLatestFrom(...observables: Array | ((...values: Array) => R)>): OperatorFunction;\nexport function withLatestFrom(array: ObservableInput[]): OperatorFunction;\nexport function withLatestFrom(array: ObservableInput[], project: (...values: Array) => R): OperatorFunction;\n\n/* tslint:enable:max-line-length */\n\n/**\n * Combines the source Observable with other Observables to create an Observable\n * whose values are calculated from the latest values of each, only when the\n * source emits.\n *\n * Whenever the source Observable emits a value, it\n * computes a formula using that value plus the latest values from other input\n * Observables, then emits the output of that formula.\n *\n * ![](withLatestFrom.png)\n *\n * `withLatestFrom` combines each value from the source Observable (the\n * instance) with the latest values from the other input Observables only when\n * the source emits a value, optionally using a `project` function to determine\n * the value to be emitted on the output Observable. All input Observables must\n * emit at least one value before the output Observable will emit a value.\n *\n * ## Example\n * On every click event, emit an array with the latest timer event plus the click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { withLatestFrom } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const result = clicks.pipe(withLatestFrom(timer));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatest}\n *\n * @param {ObservableInput} other An input Observable to combine with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {Function} [project] Projection function for combining values\n * together. Receives all values in order of the Observables passed, where the\n * first parameter is a value from the source Observable. (e.g.\n * `a.pipe(withLatestFrom(b, c), map(([a1, b1, c1]) => a1 + b1 + c1))`). If this is not\n * passed, arrays will be emitted on the output Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n * @method withLatestFrom\n * @owner Observable\n */\nexport function withLatestFrom(...args: Array | ((...values: Array) => R)>): OperatorFunction {\n return (source: Observable) => {\n let project: any;\n if (typeof args[args.length - 1] === 'function') {\n project = args.pop();\n }\n const observables = []>args;\n return source.lift(new WithLatestFromOperator(observables, project));\n };\n}\n\nclass WithLatestFromOperator implements Operator {\n constructor(private observables: Observable[],\n private project?: (...values: any[]) => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WithLatestFromSubscriber extends OuterSubscriber {\n private values: any[];\n private toRespond: number[] = [];\n\n constructor(destination: Subscriber,\n private observables: Observable[],\n private project?: (...values: any[]) => Observable) {\n super(destination);\n const len = observables.length;\n this.values = new Array(len);\n\n for (let i = 0; i < len; i++) {\n this.toRespond.push(i);\n }\n\n for (let i = 0; i < len; i++) {\n let observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n\n notifyNext(_outerValue: T, innerValue: R,\n outerIndex: number): void {\n this.values[outerIndex] = innerValue;\n const toRespond = this.toRespond;\n if (toRespond.length > 0) {\n const found = toRespond.indexOf(outerIndex);\n if (found !== -1) {\n toRespond.splice(found, 1);\n }\n }\n }\n\n notifyComplete() {\n // noop\n }\n\n protected _next(value: T) {\n if (this.toRespond.length === 0) {\n const args = [value, ...this.values];\n if (this.project) {\n this._tryProject(args);\n } else {\n this.destination.next!(args);\n }\n }\n }\n\n private _tryProject(args: any[]) {\n let result: any;\n try {\n result = this.project!.apply(this, args);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.destination.next!(result);\n }\n}\n","import { Action, Observable, Reducer } from 'redux'\r\nimport { ActionsObservable, ofType, StateObservable } from 'redux-observable'\r\nimport * as R from 'ramda'\r\nimport { from, iif, of } from 'rxjs'\r\nimport { catchError, delay, filter, map, mergeMap, withLatestFrom } from 'rxjs/operators'\r\nimport { ApplicationState, AppThunkAction } from '.'\r\nimport { ConfigurationClient, ConfigurationSettingsRequestDTO, ConfigurationSettingsResponseDTO, TransportConfigurationSettings, TransportEclypseIpSetting, TransportModemIpSetting } from '../generated/ApiClient'\r\nimport { ToRequest, ToTransport } from '../generated/ApiClientExtensions'\r\n\r\nexport const PagingAmount = 10\r\n\r\nexport interface TransportAppState {\r\n isLoading: boolean\r\n transportConfig: TransportConfigurationSettings | undefined\r\n lastHighestIp: number\r\n}\r\n\r\ninterface RequestTransportConfigAction {\r\n type: 'transporter/REQUEST_CONFIG'\r\n}\r\n\r\ninterface RetryTransportConfigAction {\r\n type: 'transporter/RETRY_CONFIG'\r\n}\r\n\r\ninterface ResponseTransportConfigAction {\r\n type: 'transporter/RECEIVE_CONFIG'\r\n transportConfig: TransportConfigurationSettings\r\n}\r\n\r\ninterface AddOrUpdateIpSettingAction {\r\n type: 'transporter/ADD_OR_UPDATE_IP_SETTINGS'\r\n ipSettings: [string | undefined, TransportModemIpSetting | TransportEclypseIpSetting][]\r\n}\r\n\r\ninterface RemoveIpSettingAction {\r\n type: 'transporter/REMOVE_IP_SETTINGS'\r\n ipSettings: [string, TransportModemIpSetting | TransportEclypseIpSetting][]\r\n}\r\n\r\ntype TransportAppAction = RequestTransportConfigAction | RetryTransportConfigAction | ResponseTransportConfigAction | AddOrUpdateIpSettingAction | RemoveIpSettingAction\r\n\r\n/**\r\n * development port odin-web uses\r\n */\r\nconst DevPort = 44351\r\n/**\r\n * randomly generated number not in this list\r\n * https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers\r\n */\r\nconst LocalPort = 45773\r\nconst LocalURL = (p: number) => `https://localhost:${p}`\r\n\r\nexport const refreshConfigEpic = (action$: ActionsObservable) => {\r\n const getFrom = (port: number) => {\r\n const client = new ConfigurationClient(LocalURL(port))\r\n return from(client.get()).pipe(\r\n map(s => ({ type: 'transporter/RECEIVE_CONFIG', transportConfig: ToTransport(s) })))\r\n }\r\n // if we don't find the config, try on the dev port. If neither succeeds, retry. This would occur if a user hasn't installed the application yet\r\n return action$.pipe(\r\n ofType('transporter/REQUEST_CONFIG', 'transporter/RETRY_CONFIG'),\r\n mergeMap(() =>\r\n getFrom(LocalPort).pipe(\r\n catchError((err, caught) =>\r\n iif(() => process.env.NODE_ENV !== 'production', getFrom(DevPort)).pipe(\r\n catchError((e, c) =>\r\n of({ type: 'transporter/RETRY_CONFIG' })\r\n .pipe(delay(15000)))\r\n )\r\n )\r\n )\r\n )\r\n )\r\n}\r\n\r\nexport const sendConfigEpic = (action$: ActionsObservable, state$: StateObservable) => {\r\n const set = (port: number, config: ConfigurationSettingsRequestDTO) => {\r\n const client = new ConfigurationClient(LocalURL(port))\r\n return from(client.set(config)).pipe(\r\n map(s => ({ type: 'transporter/RECEIVE_CONFIG', transportConfig: ToTransport(s) })))\r\n }\r\n return action$.pipe(\r\n ofType('transporter/ADD_OR_UPDATE_IP_SETTINGS', 'transporter/REMOVE_IP_SETTINGS'),\r\n withLatestFrom(state$),\r\n // only send updates if we have the transport config. We should have the config by now, as no UI elements should allow changing the config if we don't already have it\r\n filter(([, state]) => !!state.transportAppState?.transportConfig),\r\n mergeMap(([, state]) => {\r\n const url = `${window.location.origin}/api/RelayApi/forwardRequest`\r\n // clear out endpoint and authentication code for now in develop so that they don't overwrite the settings that are correct for the azure function\r\n const config = { ...ToRequest(state.transportAppState!.transportConfig!), cloudEndpoint: url }\r\n return set(LocalPort, config).pipe(\r\n catchError((err, caught) =>\r\n iif(() => process.env.NODE_ENV !== 'production', set(DevPort, config)).pipe(\r\n catchError((e, c) => of({ type: 'transporter/RETRY_CONFIG' }))\r\n )\r\n )\r\n )\r\n })\r\n )\r\n}\r\n\r\nexport const actionCreators = {\r\n requestTransportConfig: (): AppThunkAction => (dispatch, getState) => {\r\n const appState = getState()\r\n if (appState && appState.transportAppState && (!appState.transportAppState.isLoading || !appState.transportAppState.transportConfig)) {\r\n dispatch({ type: 'transporter/REQUEST_CONFIG' })\r\n }\r\n },\r\n addOrUpdateIpSettings: (ipSettings: [string | undefined, TransportModemIpSetting | TransportEclypseIpSetting][]): AppThunkAction => (dispatch, getState) => {\r\n const config = getState().transportAppState\r\n if (config && config?.transportConfig) {\r\n dispatch({ type: 'transporter/ADD_OR_UPDATE_IP_SETTINGS', ipSettings })\r\n }\r\n },\r\n removeIpSettings: (ipSettings: [string, TransportModemIpSetting | TransportEclypseIpSetting][]): AppThunkAction => (dispatch, getState) => {\r\n const modems = getState().transportAppState?.transportConfig?.simulatorToRemoteIpMap\r\n if (modems) {\r\n dispatch({ type: 'transporter/REMOVE_IP_SETTINGS', ipSettings })\r\n }\r\n }\r\n}\r\n\r\nconst unloadedState = { isLoading: false, transportConfig: undefined, lastHighestIp: 1 }\r\n\r\nexport const reducer: Reducer = (state: TransportAppState | undefined, incomingAction: Action): TransportAppState => {\r\n if (state === undefined)\r\n return unloadedState\r\n\r\n const action = incomingAction as TransportAppAction\r\n switch (action.type) {\r\n case 'transporter/REQUEST_CONFIG':\r\n return {\r\n ...state,\r\n transportConfig: undefined,\r\n isLoading: true\r\n }\r\n case 'transporter/RETRY_CONFIG':\r\n return {\r\n ...state,\r\n isLoading: false\r\n }\r\n case 'transporter/ADD_OR_UPDATE_IP_SETTINGS':\r\n if (state.transportConfig !== undefined) {\r\n // there's an issue with the transport app, where it cannot start a new listener on the same IP, even if it has already been stopped\r\n // const usedIps = Object.entries(modems).map(([ip, _]) => ip)\r\n // const withIps = R.zip(R.difference(R.range(2, 254).map(s => `127.0.0.${s}`), usedIps), ipSettings).map<[string, TransportModemIpSetting | TransportEclypseIpSetting]>(([ip, [_, setting]]) => [ip, setting])\r\n const numbers = Object.entries(state.transportConfig.simulatorToRemoteIpMap).map(([ip, _]) => parseInt(ip.slice(ip.lastIndexOf('.') + 1)))\r\n const highestIp = R.reduce(Math.max, state.lastHighestIp, numbers) + 1\r\n const withIps = R.zip(R.range(highestIp, 254).map(s => `127.0.0.${s}`), action.ipSettings).map(([ip, [_, setting]]) => [ip, setting])\r\n return {\r\n ...state,\r\n lastHighestIp: highestIp,\r\n transportConfig: {\r\n ...state.transportConfig,\r\n simulatorToRemoteIpMap: {\r\n ...state.transportConfig.simulatorToRemoteIpMap,\r\n ...Object.fromEntries(withIps)\r\n }\r\n }\r\n }\r\n }\r\n break\r\n case 'transporter/REMOVE_IP_SETTINGS':\r\n if (state.transportConfig !== undefined)\r\n return {\r\n ...state,\r\n transportConfig: {\r\n ...state.transportConfig,\r\n simulatorToRemoteIpMap:\r\n // delete entries in simulators that are in ipSettings\r\n Object.fromEntries(R.difference(Object.entries(state.transportConfig.simulatorToRemoteIpMap), action.ipSettings))\r\n }\r\n }\r\n break\r\n case 'transporter/RECEIVE_CONFIG':\r\n return {\r\n ...state,\r\n transportConfig: action.transportConfig,\r\n isLoading: false\r\n }\r\n }\r\n return state\r\n}","import { Action, Reducer } from 'redux'\r\nimport { AppThunkAction, AppThunkFunc } from '.'\r\nimport { UsersClient, UserWithOrganizationResponseDTO, AdminUserRequestDTO, OrganizationsClient, RoleValues } from '../generated/ApiClient'\r\nimport { actionCreators as snackbar, SnackbarAction } from './AlertSnackbarStore'\r\n\r\nexport const PagingAmount = 10\r\n\r\nexport interface UsersState {\r\n isLoading: boolean\r\n byId: { [key: string]: UserWithOrganizationResponseDTO }\r\n}\r\n\r\nexport interface User {\r\n name: string | undefined,\r\n phone: string | undefined,\r\n email: string | undefined,\r\n}\r\n\r\ninterface RequestUsersAction {\r\n type: 'users/RequestUsers'\r\n}\r\n\r\ninterface RequestUserAction {\r\n type: 'users/RequestUser'\r\n}\r\n\r\ninterface ResponseUsersAction {\r\n type: 'users/ReceiveUsers'\r\n users: UserWithOrganizationResponseDTO[]\r\n}\r\n\r\ninterface RemoveUser {\r\n type: 'users/RemoveUser'\r\n id: string\r\n}\r\n\r\ntype UserAction = RequestUsersAction | RequestUserAction | ResponseUsersAction | RemoveUser\r\n\r\nexport const actionCreators = {\r\n requestUsers: (): AppThunkAction => async (dispatch, getState) => {\r\n dispatch({ type: 'users/RequestUsers' })\r\n const users = await new UsersClient().getMany3()\r\n dispatch({ type: 'users/ReceiveUsers', users: users })\r\n },\r\n requestUser: (id: string): AppThunkAction => async (dispatch, getState) => {\r\n dispatch({ type: 'users/RequestUser' })\r\n const user = await new UsersClient().get6(id)\r\n dispatch({ type: 'users/ReceiveUsers', users: [user] })\r\n },\r\n updateUser: (user: UserWithOrganizationResponseDTO, newOrganization: string | undefined, newRole: RoleValues | undefined): AppThunkAction => async (dispatch, getState) => {\r\n try {\r\n const shouldUpdateOrg = newOrganization !== user.organization?.externalId\r\n const shouldUpdateRole = newRole && (user.role.Case !== newRole || shouldUpdateOrg)\r\n if (shouldUpdateOrg || shouldUpdateRole) {\r\n if (shouldUpdateOrg) {\r\n if (user.organization?.externalId)\r\n await new OrganizationsClient().deleteUser(user.organization.externalId, user.azureId)\r\n if (newOrganization !== undefined)\r\n await new OrganizationsClient().addUser(newOrganization, user.azureId)\r\n }\r\n if (shouldUpdateRole) {\r\n const users = await new UsersClient().update5(user.azureId, { role: { Case: newRole! } })\r\n }\r\n const updatedUser = await new UsersClient().get6(user.azureId)\r\n dispatch({ type: 'users/ReceiveUsers', users: [updatedUser] })\r\n dispatch(snackbar.addMessage({ title: \"Info\", message: 'Member saved successfully.', alertType: 'success' }))\r\n }\r\n else\r\n dispatch(snackbar.addMessage({ title: \"Info\", message: 'Member saved successfully.', alertType: 'info' }))\r\n }\r\n catch (error) {\r\n dispatch(snackbar.addError(error, undefined, 'Failed to save member'))\r\n }\r\n },\r\n removeUser: (id: string): AppThunkAction => async (dispatch, getState) => {\r\n try {\r\n const result = await new UsersClient().delete4(id)\r\n dispatch({ type: 'users/RemoveUser', id })\r\n dispatch(snackbar.addMessage({ title: \"Removed member\", message: 'Successfully removed member', alertType: 'success' }))\r\n }\r\n catch (error) {\r\n dispatch(snackbar.addError(error, undefined, 'Failed to remove member'))\r\n }\r\n },\r\n addUserToOrganization: (organizationId: string, userIdOrEmail: string): AppThunkAction => async (dispatch, getState) => {\r\n try {\r\n const result = await new OrganizationsClient().addUser(organizationId, userIdOrEmail)\r\n const updatedUser = await new UsersClient().get6(result.azureId)\r\n dispatch({ type: 'users/ReceiveUsers', users: [updatedUser] })\r\n dispatch(snackbar.addMessage({ title: \"Removed member from organization\", message: 'Successfully removed member from organization', alertType: 'success' }))\r\n }\r\n catch (error) {\r\n dispatch(snackbar.addError(error, undefined, 'Failed to remove member'))\r\n }\r\n }\r\n}\r\n\r\nconst unloadedState: UsersState = {\r\n isLoading: false,\r\n byId: {},\r\n}\r\n\r\nexport const reducer: Reducer = (state: UsersState | undefined, incomingAction: Action): UsersState => {\r\n if (state === undefined)\r\n return unloadedState\r\n\r\n const action = incomingAction as UserAction\r\n switch (action.type) {\r\n case 'users/RequestUsers':\r\n case 'users/RequestUser':\r\n return {\r\n ...state,\r\n isLoading: true\r\n }\r\n case 'users/ReceiveUsers':\r\n return {\r\n ...state,\r\n isLoading: false,\r\n byId: {\r\n ...state.byId,\r\n ...Object.fromEntries(action.users.map(s => [s.azureId, s])) //TODO this is wrong\r\n }\r\n }\r\n case 'users/RemoveUser':\r\n const id = action.id\r\n const { [id]: value, ...withoutRemoved } = state.byId;\r\n return {\r\n ...state,\r\n byId: withoutRemoved\r\n }\r\n default:\r\n return state\r\n }\r\n}","import { DateTime } from 'luxon'\r\nimport { Action, Reducer } from 'redux'\r\nimport { LogMessageDTO } from '../generated/ApiClient'\r\n\r\nexport interface WebSocketState {\r\n messages: [string, LogMessageDTO][]\r\n}\r\n\r\ninterface ReceiveDiagnosticAction {\r\n type: 'sockets/ReceiveMessage'\r\n time: DateTime\r\n message: LogMessageDTO\r\n}\r\n\r\ninterface ReceiveErrorAction {\r\n type: 'sockets/ReceiveError'\r\n message: string\r\n}\r\n\r\ntype WebSocketAction = ReceiveDiagnosticAction | ReceiveErrorAction\r\n\r\nexport const actionCreators = {\r\n receiveMessage: (message: LogMessageDTO): WebSocketAction => ({ type: 'sockets/ReceiveMessage', time: DateTime.local(), message }),\r\n receiveError: (message: string): WebSocketAction => ({ type: 'sockets/ReceiveError', message })\r\n}\r\n\r\nconst unloadedState = { messages: [] }\r\n\r\nexport const reducer: Reducer = (state: WebSocketState | undefined, incomingAction: Action): WebSocketState => {\r\n if (state === undefined)\r\n return unloadedState\r\n\r\n const action = incomingAction as WebSocketAction\r\n switch (action.type) {\r\n case 'sockets/ReceiveMessage':\r\n const fiveMinutesAgo = action.time.minus({ minutes: 5 })\r\n return {\r\n messages: [\r\n [action.time.toISO(), action.message],\r\n ...state.messages.filter(([date, _]) => DateTime.fromISO(date) > fiveMinutesAgo)\r\n ]\r\n }\r\n default:\r\n return state\r\n }\r\n}","import * as Modems from './Modems';\r\nimport * as TransportConfig from './TransportApp';\r\nimport * as Snackbar from './AlertSnackbarStore';\r\nimport * as Users from './Users';\r\nimport * as WebSocketStore from './WebSocketStore';\r\n\r\n// The top-level state object\r\nexport interface ApplicationState {\r\n modems: Modems.ModemsState | undefined;\r\n transportAppState: TransportConfig.TransportAppState | undefined;\r\n snackbar: Snackbar.SnackbarState | undefined;\r\n users: Users.UsersState | undefined;\r\n webSocket: WebSocketStore.WebSocketState | undefined\r\n}\r\n\r\n// Whenever an action is dispatched, Redux will update each top-level application state property using\r\n// the reducer with the matching name. It's important that the names match exactly, and that the reducer\r\n// acts on the corresponding ApplicationState property type.\r\nexport const reducers = {\r\n modems: Modems.reducer,\r\n transportAppState: TransportConfig.reducer,\r\n snackbar: Snackbar.reducer,\r\n users: Users.reducer,\r\n webSocket: WebSocketStore.reducer\r\n};\r\n\r\n// This type can be used as a hint on action creators so that its 'dispatch' and 'getState' params are\r\n// correctly typed to match your store.\r\nexport interface AppThunkAction {\r\n (dispatch: (action: TAction) => void, getState: () => ApplicationState): void;\r\n}\r\n\r\nexport interface AppThunkFunc {\r\n (dispatch: (action: TAction) => Promise, getState: () => ApplicationState): Promise;\r\n}","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport { resolveToLocation, normalizeToLocation } from \"./utils/locationUtils\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const method = replace ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link\";\nimport { resolveToLocation, normalizeToLocation } from \"./utils/locationUtils\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","import * as React from 'react';\nimport createSvgIcon from './utils/createSvgIcon';\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6-3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z\"\n}), 'AccountCircle');","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { IPublicClientApplication, stubbedPublicClientApplication, Logger, InteractionStatus } from \"@azure/msal-browser\";\r\nimport { AccountIdentifiers } from \"./types/AccountIdentifiers\";\r\n\r\nexport interface IMsalContext {\r\n instance: IPublicClientApplication;\r\n inProgress: InteractionStatus;\r\n accounts: AccountIdentifiers[];\r\n logger: Logger;\r\n}\r\n\r\n/*\r\n * Stubbed context implementation\r\n * Only used when there is no provider, which is an unsupported scenario\r\n */\r\nconst defaultMsalContext: IMsalContext = {\r\n instance: stubbedPublicClientApplication,\r\n inProgress: InteractionStatus.None,\r\n accounts: [],\r\n logger: new Logger({})\r\n};\r\n\r\nexport const MsalContext = React.createContext(\r\n defaultMsalContext\r\n);\r\nexport const MsalConsumer = MsalContext.Consumer;\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\n\r\ntype FaaCFunction = (args: T) => React.ReactNode;\r\n\r\nexport function getChildrenOrFunction(\r\n children: React.ReactNode | FaaCFunction,\r\n args: T\r\n): React.ReactNode {\r\n if (typeof children === \"function\") {\r\n return children(args);\r\n }\r\n return children;\r\n}\r\n\r\n/*\r\n * Utility types\r\n * Reference: https://github.com/piotrwitek/utility-types\r\n */\r\ntype SetDifference = A extends B ? never : A;\r\ntype SetComplement = SetDifference;\r\nexport type Subtract = Pick>;\r\n\r\n/**\r\n * Helper function to determine whether 2 arrays are equal\r\n * Used to avoid unnecessary state updates\r\n * @param arrayA \r\n * @param arrayB \r\n */\r\nexport function accountArraysAreEqual(arrayA: Array, arrayB: Array): boolean {\r\n if (arrayA.length !== arrayB.length) {\r\n return false;\r\n }\r\n\r\n const comparisonArray = [...arrayB];\r\n\r\n return arrayA.every((elementA) => {\r\n const elementB = comparisonArray.shift();\r\n if (!elementA || !elementB) {\r\n return false;\r\n }\r\n\r\n return (elementA.homeAccountId === elementB.homeAccountId) && \r\n (elementA.localAccountId === elementB.localAccountId) &&\r\n (elementA.username === elementB.username);\r\n });\r\n}\r\n","/* eslint-disable header/header */\nexport const name = \"@azure/msal-react\";\nexport const version = \"1.0.0\";\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport React, { useState, useEffect, PropsWithChildren, useMemo } from \"react\";\r\nimport {\r\n IPublicClientApplication,\r\n EventType,\r\n EventMessage,\r\n EventMessageUtils,\r\n InteractionStatus,\r\n Logger,\r\n WrapperSKU\r\n} from \"@azure/msal-browser\";\r\nimport { MsalContext, IMsalContext } from \"./MsalContext\";\r\nimport { accountArraysAreEqual } from \"./utils/utilities\";\r\nimport { AccountIdentifiers } from \"./types/AccountIdentifiers\";\r\nimport { name as SKU, version } from \"./packageMetadata\";\r\n\r\nexport type MsalProviderProps = PropsWithChildren<{\r\n instance: IPublicClientApplication;\r\n}>;\r\n\r\nexport function MsalProvider({instance, children}: MsalProviderProps): React.ReactElement {\r\n useEffect(() => {\r\n instance.initializeWrapperLibrary(WrapperSKU.React, version);\r\n }, [instance]);\r\n // Create a logger instance for msal-react with the same options as PublicClientApplication\r\n const logger: Logger = useMemo(() => {\r\n return instance.getLogger().clone(SKU, version);\r\n }, [instance]);\r\n\r\n // State hook to store accounts\r\n const [accounts, setAccounts] = useState([]);\r\n // State hook to store in progress value\r\n const [inProgress, setInProgress] = useState(InteractionStatus.Startup);\r\n\r\n useEffect(() => {\r\n const callbackId = instance.addEventCallback((message: EventMessage) => {\r\n switch (message.eventType) {\r\n case EventType.LOGIN_SUCCESS:\r\n case EventType.SSO_SILENT_SUCCESS:\r\n case EventType.HANDLE_REDIRECT_END:\r\n case EventType.LOGIN_FAILURE:\r\n case EventType.SSO_SILENT_FAILURE:\r\n case EventType.LOGOUT_END:\r\n case EventType.ACQUIRE_TOKEN_SUCCESS:\r\n case EventType.ACQUIRE_TOKEN_FAILURE:\r\n const currentAccounts = instance.getAllAccounts();\r\n if (!accountArraysAreEqual(currentAccounts, accounts)) {\r\n logger.info(\"MsalProvider - updating account state\");\r\n setAccounts(currentAccounts);\r\n } else {\r\n logger.info(\"MsalProvider - no account changes\");\r\n }\r\n break;\r\n }\r\n });\r\n logger.verbose(`MsalProvider - Registered event callback with id: ${callbackId}`);\r\n\r\n return () => {\r\n // Remove callback when component unmounts or accounts change\r\n if (callbackId) {\r\n logger.verbose(`MsalProvider - Removing event callback ${callbackId}`);\r\n instance.removeEventCallback(callbackId);\r\n }\r\n };\r\n }, [instance, accounts, logger]);\r\n\r\n useEffect(() => {\r\n const callbackId = instance.addEventCallback((message: EventMessage) => {\r\n const status = EventMessageUtils.getInteractionStatusFromEvent(message);\r\n if (status !== null) {\r\n logger.info(`MsalProvider - ${message.eventType} results in setting inProgress to ${status}`);\r\n setInProgress(status);\r\n }\r\n });\r\n logger.verbose(`MsalProvider - Registered event callback with id: ${callbackId}`);\r\n\r\n instance.handleRedirectPromise().catch(() => {\r\n // Errors should be handled by listening to the LOGIN_FAILURE event\r\n return;\r\n });\r\n\r\n return () => {\r\n if (callbackId) {\r\n logger.verbose(`MsalProvider - Removing event callback ${callbackId}`);\r\n instance.removeEventCallback(callbackId);\r\n }\r\n };\r\n }, [instance, logger]);\r\n\r\n const contextValue: IMsalContext = {\r\n instance,\r\n inProgress,\r\n accounts,\r\n logger\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { useContext } from \"react\";\r\nimport { IMsalContext, MsalContext } from \"../MsalContext\";\r\n\r\n/**\r\n * Returns Msal Context values\r\n */\r\nexport const useMsal = (): IMsalContext => useContext(MsalContext);\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { useState, useEffect } from \"react\";\r\nimport { AccountInfo, IPublicClientApplication, InteractionStatus, AccountEntity } from \"@azure/msal-browser\";\r\nimport { useMsal } from \"./useMsal\";\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\n\r\nfunction getAccount(instance: IPublicClientApplication, accountIdentifiers: AccountIdentifiers): AccountInfo | null {\r\n const allAccounts = instance.getAllAccounts();\r\n if (allAccounts.length > 0 && (accountIdentifiers.homeAccountId || accountIdentifiers.localAccountId || accountIdentifiers.username)) {\r\n const matchedAccounts = allAccounts.filter(accountObj => {\r\n if (accountIdentifiers.username && accountIdentifiers.username.toLowerCase() !== accountObj.username.toLowerCase()) {\r\n return false;\r\n }\r\n if (accountIdentifiers.homeAccountId && accountIdentifiers.homeAccountId.toLowerCase() !== accountObj.homeAccountId.toLowerCase()) {\r\n return false;\r\n }\r\n if (accountIdentifiers.localAccountId && accountIdentifiers.localAccountId.toLowerCase() !== accountObj.localAccountId.toLowerCase()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n\r\n return matchedAccounts[0] || null;\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Given 1 or more accountIdentifiers, returns the Account object if the user is signed-in\r\n * @param accountIdentifiers \r\n */\r\nexport function useAccount(accountIdentifiers: AccountIdentifiers): AccountInfo | null {\r\n const { instance, inProgress } = useMsal();\r\n\r\n const initialStateValue = inProgress === InteractionStatus.Startup ? null : getAccount(instance, accountIdentifiers);\r\n const [account, setAccount] = useState(initialStateValue);\r\n\r\n useEffect(() => {\r\n const currentAccount = getAccount(instance, accountIdentifiers);\r\n if (!AccountEntity.accountInfoIsEqual(account, currentAccount, true)) {\r\n setAccount(currentAccount);\r\n }\r\n }, [inProgress, accountIdentifiers, instance, account]);\r\n\r\n return account;\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { useState, useEffect } from \"react\";\r\nimport { useMsal } from \"./useMsal\";\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\nimport { useAccount } from \"./useAccount\";\r\nimport { AccountInfo, InteractionStatus } from \"@azure/msal-browser\";\r\n\r\nfunction isAuthenticated(allAccounts: AccountIdentifiers[], account: AccountInfo | null, matchAccount?: AccountIdentifiers): boolean {\r\n if(matchAccount && (matchAccount.username || matchAccount.homeAccountId || matchAccount.localAccountId)) {\r\n return !!account;\r\n } \r\n\r\n return allAccounts.length > 0;\r\n}\r\n\r\n/**\r\n * Returns whether or not a user is currently signed-in. Optionally provide 1 or more accountIdentifiers to determine if a specific user is signed-in\r\n * @param matchAccount \r\n */\r\nexport function useIsAuthenticated(matchAccount?: AccountIdentifiers): boolean {\r\n const { accounts: allAccounts, inProgress } = useMsal();\r\n const account = useAccount(matchAccount || {});\r\n\r\n const initialStateValue = inProgress === InteractionStatus.Startup ? false : isAuthenticated(allAccounts, account, matchAccount);\r\n const [hasAuthenticated, setHasAuthenticated] = useState(initialStateValue);\r\n\r\n useEffect(() => {\r\n setHasAuthenticated(isAuthenticated(allAccounts, account, matchAccount));\r\n }, [allAccounts, account, matchAccount]);\r\n\r\n return hasAuthenticated;\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport React, { PropsWithChildren, useMemo } from \"react\";\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\nimport { getChildrenOrFunction } from \"../utils/utilities\";\r\nimport { useMsal } from \"../hooks/useMsal\";\r\nimport { MsalAuthenticationResult, useMsalAuthentication } from \"../hooks/useMsalAuthentication\";\r\nimport { useIsAuthenticated } from \"../hooks/useIsAuthenticated\";\r\nimport { InteractionType, PopupRequest, RedirectRequest, SsoSilentRequest, InteractionStatus } from \"@azure/msal-browser\";\r\nimport { IMsalContext } from \"../MsalContext\";\r\n\r\nexport type MsalAuthenticationProps = PropsWithChildren;\r\n errorComponent?: React.ElementType;\r\n}>;\r\n\r\n/**\r\n * Attempts to authenticate user if not already authenticated, then renders child components\r\n * @param props\r\n */\r\nexport function MsalAuthenticationTemplate({ \r\n interactionType, \r\n username, \r\n homeAccountId, \r\n localAccountId,\r\n authenticationRequest, \r\n loadingComponent: LoadingComponent,\r\n errorComponent: ErrorComponent,\r\n children \r\n}: MsalAuthenticationProps): React.ReactElement|null {\r\n const accountIdentifier: AccountIdentifiers = useMemo(() => {\r\n return {\r\n username,\r\n homeAccountId,\r\n localAccountId\r\n };\r\n }, [username, homeAccountId, localAccountId]);\r\n const context = useMsal();\r\n const msalAuthResult = useMsalAuthentication(interactionType, authenticationRequest, accountIdentifier);\r\n const isAuthenticated = useIsAuthenticated(accountIdentifier);\r\n\r\n if (msalAuthResult.error && context.inProgress === InteractionStatus.None) {\r\n if (!!ErrorComponent) {\r\n return ;\r\n }\r\n\r\n throw msalAuthResult.error;\r\n }\r\n \r\n if (isAuthenticated) {\r\n return (\r\n \r\n {getChildrenOrFunction(children, msalAuthResult)}\r\n \r\n );\r\n } \r\n \r\n if (!!LoadingComponent && context.inProgress !== InteractionStatus.None) {\r\n return ;\r\n }\r\n\r\n return null;\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { PopupRequest, RedirectRequest, SsoSilentRequest, InteractionType, AuthenticationResult, AuthError, EventMessage, EventType, InteractionStatus } from \"@azure/msal-browser\";\r\nimport { useIsAuthenticated } from \"./useIsAuthenticated\";\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\nimport { useMsal } from \"./useMsal\";\r\n\r\nexport type MsalAuthenticationResult = {\r\n login: Function; \r\n result: AuthenticationResult|null;\r\n error: AuthError|null;\r\n};\r\n\r\n/**\r\n * Invokes a login call if a user is not currently signed-in. Failed logins can be retried using the login callback returned.\r\n * Optionally provide a request object to be used in the login call.\r\n * Optionally provide a specific user that should be logged in.\r\n * @param interactionType \r\n * @param authenticationRequest \r\n * @param accountIdentifiers \r\n */\r\nexport function useMsalAuthentication(\r\n interactionType: InteractionType, \r\n authenticationRequest?: PopupRequest|RedirectRequest|SsoSilentRequest, \r\n accountIdentifiers?: AccountIdentifiers\r\n): MsalAuthenticationResult {\r\n const { instance, inProgress, logger } = useMsal();\r\n const isAuthenticated = useIsAuthenticated(accountIdentifiers);\r\n const [[result, error], setResponse] = useState<[AuthenticationResult|null, AuthError|null]>([null, null]);\r\n const [hasBeenCalled, setHasBeenCalled] = useState(false);\r\n\r\n const login = useCallback(async (callbackInteractionType?: InteractionType, callbackRequest?: PopupRequest|RedirectRequest|SsoSilentRequest): Promise => {\r\n const loginType = callbackInteractionType || interactionType;\r\n const loginRequest = callbackRequest || authenticationRequest;\r\n switch (loginType) {\r\n case InteractionType.Popup:\r\n logger.verbose(\"useMsalAuthentication - Calling loginPopup\");\r\n return instance.loginPopup(loginRequest as PopupRequest);\r\n case InteractionType.Redirect:\r\n // This promise is not expected to resolve due to full frame redirect\r\n logger.verbose(\"useMsalAuthentication - Calling loginRedirect\");\r\n return instance.loginRedirect(loginRequest as RedirectRequest).then(null);\r\n case InteractionType.Silent:\r\n logger.verbose(\"useMsalAuthentication - Calling ssoSilent\");\r\n return instance.ssoSilent(loginRequest as SsoSilentRequest);\r\n default:\r\n throw \"Invalid interaction type provided.\";\r\n }\r\n }, [instance, interactionType, authenticationRequest, logger]);\r\n\r\n useEffect(() => {\r\n const callbackId = instance.addEventCallback((message: EventMessage) => {\r\n switch(message.eventType) {\r\n case EventType.LOGIN_SUCCESS:\r\n case EventType.SSO_SILENT_SUCCESS:\r\n if (message.payload) {\r\n setResponse([message.payload as AuthenticationResult, null]);\r\n }\r\n break;\r\n case EventType.LOGIN_FAILURE:\r\n case EventType.SSO_SILENT_FAILURE:\r\n if (message.error) {\r\n setResponse([null, message.error as AuthError]);\r\n }\r\n break;\r\n }\r\n });\r\n logger.verbose(`useMsalAuthentication - Registered event callback with id: ${callbackId}`);\r\n\r\n return () => {\r\n if (callbackId) {\r\n logger.verbose(`useMsalAuthentication - Removing event callback ${callbackId}`);\r\n instance.removeEventCallback(callbackId);\r\n }\r\n };\r\n }, [instance, logger]);\r\n\r\n useEffect(() => {\r\n if (!hasBeenCalled && !error && !isAuthenticated && inProgress === InteractionStatus.None) {\r\n logger.info(\"useMsalAuthentication - No user is authenticated, attempting to login\");\r\n // Ensure login is only called one time from within this hook, any subsequent login attempts should use the callback returned\r\n setHasBeenCalled(true);\r\n login().catch(() => {\r\n // Errors are handled by the event handler above\r\n return;\r\n });\r\n }\r\n }, [isAuthenticated, inProgress, error, hasBeenCalled, login, logger]);\r\n\r\n return { login, result, error };\r\n}\r\n","import { useSelector } from 'react-redux'\r\nimport { ApplicationState } from '../store'\r\nimport { useMsal } from '@azure/msal-react'\r\nimport { UserWithOrganizationResponseDTO } from '../generated/ApiClient'\r\n\r\nexport function useActiveUser(): UserWithOrganizationResponseDTO {\r\n const { instance } = useMsal()\r\n const localAccountId = instance.getActiveAccount()!.localAccountId\r\n const user = useSelector(state => { \r\n return state.users!.byId[localAccountId]\r\n })\r\n return user\r\n}\r\n","import { useActiveUser } from './useActiveUser'\r\nimport { RoleValues, UserWithOrganizationResponseDTO } from '../generated/ApiClient'\r\n\r\nexport const GlobalAdmin: RoleValues[] = ['GlobalAdmin']\r\nexport const GlobalEditor: RoleValues[] = ['GlobalAdmin', 'GlobalMember']\r\nexport const AllGlobal: RoleValues[] = ['GlobalAdmin', 'GlobalMember', 'RemoteDeviceManufacturing']\r\nexport const Admin: RoleValues[] = ['GlobalAdmin', 'OrganizationAdmin']\r\nexport const SubGroupViewer = GlobalAdmin.concat(['OrganizationAdmin', 'OrganizationMember'])\r\n/// can edit or view the org email list\r\nexport const OrgEmailViewer = GlobalEditor.concat(['OrganizationAdmin'])\r\nexport const OrgSiteModemEditor = GlobalEditor.concat(['OrganizationAdmin', 'OrganizationMember'])\r\nexport const OrganizationSettableRoles: RoleValues[] = ['OrganizationAdmin', 'OrganizationMember', 'Operator']\r\n/// Roles admins are allowed to change to on User records\r\nexport const GlobalSettableRoles = AllGlobal.concat(OrganizationSettableRoles).concat('Default')\r\n\r\nexport const UserFriendlyRoleNames: { [K in RoleValues]: string } = {\r\n 'GlobalAdmin': 'Global Admin',\r\n 'GlobalMember': 'Global Member',\r\n 'RemoteDeviceManufacturing': 'Remote Device Manufacturing',\r\n 'OrganizationAdmin': 'Organization Admin',\r\n 'OrganizationMember': 'Organization Member',\r\n 'Operator': 'Operator',\r\n 'Default': 'Default'\r\n}\r\n\r\nexport const RoleFlavourText: { [K in RoleValues]: string } = {\r\n 'GlobalAdmin': 'Global Administrator',\r\n 'GlobalMember': 'Global Custom Experience Team Member',\r\n 'RemoteDeviceManufacturing': 'Remote Device Manufacturing',\r\n 'OrganizationAdmin': 'Administrator within an organization. Members with this role can edit any properties of the organization and create, edit, and delete sites and subgroups within the organization. They can also add and remove members and view email domains available to their organization',\r\n 'OrganizationMember': 'Member within an organization who has access to modems and sites within subgroups. Members with this role can create, edit, and delete sites and communicate with modems within the subgroups they are assigned',\r\n 'Operator': 'Member within an organization who has access to modems and sites within subgroups. Members with this role can only communicate with modems within the subgroups they are assigned',\r\n 'Default': 'No access. Members with this role do not have read/write access to any ClairityLink functionality'\r\n}\r\n\r\nexport function isInRoles(roles: RoleValues[], role: RoleValues): boolean {\r\n return roles.includes(role)\r\n}\r\n\r\nexport function useIsUserInRoles(roles: RoleValues[]): boolean {\r\n const activeAccountRole = useActiveUser()?.role.Case\r\n if (activeAccountRole)\r\n return isInRoles(roles, activeAccountRole)\r\n else\r\n return false\r\n}","import * as React from 'react';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport './NavMenu.css';\r\nimport {\r\n List, AppBar, Toolbar, Button, Link, ListItem, ListItemText,\r\n Typography, makeStyles, IconButton, Container, Box, Menu, MenuItem\r\n} from '@material-ui/core';\r\nimport { AccountCircle } from '@material-ui/icons';\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport { useIsUserInRoles } from '../hooks/useIsUserInRoles';\r\nimport { useActiveUser } from '../hooks/useActiveUser';\r\nimport logo_1 from '../images/64.png';\r\n\r\n/** CSS-in-JS. See https://styled-components.com */\r\nconst useStyles = makeStyles({\r\n root: {\r\n flexGrow: 1\r\n },\r\n navDisplayFlex: {\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n navbarDisplayFlex: {\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n listItemRoot: {\r\n whiteSpace: 'nowrap'\r\n }\r\n})\r\n\r\nconst NavMenu = () => {\r\n\r\n // list of routes * names\r\n const routesNames = []\r\n const isUsersMenuVisible = useIsUserInRoles(['GlobalAdmin', 'GlobalMember', 'OrganizationAdmin'])\r\n if (isUsersMenuVisible)\r\n routesNames.push([\"/users\", 'Users'])\r\n\r\n routesNames.push(\r\n [\"/organizations\", 'Organizations'],\r\n [\"/sites\", 'Sites'],\r\n [\"/modems\", 'Modems'],\r\n [\"/transporter\", 'Transporter'],\r\n )\r\n\r\n const { instance } = useMsal();\r\n const activeUser = useActiveUser()\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const open = Boolean(anchorEl);\r\n // this useStyles hook only works in React functions, not classes\r\n const classes = useStyles()\r\n\r\n const handleMenu = (event: React.MouseEvent) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleSignOut = () => {\r\n handleClose();\r\n instance.logoutRedirect();\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n   CLAIRITY™ Link\r\n \r\n \r\n\r\n \r\n {routesNames.map(([link, title]) => (\r\n \r\n \r\n )\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {activeUser?.displayName ?? 'User Invalid'}\r\n \r\n \r\n Sign Out\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default NavMenu","import * as React from 'react';\nimport { createSvgIcon } from '@material-ui/core/utils';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z\"\n}), 'SuccessOutlined');","import * as React from 'react';\nimport { createSvgIcon } from '@material-ui/core/utils';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\"\n}), 'ReportProblemOutlined');","import * as React from 'react';\nimport { createSvgIcon } from '@material-ui/core/utils';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'ErrorOutline');","import * as React from 'react';\nimport { createSvgIcon } from '@material-ui/core/utils';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z\"\n}), 'InfoOutlined');","import * as React from 'react';\nimport { createSvgIcon } from '@material-ui/core/utils';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { withStyles, lighten, darken } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport SuccessOutlinedIcon from '../internal/svg-icons/SuccessOutlined';\nimport ReportProblemOutlinedIcon from '../internal/svg-icons/ReportProblemOutlined';\nimport ErrorOutlineIcon from '../internal/svg-icons/ErrorOutline';\nimport InfoOutlinedIcon from '../internal/svg-icons/InfoOutlined';\nimport CloseIcon from '../internal/svg-icons/Close';\nimport IconButton from '@material-ui/core/IconButton';\nimport { capitalize } from '@material-ui/core/utils';\nexport var styles = function styles(theme) {\n var getColor = theme.palette.type === 'light' ? darken : lighten;\n var getBackgroundColor = theme.palette.type === 'light' ? lighten : darken;\n return {\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.body2, {\n borderRadius: theme.shape.borderRadius,\n backgroundColor: 'transparent',\n display: 'flex',\n padding: '6px 16px'\n }),\n\n /* Styles applied to the root element if `variant=\"standard\"` and `color=\"success\"`. */\n standardSuccess: {\n color: getColor(theme.palette.success.main, 0.6),\n backgroundColor: getBackgroundColor(theme.palette.success.main, 0.9),\n '& $icon': {\n color: theme.palette.success.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"standard\"` and `color=\"info\"`. */\n standardInfo: {\n color: getColor(theme.palette.info.main, 0.6),\n backgroundColor: getBackgroundColor(theme.palette.info.main, 0.9),\n '& $icon': {\n color: theme.palette.info.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"standard\"` and `color=\"warning\"`. */\n standardWarning: {\n color: getColor(theme.palette.warning.main, 0.6),\n backgroundColor: getBackgroundColor(theme.palette.warning.main, 0.9),\n '& $icon': {\n color: theme.palette.warning.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"standard\"` and `color=\"error\"`. */\n standardError: {\n color: getColor(theme.palette.error.main, 0.6),\n backgroundColor: getBackgroundColor(theme.palette.error.main, 0.9),\n '& $icon': {\n color: theme.palette.error.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"success\"`. */\n outlinedSuccess: {\n color: getColor(theme.palette.success.main, 0.6),\n border: \"1px solid \".concat(theme.palette.success.main),\n '& $icon': {\n color: theme.palette.success.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"info\"`. */\n outlinedInfo: {\n color: getColor(theme.palette.info.main, 0.6),\n border: \"1px solid \".concat(theme.palette.info.main),\n '& $icon': {\n color: theme.palette.info.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"warning\"`. */\n outlinedWarning: {\n color: getColor(theme.palette.warning.main, 0.6),\n border: \"1px solid \".concat(theme.palette.warning.main),\n '& $icon': {\n color: theme.palette.warning.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"error\"`. */\n outlinedError: {\n color: getColor(theme.palette.error.main, 0.6),\n border: \"1px solid \".concat(theme.palette.error.main),\n '& $icon': {\n color: theme.palette.error.main\n }\n },\n\n /* Styles applied to the root element if `variant=\"filled\"` and `color=\"success\"`. */\n filledSuccess: {\n color: '#fff',\n fontWeight: theme.typography.fontWeightMedium,\n backgroundColor: theme.palette.success.main\n },\n\n /* Styles applied to the root element if `variant=\"filled\"` and `color=\"info\"`. */\n filledInfo: {\n color: '#fff',\n fontWeight: theme.typography.fontWeightMedium,\n backgroundColor: theme.palette.info.main\n },\n\n /* Styles applied to the root element if `variant=\"filled\"` and `color=\"warning\"`. */\n filledWarning: {\n color: '#fff',\n fontWeight: theme.typography.fontWeightMedium,\n backgroundColor: theme.palette.warning.main\n },\n\n /* Styles applied to the root element if `variant=\"filled\"` and `color=\"error\"`. */\n filledError: {\n color: '#fff',\n fontWeight: theme.typography.fontWeightMedium,\n backgroundColor: theme.palette.error.main\n },\n\n /* Styles applied to the icon wrapper element. */\n icon: {\n marginRight: 12,\n padding: '7px 0',\n display: 'flex',\n fontSize: 22,\n opacity: 0.9\n },\n\n /* Styles applied to the message wrapper element. */\n message: {\n padding: '8px 0'\n },\n\n /* Styles applied to the action wrapper element if `action` is provided. */\n action: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 'auto',\n paddingLeft: 16,\n marginRight: -8\n }\n };\n};\nvar defaultIconMapping = {\n success: /*#__PURE__*/React.createElement(SuccessOutlinedIcon, {\n fontSize: \"inherit\"\n }),\n warning: /*#__PURE__*/React.createElement(ReportProblemOutlinedIcon, {\n fontSize: \"inherit\"\n }),\n error: /*#__PURE__*/React.createElement(ErrorOutlineIcon, {\n fontSize: \"inherit\"\n }),\n info: /*#__PURE__*/React.createElement(InfoOutlinedIcon, {\n fontSize: \"inherit\"\n })\n};\n\nvar _ref = /*#__PURE__*/React.createElement(CloseIcon, {\n fontSize: \"small\"\n});\n\nvar Alert = /*#__PURE__*/React.forwardRef(function Alert(props, ref) {\n var action = props.action,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$closeText = props.closeText,\n closeText = _props$closeText === void 0 ? 'Close' : _props$closeText,\n color = props.color,\n icon = props.icon,\n _props$iconMapping = props.iconMapping,\n iconMapping = _props$iconMapping === void 0 ? defaultIconMapping : _props$iconMapping,\n onClose = props.onClose,\n _props$role = props.role,\n role = _props$role === void 0 ? 'alert' : _props$role,\n _props$severity = props.severity,\n severity = _props$severity === void 0 ? 'success' : _props$severity,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"action\", \"children\", \"classes\", \"className\", \"closeText\", \"color\", \"icon\", \"iconMapping\", \"onClose\", \"role\", \"severity\", \"variant\"]);\n\n return /*#__PURE__*/React.createElement(Paper, _extends({\n role: role,\n square: true,\n elevation: 0,\n className: clsx(classes.root, classes[\"\".concat(variant).concat(capitalize(color || severity))], className),\n ref: ref\n }, other), icon !== false ? /*#__PURE__*/React.createElement(\"div\", {\n className: classes.icon\n }, icon || iconMapping[severity] || defaultIconMapping[severity]) : null, /*#__PURE__*/React.createElement(\"div\", {\n className: classes.message\n }, children), action != null ? /*#__PURE__*/React.createElement(\"div\", {\n className: classes.action\n }, action) : null, action == null && onClose ? /*#__PURE__*/React.createElement(\"div\", {\n className: classes.action\n }, /*#__PURE__*/React.createElement(IconButton, {\n size: \"small\",\n \"aria-label\": closeText,\n title: closeText,\n color: \"inherit\",\n onClick: onClose\n }, _ref)) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? Alert.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The action to display. It renders after the message, at the end of the alert.\n */\n action: PropTypes.node,\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * Override the default label for the *close popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/guides/localization/).\n */\n closeText: PropTypes.string,\n\n /**\n * The main color for the alert. Unless provided, the value is taken from the `severity` prop.\n */\n color: PropTypes.oneOf(['error', 'info', 'success', 'warning']),\n\n /**\n * Override the icon displayed before the children.\n * Unless provided, the icon is mapped to the value of the `severity` prop.\n */\n icon: PropTypes.node,\n\n /**\n * The component maps the `severity` prop to a range of different icons,\n * for instance success to ``.\n * If you wish to change this mapping, you can provide your own.\n * Alternatively, you can use the `icon` prop to override the icon displayed.\n */\n iconMapping: PropTypes.shape({\n error: PropTypes.node,\n info: PropTypes.node,\n success: PropTypes.node,\n warning: PropTypes.node\n }),\n\n /**\n * Callback fired when the component requests to be closed.\n * When provided and no `action` prop is set, a close icon button is displayed that triggers the callback when clicked.\n *\n * @param {object} event The event source of the callback.\n */\n onClose: PropTypes.func,\n\n /**\n * The ARIA role attribute of the element.\n */\n role: PropTypes.string,\n\n /**\n * The severity of the alert. This defines the color and icon used.\n */\n severity: PropTypes.oneOf(['error', 'info', 'success', 'warning']),\n\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiAlert'\n})(Alert);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Typography } from '@material-ui/core';\nimport clsx from 'clsx';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n fontWeight: theme.typography.fontWeightMedium,\n marginTop: -2\n }\n };\n};\nvar AlertTitle = /*#__PURE__*/React.forwardRef(function AlertTitle(props, ref) {\n var classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"classes\", \"className\"]);\n\n return /*#__PURE__*/React.createElement(Typography, _extends({\n gutterBottom: true,\n component: \"div\",\n ref: ref,\n className: clsx(classes.root, className)\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AlertTitle.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiAlertTitle'\n})(AlertTitle);","import React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport MuiAlert, { AlertProps } from '@material-ui/lab/Alert';\r\nimport { makeStyles, Theme } from '@material-ui/core/styles';\r\nimport Fade from '@material-ui/core/Fade';\r\nimport { SnackbarMessage, actionCreators } from '../store/AlertSnackbarStore';\r\nimport { ApplicationState } from '../store';\r\nimport { Button } from '@material-ui/core';\r\nimport { AlertTitle } from '@material-ui/lab';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n root: {\r\n width: '100%',\r\n '& > * + *': {\r\n marginTop: theme.spacing(2),\r\n },\r\n },\r\n close: {\r\n padding: theme.spacing(0.5),\r\n },\r\n}))\r\n\r\nexport default function AlertSnackbar() {\r\n const snackPack = useSelector(state => state.snackbar?.snackPack ?? [])\r\n const [open, setOpen] = React.useState(false);\r\n const [messageInfo, setMessageInfo] = React.useState(undefined);\r\n const dispatch = useDispatch()\r\n\r\n React.useEffect(() => {\r\n if (snackPack.length && !messageInfo) {\r\n // Set a new snack when we don't have an active one\r\n setMessageInfo({ ...snackPack[0] });\r\n dispatch(actionCreators.popMessage());\r\n setOpen(true);\r\n }\r\n }, [snackPack, messageInfo, open]);\r\n\r\n const handleClose = (event: React.SyntheticEvent | MouseEvent, reason?: string) => {\r\n setOpen(false);\r\n };\r\n\r\n const handleExited = () => {\r\n setMessageInfo(undefined);\r\n };\r\n\r\n const classes = useStyles()\r\n // 4.7 chars per word, 4 words per sec, show errors for longer, + .5 seconds minimum for users to notice\r\n const duration = ((messageInfo?.title.length ?? 0) + (messageInfo?.message.length ?? 0))\r\n / (4.7 * 4)\r\n * (messageInfo?.alertType === 'error' ? 1500 : 1000) + 500\r\n return (\r\n <>\r\n \r\n \r\n {messageInfo?.title}\r\n {messageInfo?.message}\r\n \r\n \r\n \r\n )\r\n}\r\n","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import nth from \"./nth.js\";\n/**\n * Returns the last element of the given list or string.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig [a] -> a | Undefined\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.init, R.head, R.tail\n * @example\n *\n * R.last(['fi', 'fo', 'fum']); //=> 'fum'\n * R.last([]); //=> undefined\n *\n * R.last('abc'); //=> 'c'\n * R.last(''); //=> ''\n */\n\nvar last =\n/*#__PURE__*/\nnth(-1);\nexport default last;","import _curry2 from \"./internal/_curry2.js\";\nimport _isString from \"./internal/_isString.js\";\n/**\n * Returns the nth element of the given list or string. If n is negative the\n * element at index length + n is returned.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> [a] -> a | Undefined\n * @sig Number -> String -> String\n * @param {Number} offset\n * @param {*} list\n * @return {*}\n * @example\n *\n * const list = ['foo', 'bar', 'baz', 'quux'];\n * R.nth(1, list); //=> 'bar'\n * R.nth(-1, list); //=> 'quux'\n * R.nth(-99, list); //=> undefined\n *\n * R.nth(2, 'abc'); //=> 'c'\n * R.nth(3, 'abc'); //=> ''\n * @symb R.nth(-1, [a, b, c]) = c\n * @symb R.nth(0, [a, b, c]) = a\n * @symb R.nth(1, [a, b, c]) = b\n */\n\nvar nth =\n/*#__PURE__*/\n_curry2(function nth(offset, list) {\n var idx = offset < 0 ? list.length + offset : offset;\n return _isString(list) ? list.charAt(idx) : list[idx];\n});\n\nexport default nth;","import * as React from 'react';\r\nimport Container from '@material-ui/core/Container';\r\nimport { Grid } from '@material-ui/core';\r\nimport NavMenu from './NavMenu';\r\nimport AlertSnackbar from './AlertSnackbar'\r\nimport { actionCreators } from '../store/AlertSnackbarStore'\r\nimport { ErrorBoundary } from 'react-error-boundary'\r\nimport { useDispatch } from 'react-redux';\r\nimport { getAppInsights } from '../common/TelemetryService'\r\nimport { SeverityLevel } from '@microsoft/applicationinsights-common';\r\nimport useBreadcrumbs, { BreadcrumbData } from 'use-react-router-breadcrumbs';\r\nimport { NavLink } from 'react-router-dom';\r\nimport { validate } from 'uuid'\r\nimport * as R from 'ramda'\r\n\r\n/** main site layout\r\n * show the navmenu above everything. The main container uses the largest breakpoint so that it is the full width on desktop\r\n */\r\nexport default function Layout(props: { children?: React.ReactNode }) {\r\n const dispatch = useDispatch()\r\n const breadcrumbs = useBreadcrumbs()\r\n // https://www.npmjs.com/package/react-error-boundary\r\n const myErrorHandler = (error: Error, info: { componentStack: string }) => {\r\n getAppInsights()?.trackException({ exception: error, severityLevel: SeverityLevel.Error })\r\n dispatch(actionCreators.addError(error))\r\n }\r\n const fallback = (e: { error: Error }) => (\r\n
\r\n

Something went wrong. This issue has been logged

\r\n
{e.error.message}
\r\n
\r\n )\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {/** TODO: add sidebar navigation here */}\r\n \r\n {breadcrumbs.length > 1 && [({breadcrumbs[0].breadcrumb}),\r\n ...breadcrumbs.slice(1) //seems a bit silly to show Home link on the home page\r\n .map(({ match, breadcrumb }, index) =>\r\n (index === breadcrumbs.length - 2 && validate(R.last(match.url.split('/')) ?? ''))\r\n ? () // don't show the final thing if it's an id\r\n : ( / {breadcrumb}))]}\r\n \r\n {props.children}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","var isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nexport default deepmerge_1;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import arrayMap from './_arrayMap.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\nimport stringToPath from './_stringToPath.js';\nimport toKey from './_toKey.js';\nimport toString from './toString.js';\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nexport default toPath;\n","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\nimport * as React from 'react';\n\n// Assertions\n\n/** @private is the value an empty array? */\nexport const isEmptyArray = (value?: any) =>\n Array.isArray(value) && value.length === 0;\n\n/** @private is the given object a Function? */\nexport const isFunction = (obj: any): obj is Function =>\n typeof obj === 'function';\n\n/** @private is the given object an Object? */\nexport const isObject = (obj: any): obj is Object =>\n obj !== null && typeof obj === 'object';\n\n/** @private is the given object an integer? */\nexport const isInteger = (obj: any): boolean =>\n String(Math.floor(Number(obj))) === obj;\n\n/** @private is the given object a string? */\nexport const isString = (obj: any): obj is string =>\n Object.prototype.toString.call(obj) === '[object String]';\n\n/** @private is the given object a NaN? */\n// eslint-disable-next-line no-self-compare\nexport const isNaN = (obj: any): boolean => obj !== obj;\n\n/** @private Does a React component have exactly 0 children? */\nexport const isEmptyChildren = (children: any): boolean =>\n React.Children.count(children) === 0;\n\n/** @private is the given object/value a promise? */\nexport const isPromise = (value: any): value is PromiseLike =>\n isObject(value) && isFunction(value.then);\n\n/** @private is the given object/value a type of synthetic event? */\nexport const isInputEvent = (value: any): value is React.SyntheticEvent =>\n value && isObject(value) && isObject(value.target);\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?Document} doc Defaults to current document.\n * @return {Element | null}\n * @see https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/dom/getActiveElement.js\n */\nexport function getActiveElement(doc?: Document): Element | null {\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(\n obj: any,\n key: string | string[],\n def?: any,\n p: number = 0\n) {\n const path = toPath(key);\n while (obj && p < path.length) {\n obj = obj[path[p++]];\n }\n return obj === undefined ? def : obj;\n}\n\n/**\n * Deeply set a value from in object via it's path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn(obj: any, path: string, value: any): any {\n let res: any = clone(obj); // this keeps inheritance when obj is a class\n let resVal: any = res;\n let i = 0;\n let pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n let currentObj: any = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n const nextPath: string = pathArray[i + 1];\n resVal = resVal[currentPath] =\n isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n // Return original object if new value is the same as current\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\n\n/**\n * Recursively a set the same value for all keys and arrays nested object, cloning\n * @param object\n * @param value\n * @param visited\n * @param response\n */\nexport function setNestedObjectValues(\n object: any,\n value: any,\n visited: any = new WeakMap(),\n response: any = {}\n): T {\n for (let k of Object.keys(object)) {\n const val = object[k];\n if (isObject(val)) {\n if (!visited.get(val)) {\n visited.set(val, true);\n // In order to keep array values consistent for both dot path and\n // bracket syntax, we need to check if this is an array so that\n // this will output { friends: [true] } and not { friends: { \"0\": true } }\n response[k] = Array.isArray(val) ? [] : {};\n setNestedObjectValues(val, value, visited, response[k]);\n }\n } else {\n response[k] = value;\n }\n }\n\n return response;\n}\n","import * as React from 'react';\nimport { FormikContextType } from './types';\nimport invariant from 'tiny-warning';\n\nexport const FormikContext = React.createContext>(\n undefined as any\n);\nexport const FormikProvider = FormikContext.Provider;\nexport const FormikConsumer = FormikContext.Consumer;\n\nexport function useFormikContext() {\n const formik = React.useContext>(FormikContext);\n\n invariant(\n !!formik,\n `Formik context is undefined, please verify you are calling useFormikContext() as child of a component.`\n );\n\n return formik;\n}\n","import * as React from 'react';\nimport isEqual from 'react-fast-compare';\nimport deepmerge from 'deepmerge';\nimport isPlainObject from 'lodash/isPlainObject';\nimport {\n FormikConfig,\n FormikErrors,\n FormikState,\n FormikTouched,\n FormikValues,\n FormikProps,\n FieldMetaProps,\n FieldHelperProps,\n FieldInputProps,\n FormikHelpers,\n FormikHandlers,\n} from './types';\nimport {\n isFunction,\n isString,\n setIn,\n isEmptyChildren,\n isPromise,\n setNestedObjectValues,\n getActiveElement,\n getIn,\n isObject,\n} from './utils';\nimport { FormikProvider } from './FormikContext';\nimport invariant from 'tiny-warning';\n\ntype FormikMessage =\n | { type: 'SUBMIT_ATTEMPT' }\n | { type: 'SUBMIT_FAILURE' }\n | { type: 'SUBMIT_SUCCESS' }\n | { type: 'SET_ISVALIDATING'; payload: boolean }\n | { type: 'SET_ISSUBMITTING'; payload: boolean }\n | { type: 'SET_VALUES'; payload: Values }\n | { type: 'SET_FIELD_VALUE'; payload: { field: string; value?: any } }\n | { type: 'SET_FIELD_TOUCHED'; payload: { field: string; value?: boolean } }\n | { type: 'SET_FIELD_ERROR'; payload: { field: string; value?: string } }\n | { type: 'SET_TOUCHED'; payload: FormikTouched }\n | { type: 'SET_ERRORS'; payload: FormikErrors }\n | { type: 'SET_STATUS'; payload: any }\n | {\n type: 'SET_FORMIK_STATE';\n payload: (s: FormikState) => FormikState;\n }\n | {\n type: 'RESET_FORM';\n payload: FormikState;\n };\n\n// State reducer\nfunction formikReducer(\n state: FormikState,\n msg: FormikMessage\n) {\n switch (msg.type) {\n case 'SET_VALUES':\n return { ...state, values: msg.payload };\n case 'SET_TOUCHED':\n return { ...state, touched: msg.payload };\n case 'SET_ERRORS':\n if (isEqual(state.errors, msg.payload)) {\n return state;\n }\n\n return { ...state, errors: msg.payload };\n case 'SET_STATUS':\n return { ...state, status: msg.payload };\n case 'SET_ISSUBMITTING':\n return { ...state, isSubmitting: msg.payload };\n case 'SET_ISVALIDATING':\n return { ...state, isValidating: msg.payload };\n case 'SET_FIELD_VALUE':\n return {\n ...state,\n values: setIn(state.values, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_TOUCHED':\n return {\n ...state,\n touched: setIn(state.touched, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_ERROR':\n return {\n ...state,\n errors: setIn(state.errors, msg.payload.field, msg.payload.value),\n };\n case 'RESET_FORM':\n return { ...state, ...msg.payload };\n case 'SET_FORMIK_STATE':\n return msg.payload(state);\n case 'SUBMIT_ATTEMPT':\n return {\n ...state,\n touched: setNestedObjectValues>(\n state.values,\n true\n ),\n isSubmitting: true,\n submitCount: state.submitCount + 1,\n };\n case 'SUBMIT_FAILURE':\n return {\n ...state,\n isSubmitting: false,\n };\n case 'SUBMIT_SUCCESS':\n return {\n ...state,\n isSubmitting: false,\n };\n default:\n return state;\n }\n}\n\n// Initial empty states // objects\nconst emptyErrors: FormikErrors = {};\nconst emptyTouched: FormikTouched = {};\n\n// This is an object that contains a map of all registered fields\n// and their validate functions\ninterface FieldRegistry {\n [field: string]: {\n validate: (value: any) => string | Promise | undefined;\n };\n}\n\nexport function useFormik({\n validateOnChange = true,\n validateOnBlur = true,\n validateOnMount = false,\n isInitialValid,\n enableReinitialize = false,\n onSubmit,\n ...rest\n}: FormikConfig) {\n const props = {\n validateOnChange,\n validateOnBlur,\n validateOnMount,\n onSubmit,\n ...rest,\n };\n const initialValues = React.useRef(props.initialValues);\n const initialErrors = React.useRef(props.initialErrors || emptyErrors);\n const initialTouched = React.useRef(props.initialTouched || emptyTouched);\n const initialStatus = React.useRef(props.initialStatus);\n const isMounted = React.useRef(false);\n const fieldRegistry = React.useRef({});\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n typeof isInitialValid === 'undefined',\n 'isInitialValid has been deprecated and will be removed in future versions of Formik. Please use initialErrors or validateOnMount instead.'\n );\n // eslint-disable-next-line\n }, []);\n }\n\n React.useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n const [state, dispatch] = React.useReducer<\n React.Reducer, FormikMessage>\n >(formikReducer, {\n values: props.initialValues,\n errors: props.initialErrors || emptyErrors,\n touched: props.initialTouched || emptyTouched,\n status: props.initialStatus,\n isSubmitting: false,\n isValidating: false,\n submitCount: 0,\n });\n\n const runValidateHandler = React.useCallback(\n (values: Values, field?: string): Promise> => {\n return new Promise((resolve, reject) => {\n const maybePromisedErrors = (props.validate as any)(values, field);\n if (maybePromisedErrors == null) {\n // use loose null check here on purpose\n resolve(emptyErrors);\n } else if (isPromise(maybePromisedErrors)) {\n (maybePromisedErrors as Promise).then(\n errors => {\n resolve(errors || emptyErrors);\n },\n actualException => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in `,\n actualException\n );\n }\n\n reject(actualException);\n }\n );\n } else {\n resolve(maybePromisedErrors);\n }\n });\n },\n [props.validate]\n );\n\n /**\n * Run validation against a Yup schema and optionally run a function if successful\n */\n const runValidationSchema = React.useCallback(\n (values: Values, field?: string): Promise> => {\n const validationSchema = props.validationSchema;\n const schema = isFunction(validationSchema)\n ? validationSchema(field)\n : validationSchema;\n const promise =\n field && schema.validateAt\n ? schema.validateAt(field, values)\n : validateYupSchema(values, schema);\n return new Promise((resolve, reject) => {\n promise.then(\n () => {\n resolve(emptyErrors);\n },\n (err: any) => {\n // Yup will throw a validation error if validation fails. We catch those and\n // resolve them into Formik errors. We can sniff if something is a Yup error\n // by checking error.name.\n // @see https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n if (err.name === 'ValidationError') {\n resolve(yupToFormErrors(err));\n } else {\n // We throw any other errors\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in `,\n err\n );\n }\n\n reject(err);\n }\n }\n );\n });\n },\n [props.validationSchema]\n );\n\n const runSingleFieldLevelValidation = React.useCallback(\n (field: string, value: void | string): Promise => {\n return new Promise(resolve =>\n resolve(fieldRegistry.current[field].validate(value) as string)\n );\n },\n []\n );\n\n const runFieldLevelValidations = React.useCallback(\n (values: Values): Promise> => {\n const fieldKeysWithValidation: string[] = Object.keys(\n fieldRegistry.current\n ).filter(f => isFunction(fieldRegistry.current[f].validate));\n\n // Construct an array with all of the field validation functions\n const fieldValidations: Promise[] =\n fieldKeysWithValidation.length > 0\n ? fieldKeysWithValidation.map(f =>\n runSingleFieldLevelValidation(f, getIn(values, f))\n )\n : [Promise.resolve('DO_NOT_DELETE_YOU_WILL_BE_FIRED')]; // use special case ;)\n\n return Promise.all(fieldValidations).then((fieldErrorsList: string[]) =>\n fieldErrorsList.reduce((prev, curr, index) => {\n if (curr === 'DO_NOT_DELETE_YOU_WILL_BE_FIRED') {\n return prev;\n }\n if (curr) {\n prev = setIn(prev, fieldKeysWithValidation[index], curr);\n }\n return prev;\n }, {})\n );\n },\n [runSingleFieldLevelValidation]\n );\n\n // Run all validations and return the result\n const runAllValidations = React.useCallback(\n (values: Values) => {\n return Promise.all([\n runFieldLevelValidations(values),\n props.validationSchema ? runValidationSchema(values) : {},\n props.validate ? runValidateHandler(values) : {},\n ]).then(([fieldErrors, schemaErrors, validateErrors]) => {\n const combinedErrors = deepmerge.all>(\n [fieldErrors, schemaErrors, validateErrors],\n { arrayMerge }\n );\n return combinedErrors;\n });\n },\n [\n props.validate,\n props.validationSchema,\n runFieldLevelValidations,\n runValidateHandler,\n runValidationSchema,\n ]\n );\n\n // Run all validations methods and update state accordingly\n const validateFormWithHighPriority = useEventCallback(\n (values: Values = state.values) => {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runAllValidations(values).then(combinedErrors => {\n if (!!isMounted.current) {\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n if (!isEqual(state.errors, combinedErrors)) {\n dispatch({ type: 'SET_ERRORS', payload: combinedErrors });\n }\n }\n return combinedErrors;\n });\n }\n );\n\n React.useEffect(() => {\n if (\n validateOnMount &&\n isMounted.current === true &&\n isEqual(initialValues.current, props.initialValues)\n ) {\n validateFormWithHighPriority(initialValues.current);\n }\n }, [validateOnMount, validateFormWithHighPriority]);\n\n const resetForm = React.useCallback(\n (nextState?: Partial>) => {\n const values =\n nextState && nextState.values\n ? nextState.values\n : initialValues.current;\n const errors =\n nextState && nextState.errors\n ? nextState.errors\n : initialErrors.current\n ? initialErrors.current\n : props.initialErrors || {};\n const touched =\n nextState && nextState.touched\n ? nextState.touched\n : initialTouched.current\n ? initialTouched.current\n : props.initialTouched || {};\n const status =\n nextState && nextState.status\n ? nextState.status\n : initialStatus.current\n ? initialStatus.current\n : props.initialStatus;\n initialValues.current = values;\n initialErrors.current = errors;\n initialTouched.current = touched;\n initialStatus.current = status;\n\n const dispatchFn = () => {\n dispatch({\n type: 'RESET_FORM',\n payload: {\n isSubmitting: !!nextState && !!nextState.isSubmitting,\n errors,\n touched,\n status,\n values,\n isValidating: !!nextState && !!nextState.isValidating,\n submitCount:\n !!nextState &&\n !!nextState.submitCount &&\n typeof nextState.submitCount === 'number'\n ? nextState.submitCount\n : 0,\n },\n });\n };\n\n if (props.onReset) {\n const maybePromisedOnReset = (props.onReset as any)(\n state.values,\n imperativeMethods\n );\n\n if (isPromise(maybePromisedOnReset)) {\n (maybePromisedOnReset as Promise).then(dispatchFn);\n } else {\n dispatchFn();\n }\n } else {\n dispatchFn();\n }\n },\n [props.initialErrors, props.initialStatus, props.initialTouched]\n );\n\n React.useEffect(() => {\n if (\n isMounted.current === true &&\n !isEqual(initialValues.current, props.initialValues)\n ) {\n if (enableReinitialize) {\n initialValues.current = props.initialValues;\n resetForm();\n }\n\n if (validateOnMount) {\n validateFormWithHighPriority(initialValues.current);\n }\n }\n }, [\n enableReinitialize,\n props.initialValues,\n resetForm,\n validateOnMount,\n validateFormWithHighPriority,\n ]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialErrors.current, props.initialErrors)\n ) {\n initialErrors.current = props.initialErrors || emptyErrors;\n dispatch({\n type: 'SET_ERRORS',\n payload: props.initialErrors || emptyErrors,\n });\n }\n }, [enableReinitialize, props.initialErrors]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialTouched.current, props.initialTouched)\n ) {\n initialTouched.current = props.initialTouched || emptyTouched;\n dispatch({\n type: 'SET_TOUCHED',\n payload: props.initialTouched || emptyTouched,\n });\n }\n }, [enableReinitialize, props.initialTouched]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialStatus.current, props.initialStatus)\n ) {\n initialStatus.current = props.initialStatus;\n dispatch({\n type: 'SET_STATUS',\n payload: props.initialStatus,\n });\n }\n }, [enableReinitialize, props.initialStatus, props.initialTouched]);\n\n const validateField = useEventCallback((name: string) => {\n // This will efficiently validate a single field by avoiding state\n // changes if the validation function is synchronous. It's different from\n // what is called when using validateForm.\n\n if (\n fieldRegistry.current[name] &&\n isFunction(fieldRegistry.current[name].validate)\n ) {\n const value = getIn(state.values, name);\n const maybePromise = fieldRegistry.current[name].validate(value);\n if (isPromise(maybePromise)) {\n // Only flip isValidating if the function is async.\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return maybePromise\n .then((x: any) => x)\n .then((error: string) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: error },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n } else {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: {\n field: name,\n value: maybePromise as string | undefined,\n },\n });\n return Promise.resolve(maybePromise as string | undefined);\n }\n } else if (props.validationSchema) {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runValidationSchema(state.values, name)\n .then((x: any) => x)\n .then((error: any) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: error[name] },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n }\n\n return Promise.resolve();\n });\n\n const registerField = React.useCallback((name: string, { validate }: any) => {\n fieldRegistry.current[name] = {\n validate,\n };\n }, []);\n\n const unregisterField = React.useCallback((name: string) => {\n delete fieldRegistry.current[name];\n }, []);\n\n const setTouched = useEventCallback(\n (touched: FormikTouched, shouldValidate?: boolean) => {\n dispatch({ type: 'SET_TOUCHED', payload: touched });\n const willValidate =\n shouldValidate === undefined ? validateOnBlur : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(state.values)\n : Promise.resolve();\n }\n );\n\n const setErrors = React.useCallback((errors: FormikErrors) => {\n dispatch({ type: 'SET_ERRORS', payload: errors });\n }, []);\n\n const setValues = useEventCallback(\n (values: React.SetStateAction, shouldValidate?: boolean) => {\n const resolvedValues = isFunction(values) ? values(state.values) : values;\n\n dispatch({ type: 'SET_VALUES', payload: resolvedValues });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(resolvedValues)\n : Promise.resolve();\n }\n );\n\n const setFieldError = React.useCallback(\n (field: string, value: string | undefined) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field, value },\n });\n },\n []\n );\n\n const setFieldValue = useEventCallback(\n (field: string, value: any, shouldValidate?: boolean) => {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field,\n value,\n },\n });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(setIn(state.values, field, value))\n : Promise.resolve();\n }\n );\n\n const executeChange = React.useCallback(\n (eventOrTextValue: string | React.ChangeEvent, maybePath?: string) => {\n // By default, assume that the first argument is a string. This allows us to use\n // handleChange with React Native and React Native Web's onChangeText prop which\n // provides just the value of the input.\n let field = maybePath;\n let val = eventOrTextValue;\n let parsed;\n // If the first argument is not a string though, it has to be a synthetic React Event (or a fake one),\n // so we handle like we would a normal HTML change event.\n if (!isString(eventOrTextValue)) {\n // If we can, persist the event\n // @see https://reactjs.org/docs/events.html#event-pooling\n if ((eventOrTextValue as any).persist) {\n (eventOrTextValue as React.ChangeEvent).persist();\n }\n const target = eventOrTextValue.target\n ? (eventOrTextValue as React.ChangeEvent).target\n : (eventOrTextValue as React.ChangeEvent).currentTarget;\n\n const {\n type,\n name,\n id,\n value,\n checked,\n outerHTML,\n options,\n multiple,\n } = target;\n\n field = maybePath ? maybePath : name ? name : id;\n if (!field && __DEV__) {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handlechange-e-reactchangeeventany--void',\n handlerName: 'handleChange',\n });\n }\n val = /number|range/.test(type)\n ? ((parsed = parseFloat(value)), isNaN(parsed) ? '' : parsed)\n : /checkbox/.test(type) // checkboxes\n ? getValueForCheckbox(getIn(state.values, field!), checked, value)\n : !!multiple // \r\n \r\n )\r\n}\r\n\r\n\r\nexport default ValuePickerControl;\r\n","import React, { ChangeEvent, ReactNode } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { actionCreators } from '../store/Users';\r\nimport { ApplicationState } from '../store';\r\nimport { GlobalSettableRoles, OrganizationSettableRoles, useIsUserInRoles, UserFriendlyRoleNames } from '../hooks/useIsUserInRoles';\r\nimport { useActiveUser } from '../hooks/useActiveUser';\r\nimport { Box, Button, Grid, Typography } from '@material-ui/core';\r\nimport { actionCreators as snackbar } from '../store/AlertSnackbarStore'\r\nimport { OrganizationResponseDTO, OrganizationsClient, RoleValues, UsersClient, UserWithOrganizationResponseDTO } from '../generated/ApiClient'\r\nimport ValuePickerControl from '../common/ValuePickerControl'\r\nimport CenteredProgress from '../common/CenteredLoader'\r\nimport { useHistory } from 'react-router';\r\n\r\n// needed to indicate 'No org' but the value picker control doesn't like undefined\r\nconst defaultOrgGuid = '00000000-0000-0000-0000-000000000000'\r\n\r\nexport default function UserDetailsPage(props: { match: { params: { userId: string }; }; }) {\r\n const dispatch = useDispatch()\r\n const userId = props.match.params.userId;\r\n const history = useHistory()\r\n const activeUser = useActiveUser()\r\n const isGlobalAdmin = useIsUserInRoles(['GlobalAdmin'])\r\n const isOrganizationAdmin = useIsUserInRoles(['OrganizationAdmin'])\r\n const [selectedUserRole, setSelectedUserRole] = React.useState(undefined);\r\n const [selectedOrganizationId, setSelectedOrganizationId] = React.useState(undefined);\r\n const [organizations, setOrganizations] = React.useState([]);\r\n\r\n const isLoading = useSelector(state => state.users?.isLoading)\r\n const user = useSelector(state => {\r\n return state.users?.byId[userId]\r\n })\r\n\r\n if (user && selectedUserRole === undefined)\r\n setSelectedUserRole(user.role.Case)\r\n\r\n if (user && organizations.length > 0 && selectedOrganizationId === undefined)\r\n setSelectedOrganizationId(user.organization?.externalId ?? defaultOrgGuid)\r\n\r\n React.useEffect(() => {\r\n dispatch(actionCreators.requestUser(userId));\r\n const fetchData = async () => {\r\n const organizationsLocal = await new OrganizationsClient().getMany();\r\n setOrganizations(organizationsLocal)\r\n }\r\n fetchData();\r\n }, [userId, setOrganizations]);\r\n\r\n const onSaveClick = (user: UserWithOrganizationResponseDTO) => {\r\n dispatch(actionCreators.updateUser(user, selectedOrganizationId === defaultOrgGuid ? undefined : selectedOrganizationId, selectedUserRole))\r\n }\r\n\r\n const onRemoveFromOrganizationClick = async (member: UserWithOrganizationResponseDTO) => {\r\n if (member.organization) {\r\n try {\r\n await new OrganizationsClient().deleteUser(member.organization.externalId, userId)\r\n if (isGlobalAdmin) {\r\n const updatedUser = await new UsersClient().get6(member.azureId)\r\n dispatch({ type: 'users/ReceiveUsers', users: [updatedUser] })\r\n }\r\n else {\r\n history.goBack()\r\n }\r\n dispatch(snackbar.addMessage({ title: \"Removed member from organization\", message: 'Successfully removed member from organization', alertType: 'success' }))\r\n }\r\n catch (error) {\r\n dispatch(snackbar.addError(error, undefined, 'Failed to remove member'))\r\n }\r\n }\r\n }\r\n\r\n const onRemoveClick = (user: UserWithOrganizationResponseDTO) => {\r\n dispatch(actionCreators.removeUser(user.azureId));\r\n }\r\n\r\n const handleRoleChange = (event: ChangeEvent<{ name?: string | undefined; value: unknown; }>, child: ReactNode) => {\r\n const target = event.target as HTMLInputElement;\r\n setSelectedUserRole(target.value as RoleValues)\r\n };\r\n\r\n const handleOrganizationChange = (event: ChangeEvent<{ name?: string | undefined; value: unknown; }>, child: ReactNode) => {\r\n const target = event.target as HTMLInputElement;\r\n setSelectedOrganizationId(target.value)\r\n };\r\n\r\n const userRoles = (isGlobalAdmin ? GlobalSettableRoles : OrganizationSettableRoles.concat(['Default'])).map(k => ({ text: UserFriendlyRoleNames[k], value: k }))\r\n\r\n const userOrganizations = [{ text: 'Not Assigned', value: defaultOrgGuid }].concat(organizations.map(x => {\r\n return { text: x.name ?? '', value: x.externalId }\r\n }))\r\n\r\n const isActiveUser = activeUser.azureId === userId\r\n const enableOrganizationsPicker = isGlobalAdmin\r\n const enableRolesPicker = (isGlobalAdmin || isOrganizationAdmin) && !isActiveUser\r\n const enableSaveButton = (isGlobalAdmin || isOrganizationAdmin)\r\n const enableRemoveButton = isGlobalAdmin && !isActiveUser\r\n const enableRemoveFromOrgButton = (isGlobalAdmin || isOrganizationAdmin)\r\n\r\n if (isLoading)\r\n return \r\n if (user === undefined)\r\n return Member {userId} not found\r\n else\r\n return (\r\n <>\r\n {user.displayName}\r\n Given Name: {user.givenName}\r\n Surname: {user.surname}\r\n Email: {user.userName}\r\n Current Organization: {(user.organization ? organizations.find(s => s.externalId === user.organization?.externalId)?.name : null) ?? \"None Assigned\"}\r\n {organizations.length > 0 && selectedOrganizationId &&\r\n }\r\n \r\n Current Role: {UserFriendlyRoleNames[user.role.Case]}\r\n \r\n {selectedUserRole &&\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n {user.organization && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import { Typography, Button, Box, Grid } from '@material-ui/core'\r\nimport React, { Dispatch, useState, useEffect } from 'react'\r\nimport { SubGroupRequestDTO, SubGroupsClient, SubGroupUpdateRequestDTO, OrganizationsClient, SubGroupResponseDTO } from '../generated/ApiClient'\r\nimport { Formik, Form, Field } from 'formik'\r\nimport { TextField } from 'formik-material-ui'\r\nimport * as Yup from 'yup'\r\nimport { useDispatch } from \"react-redux\";\r\nimport { actionCreators as snackbar } from '../store/AlertSnackbarStore'\r\nimport { RouteComponentProps, useHistory } from 'react-router'\r\nimport { History } from 'history'\r\nimport CenteredProgress from '../common/CenteredLoader'\r\nimport { utcToLocal } from '../common/Shared'\r\nimport { DateTime } from 'luxon'\r\nimport { Admin, useIsUserInRoles } from '../hooks/useIsUserInRoles';\r\n\r\nconst SubgroupDetailsFormSchema = Yup.object().shape({\r\n name: Yup.string().max(100).required(),\r\n})\r\n\r\ntype SubgroupProps = { organizationId: string; subgroupId: string | undefined; } | RouteComponentProps<{ organizationId: string; subgroupId: string | undefined; }>\r\ntype SubgroupFormProperties = Yup.InferType\r\n\r\nasync function formSubmitCallback(name: string, subgroupId: string | undefined, organizationId: string, dispatch: Dispatch, history: History) {\r\n try {\r\n if (subgroupId) {\r\n const requestData = { name };\r\n await new SubGroupsClient().update4(subgroupId, requestData);\r\n } else {\r\n const requestData: SubGroupRequestDTO = { name, organizationId };\r\n const newSubgroup = await new SubGroupsClient().create3(requestData);\r\n history.push(`/organizations/${organizationId}/subgroups/${newSubgroup.externalId}`);\r\n }\r\n dispatch(snackbar.addMessage({ title: \"Successfully updated\", message: `${name} details were saved`, alertType: 'success' }))\r\n }\r\n catch (error) {\r\n dispatch(snackbar.addError(error, undefined, 'Error writing to the database'));\r\n }\r\n}\r\n\r\nasync function deleteSubgroup(subgroupId: string, organizationId: string, dispatch: Dispatch, history: History) {\r\n try {\r\n await new SubGroupsClient().delete3(subgroupId);\r\n history.push(`/organizations/${organizationId}`);\r\n }\r\n catch (error) {\r\n dispatch(snackbar.addError(error, undefined, 'Error writing to the database'));\r\n }\r\n}\r\n\r\nexport default function SubgroupForm(props: SubgroupProps) {\r\n const organizationId = 'organizationId' in props ? props.organizationId : props.match.params.organizationId;\r\n const subgroupId = 'subgroupId' in props ? props.subgroupId : props.match.params.subgroupId;\r\n const history = useHistory()\r\n const dispatch = useDispatch()\r\n const [subgroup, setSubgroup] = useState('Loading');\r\n const [orgName, setOrgName] = useState(\"\");\r\n const isAdmin = useIsUserInRoles(Admin)\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n if (subgroupId) {\r\n const subgroup = await new SubGroupsClient().get5(subgroupId);\r\n setSubgroup(subgroup);\r\n }\r\n else\r\n setSubgroup(undefined)\r\n }\r\n fetchData();\r\n }, [organizationId, subgroupId])\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n const selectedOrg = await new OrganizationsClient().get3(organizationId);\r\n setOrgName(selectedOrg.name);\r\n }\r\n fetchData();\r\n }, [organizationId, subgroupId])\r\n\r\n\r\n if (subgroup === 'Loading')\r\n return \r\n else\r\n return (\r\n <>\r\n formSubmitCallback(values.name, subgroupId, organizationId, dispatch, history)}>\r\n {/* supply a function to formik so that we can access these props*/}\r\n {({ submitForm, isSubmitting, touched }) => (\r\n \r\n \r\n
\r\n \r\n \r\n Subgroup Name:\r\n \r\n \r\n {/* pass in a material ui component to the Formik component */}\r\n {isAdmin ?\r\n \r\n : {subgroup?.name ?? ''}\r\n }\r\n\r\n \r\n \r\n
\r\n \r\n Organization Name: {orgName}\r\n \r\n {subgroup &&\r\n <>\r\n \r\n \r\n Created Date:\r\n \r\n \r\n {utcToLocal(subgroup.created).toLocaleString(DateTime.DATETIME_MED_WITH_SECONDS)}\r\n \r\n \r\n \r\n \r\n Last Updated:\r\n \r\n \r\n {utcToLocal(subgroup.lastUpdated).toLocaleString(DateTime.DATETIME_MED_WITH_SECONDS)}\r\n \r\n \r\n }\r\n
\r\n {isAdmin &&\r\n \r\n \r\n \r\n \r\n {subgroup &&\r\n \r\n \r\n }\r\n }\r\n
\r\n )}\r\n
\r\n \r\n )\r\n}","import { Button, Grid, Box } from '@material-ui/core'\r\nimport React, { useState, useEffect } from 'react'\r\nimport { UserResponseDTO, SubGroupsClient } from '../generated/ApiClient'\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { Link as RouterLink, RouteComponentProps } from 'react-router-dom';\r\nimport { useDispatch } from 'react-redux';\r\nimport { actionCreators as snackbar } from '../store/AlertSnackbarStore'\r\nimport { UserFriendlyRoleNames } from '../hooks/useIsUserInRoles';\r\nimport { tableOptions as options } from '../common/Shared';\r\nimport { Admin, useIsUserInRoles } from '../hooks/useIsUserInRoles';\r\n\r\ninterface UsersTableData {\r\n userName: string;\r\n firstName: string;\r\n lastName: string;\r\n role: string;\r\n azureId: string;\r\n}\r\n\r\ntype props = {\r\n subgroupId: string | undefined;\r\n organizationId: string | undefined;\r\n}\r\n\r\nexport default function SubgroupUsers(props: props) {\r\n const [usersData, setUsersData] = useState([]);\r\n const subgroupId = props.subgroupId\r\n const organizationId = props.organizationId\r\n\r\n const dispatch = useDispatch()\r\n const isAdmin = useIsUserInRoles(Admin)\r\n\r\n const removeUsers = async (userIds: string[]) => {\r\n try {\r\n if (subgroupId) {\r\n await Promise.all(userIds.map((userId) => removeUser(userId, subgroupId)));\r\n dispatch(snackbar.addMessage({ title: \"Success\", message: `Users successfully removed`, alertType: 'success' }))\r\n const newUsersData = usersData.filter(x => !userIds.includes(x.azureId));\r\n setUsersData(newUsersData)\r\n }\r\n }\r\n catch (error) {\r\n dispatch(snackbar.addError(error, undefined, 'Error writing to the database'));\r\n }\r\n }\r\n\r\n const removeUser = async (userId: string, subgroupId: string) => {\r\n try {\r\n await new SubGroupsClient().removeUser(subgroupId, userId);\r\n }\r\n catch (error) {\r\n dispatch(snackbar.addError(error, undefined, 'Error writing to the database'));\r\n }\r\n }\r\n\r\n const tableOptions = {\r\n ...options,\r\n selectableRowsHideCheckboxes: !isAdmin,\r\n onRowsDelete: ((rowsDeleted: { lookup: any; data: { index: number; dataIndex: number; }[]; }, data: UsersTableData[]) => {\r\n const selectedIndexs = rowsDeleted.data.map((row) => row.dataIndex);\r\n const userIds: string[] = selectedIndexs.map((index) => usersData![index].azureId);\r\n removeUsers(userIds);\r\n })\r\n }\r\n\r\n const columns = [\r\n {\r\n name: \"userName\",\r\n label: \"Email\",\r\n options: {\r\n sort: true,\r\n filter: true\r\n }\r\n },\r\n {\r\n name: \"firstName\",\r\n label: \"First Name\",\r\n options: {\r\n sort: true,\r\n filter: true\r\n }\r\n },\r\n {\r\n name: \"lastName\",\r\n label: \"Last Name\",\r\n options: {\r\n sort: true,\r\n filter: true\r\n }\r\n },\r\n {\r\n name: \"role\",\r\n label: \"Role\",\r\n options: {\r\n sort: true,\r\n filter: true\r\n }\r\n },\r\n {\r\n name: 'detailsButton',\r\n label: 'View',\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRenderLite: (dataIndex: number) => {\r\n const link = `/users/${usersData[dataIndex].azureId}`;\r\n return \r\n }\r\n }\r\n }\r\n ];\r\n\r\n function toTableData(userData: UserResponseDTO) {\r\n return {\r\n userName: userData.userName,\r\n firstName: userData.givenName,\r\n lastName: userData.surname,\r\n role: UserFriendlyRoleNames[userData.role.Case],\r\n azureId: userData.azureId\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n if (subgroupId) {\r\n const usersData = await new SubGroupsClient().getManyUsers(subgroupId);\r\n setUsersData(usersData.map(toTableData));\r\n }\r\n }\r\n fetchData();\r\n }, [subgroupId, organizationId])\r\n\r\n return (\r\n <>\r\n {isAdmin &&\r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n )\r\n}","import { Typography, Button, Box, Grid } from '@material-ui/core'\r\nimport React, { useState, useEffect } from 'react'\r\nimport { SubGroupsClient, ModemsClient, DeviceTwinOrHeartbeatRequestedType, HeartbeatDTO, HeartbeatResponse, ModemHeartbeatResponseDTO, ModemWithOrgSiteResponseDTO } from '../generated/ApiClient'\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { Link as RouterLink, RouteComponentProps } from 'react-router-dom';\r\nimport { actionCreators as snackbar } from '../store/AlertSnackbarStore'\r\nimport { useDispatch } from 'react-redux';\r\nimport { tableOptions as options } from '../common/Shared'\r\nimport { Admin, useIsUserInRoles } from '../hooks/useIsUserInRoles';\r\ninterface ModemsTableData {\r\n modemHostId: string;\r\n name: string;\r\n site: string;\r\n address: string;\r\n rcEnabled: string;\r\n lastHeartbeat: string;\r\n}\r\n\r\ntype props = {\r\n organizationId: string\r\n subgroupId: string\r\n}\r\n\r\nfunction toTableData(modemData: ModemWithOrgSiteResponseDTO, heartbeat: HeartbeatResponse | undefined) {\r\n return {\r\n modemHostId: modemData.modemHostId || \"\",\r\n name: modemData.label || \"\",\r\n site: \"\",\r\n address: modemData.ipAddress || \"\",\r\n rcEnabled: modemData.remoteConnectivityEnabled === true ? 'True' : 'False',\r\n lastHeartbeat: (heartbeat?.Fields as HeartbeatDTO | undefined)?.lastOnlineTime || ''\r\n }\r\n}\r\n\r\nexport default function SubgroupModems(props: props) {\r\n const [modemsData, setModemsData] = useState([]);\r\n const [heartbeatsData, setHeartbeatsData] = useState([]);\r\n const subgroupId = props.subgroupId\r\n const isAdmin = useIsUserInRoles(Admin)\r\n\r\n const dispatch = useDispatch()\r\n\r\n const removeModems = async (modemIds: string[]) => {\r\n try {\r\n if (subgroupId) {\r\n await Promise.all(modemIds.map((modemId) => removeModem(modemId)));\r\n dispatch(snackbar.addMessage({ title: \"Success\", message: `Modems successfully removed`, alertType: 'success' }))\r\n const newModemData = modemsData.filter(x => !modemIds.includes(x.modemHostId));\r\n setModemsData(newModemData)\r\n }\r\n }\r\n catch (error) {\r\n dispatch(snackbar.addError(error, undefined, 'Error writing to the database'));\r\n }\r\n }\r\n\r\n const removeModem = async (modemId: string) => {\r\n try {\r\n await new SubGroupsClient().removeModem3(subgroupId, modemId);\r\n }\r\n catch (error) {\r\n dispatch(snackbar.addError(error, undefined, 'Error writing to the database'));\r\n }\r\n }\r\n\r\n const tableOptions = {\r\n ...options,\r\n selectableRowsHideCheckboxes: !isAdmin,\r\n onRowsDelete: ((rowsDeleted: { lookup: any; data: { index: number; dataIndex: number; }[]; }, data: ModemWithOrgSiteResponseDTO[]) => {\r\n const selectedIndexs = rowsDeleted.data.map((row) => row.dataIndex);\r\n const modemIds: string[] = selectedIndexs.map((index) => modemsData![index].modemHostId);\r\n removeModems(modemIds);\r\n })\r\n }\r\n\r\n const columns = [\r\n {\r\n name: \"modemHostId\",\r\n label: \"Modem Host Id\",\r\n options: {\r\n sort: true,\r\n filter: true\r\n }\r\n },\r\n {\r\n name: \"name\",\r\n label: \"Name\",\r\n options: {\r\n sort: true,\r\n filter: true\r\n }\r\n },\r\n {\r\n name: \"site\",\r\n label: \"Site\",\r\n options: {\r\n sort: true,\r\n filter: true\r\n }\r\n },\r\n {\r\n name: \"address\",\r\n label: \"Address\",\r\n options: {\r\n sort: true,\r\n filter: true\r\n }\r\n },\r\n {\r\n name: \"rcEnabled\",\r\n label: \"Remote Connectivity Enabled\",\r\n options: {\r\n sort: true,\r\n filter: true\r\n }\r\n },\r\n {\r\n name: \"lastHeartbeat\",\r\n label: \"Last Heartbeat\",\r\n options: {\r\n sort: true,\r\n filter: true\r\n }\r\n },\r\n {\r\n name: 'detailsButton',\r\n label: 'View',\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRenderLite: (dataIndex: number) => {\r\n const link = `/modems/${modemsData[dataIndex].modemHostId}`;\r\n return \r\n }\r\n }\r\n }\r\n ];\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n if (subgroupId) {\r\n const modemsData = await new SubGroupsClient().getAllModems2(subgroupId);\r\n const heartbeats = await new ModemsClient().getHeartbeats(DeviceTwinOrHeartbeatRequestedType.Simple, { modemIds: modemsData.map(s => s.modemHostId) })\r\n setModemsData(modemsData);\r\n setHeartbeatsData(heartbeats)\r\n }\r\n }\r\n catch (error) {\r\n dispatch(snackbar.addError(error, undefined, 'Error fetching modems'));\r\n }\r\n }\r\n fetchData();\r\n }, [subgroupId])\r\n const heartbeatMap = Object.fromEntries(heartbeatsData.map(s => [s.modemHostId, s.heartbeat]))\r\n return (\r\n <>\r\n {isAdmin &&\r\n \r\n \r\n \r\n \r\n }\r\n toTableData(m, heartbeatMap[m.modemHostId]))}\r\n columns={columns}\r\n options={tableOptions}\r\n />\r\n \r\n )\r\n}","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import Button from \"@material-ui/core/Button\"\r\nimport React, { useState, useEffect } from 'react';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { ApiException, RelayApiClient } from '../generated/ApiClient'\r\nimport * as AlertSnackbarStore from '../store/AlertSnackbarStore'\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nexport enum ButtonAction {\r\n PowerCycle = 'PowerCycle'\r\n}\r\n\r\n\r\nexport type DebouncedButtonProps = {\r\n /** disable time delay in milliseconds */\r\n delay?: number\r\n /** Button click function set explicitly on the component */\r\n onButtonClick?: () => void\r\n buttonAction?: ButtonAction\r\n modemId?: string\r\n disabled?: boolean\r\n}\r\n\r\nexport function DebounceButton(props: DebouncedButtonProps) {\r\n\r\n const [isDisabled, setDisabled] = useState(false);\r\n const dispatch = useDispatch();\r\n useEffect(() => {\r\n if (!isDisabled) {\r\n // timeout elapsed, nothing to do\r\n return;\r\n }\r\n // isDisabled was changed to true, set back to false after `delay`\r\n const handle = setTimeout(() => {\r\n setDisabled(false);\r\n }, props.delay);\r\n return () => clearTimeout(handle);\r\n }, [isDisabled, props.delay]);\r\n\r\n const handleClick = () => {\r\n if (isDisabled) {\r\n return;\r\n }\r\n if (props.buttonAction == ButtonAction.PowerCycle)\r\n powerCycle();\r\n\r\n if (props.onButtonClick)\r\n props.onButtonClick();\r\n\r\n setDisabled(true);\r\n }\r\n\r\n const powerCycle = async () => {\r\n try {\r\n const data = await new RelayApiClient().postForwardRequest(props.modemId, uuidv4(), \"powercycle\")\r\n dispatch(AlertSnackbarStore.actionCreators.addMessage({ title: \"Power Cycle sent\", message: `Power Cycle command was sent to modem`, alertType: 'success' }))\r\n }\r\n catch (error) {\r\n dispatch(AlertSnackbarStore.actionCreators.addError(error, undefined, 'Error sending Power Cycle command to modem'))\r\n }\r\n }\r\n\r\n return (\r\n \r\n )\r\n\r\n}","import Button from \"@material-ui/core/Button\"\r\nimport Badge from '@material-ui/core/Badge'\r\nimport React, { useState, useEffect } from 'react'; \r\nimport ClearIcon from '@material-ui/icons/Clear';\r\nimport { green } from '@material-ui/core/colors';\r\nimport { Tooltip } from \"@material-ui/core\";\r\nimport DoneAllIcon from '@material-ui/icons/DoneAll';\r\nimport { ApplicationState } from '../store';\r\nimport { useSelector } from 'react-redux';\r\n\r\nexport type ConnectionButtonProps = {\r\n /** whether the button is currently in the 'connected' */\r\n connected?: boolean\r\n /** flag to use when showing disconnect button. */\r\n openOnConnect?: boolean\r\n /** flag to determine to open modem portal on connect */\r\n showDisconnect?: boolean\r\n /** action to run on connection */\r\n onConnect?: () => void\r\n connectLabel?: string\r\n /** action to run on disconnection */\r\n onDisconnect?: () => void\r\n disconnectLabel?: string\r\n /** whether the button should be medium or small */\r\n large?: boolean\r\n /** local IP of Modem or nECY */\r\n localIp?: string\r\n disabled?: boolean\r\n}\r\n\r\nexport default function ConnectionButton(props: ConnectionButtonProps) {\r\n\r\n const protocol = \"https://\"\r\n const isLoadingModem = useSelector(state => state.modems?.isLoading);\r\n //flag to determine to open page on callback.\r\n const [openUrl, setOpenUrl] = React.useState(false);\r\n\r\n useEffect(() => {\r\n if (props.openOnConnect && openUrl && !isLoadingModem && props.localIp) {\r\n window.open(protocol + props.localIp)\r\n setOpenUrl(false);\r\n }\r\n });\r\n function handleConnect() {\r\n if (!props.connected && props.onConnect) {\r\n props.onConnect();\r\n if (props.openOnConnect) {\r\n setOpenUrl(true);\r\n }\r\n } else {\r\n if (props.openOnConnect) {\r\n window.open(protocol + props.localIp)\r\n }\r\n }\r\n }\r\n return (\r\n ((props.connected?? true ) && (props.showDisconnect ?? true))\r\n ?\r\n :\r\n \r\n )\r\n}\r\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\nexport default function rng() {\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n\n return getRandomValues(rnds8);\n}","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\nexport default bytesToUuid;","import rng from './rng.js';\nimport bytesToUuid from './bytesToUuid.js';\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nexport default v4;","export default {\n GLOBAL: {\n HIDE: '__react_tooltip_hide_event',\n REBUILD: '__react_tooltip_rebuild_event',\n SHOW: '__react_tooltip_show_event'\n }\n};\n","/**\n * Static methods for react-tooltip\n */\nimport CONSTANT from '../constant';\n\nconst dispatchGlobalEvent = (eventName, opts) => {\n // Compatible with IE\n // @see http://stackoverflow.com/questions/26596123/internet-explorer-9-10-11-event-constructor-doesnt-work\n // @see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n let event;\n\n if (typeof window.CustomEvent === 'function') {\n event = new window.CustomEvent(eventName, { detail: opts });\n } else {\n event = document.createEvent('Event');\n event.initEvent(eventName, false, true, opts);\n }\n\n window.dispatchEvent(event);\n};\n\nexport default function(target) {\n /**\n * Hide all tooltip\n * @trigger ReactTooltip.hide()\n */\n target.hide = target => {\n dispatchGlobalEvent(CONSTANT.GLOBAL.HIDE, { target });\n };\n\n /**\n * Rebuild all tooltip\n * @trigger ReactTooltip.rebuild()\n */\n target.rebuild = () => {\n dispatchGlobalEvent(CONSTANT.GLOBAL.REBUILD);\n };\n\n /**\n * Show specific tooltip\n * @trigger ReactTooltip.show()\n */\n target.show = target => {\n dispatchGlobalEvent(CONSTANT.GLOBAL.SHOW, { target });\n };\n\n target.prototype.globalRebuild = function() {\n if (this.mount) {\n this.unbindListener();\n this.bindListener();\n }\n };\n\n target.prototype.globalShow = function(event) {\n if (this.mount) {\n const hasTarget =\n (event && event.detail && event.detail.target && true) || false;\n // Create a fake event, specific show will limit the type to `solid`\n // only `float` type cares e.clientX e.clientY\n this.showTooltip(\n { currentTarget: hasTarget && event.detail.target },\n true\n );\n }\n };\n\n target.prototype.globalHide = function(event) {\n if (this.mount) {\n const hasTarget =\n (event && event.detail && event.detail.target && true) || false;\n this.hideTooltip(\n { currentTarget: hasTarget && event.detail.target },\n hasTarget\n );\n }\n };\n}\n","/**\n * Custom events to control showing and hiding of tooltip\n *\n * @attributes\n * - `event` {String}\n * - `eventOff` {String}\n */\n\nexport const checkStatus = function(dataEventOff, e) {\n const { show } = this.state;\n const { id } = this.props;\n const isCapture = this.isCapture(e.currentTarget);\n const currentItem = e.currentTarget.getAttribute('currentItem');\n\n if (!isCapture) e.stopPropagation();\n if (show && currentItem === 'true') {\n if (!dataEventOff) this.hideTooltip(e);\n } else {\n e.currentTarget.setAttribute('currentItem', 'true');\n setUntargetItems(e.currentTarget, this.getTargetArray(id));\n this.showTooltip(e);\n }\n};\n\nconst setUntargetItems = function(currentTarget, targetArray) {\n for (let i = 0; i < targetArray.length; i++) {\n if (currentTarget !== targetArray[i]) {\n targetArray[i].setAttribute('currentItem', 'false');\n } else {\n targetArray[i].setAttribute('currentItem', 'true');\n }\n }\n};\n\nconst customListeners = {\n id: '9b69f92e-d3fe-498b-b1b4-c5e63a51b0cf',\n set(target, event, listener) {\n if (this.id in target) {\n const map = target[this.id];\n map[event] = listener;\n } else {\n // this is workaround for WeakMap, which is not supported in older browsers, such as IE\n Object.defineProperty(target, this.id, {\n configurable: true,\n value: { [event]: listener }\n });\n }\n },\n get(target, event) {\n const map = target[this.id];\n if (map !== undefined) {\n return map[event];\n }\n }\n};\n\nexport default function(target) {\n target.prototype.isCustomEvent = function(ele) {\n const { event } = this.state;\n return event || !!ele.getAttribute('data-event');\n };\n\n /* Bind listener for custom event */\n target.prototype.customBindListener = function(ele) {\n const { event, eventOff } = this.state;\n const dataEvent = ele.getAttribute('data-event') || event;\n const dataEventOff = ele.getAttribute('data-event-off') || eventOff;\n\n dataEvent.split(' ').forEach(event => {\n ele.removeEventListener(event, customListeners.get(ele, event));\n const customListener = checkStatus.bind(this, dataEventOff);\n customListeners.set(ele, event, customListener);\n ele.addEventListener(event, customListener, false);\n });\n if (dataEventOff) {\n dataEventOff.split(' ').forEach(event => {\n ele.removeEventListener(event, this.hideTooltip);\n ele.addEventListener(event, this.hideTooltip, false);\n });\n }\n };\n\n /* Unbind listener for custom event */\n target.prototype.customUnbindListener = function(ele) {\n const { event, eventOff } = this.state;\n const dataEvent = event || ele.getAttribute('data-event');\n const dataEventOff = eventOff || ele.getAttribute('data-event-off');\n\n ele.removeEventListener(dataEvent, customListeners.get(ele, event));\n if (dataEventOff) ele.removeEventListener(dataEventOff, this.hideTooltip);\n };\n}\n","/**\n * Util method to get effect\n */\nimport { checkStatus } from './customEvent';\n\nconst makeProxy = e => {\n const proxy = {};\n for (const key in e) {\n if (typeof e[key] === 'function') {\n proxy[key] = e[key].bind(e);\n } else {\n proxy[key] = e[key];\n }\n }\n return proxy;\n};\n\nconst bodyListener = function(callback, options, e) {\n const { respectEffect = false, customEvent = false } = options;\n const { id } = this.props;\n\n const tip = e.target.getAttribute('data-tip') || null;\n const forId = e.target.getAttribute('data-for') || null;\n\n const target = e.target;\n if (this.isCustomEvent(target) && !customEvent) {\n return;\n }\n\n const isTargetBelongsToTooltip =\n (id == null && forId == null) || forId === id;\n\n if (\n tip != null &&\n (!respectEffect || this.getEffect(target) === 'float') &&\n isTargetBelongsToTooltip\n ) {\n const proxy = makeProxy(e);\n proxy.currentTarget = target;\n callback(proxy);\n }\n};\n\nconst findCustomEvents = (targetArray, dataAttribute) => {\n const events = {};\n targetArray.forEach(target => {\n const event = target.getAttribute(dataAttribute);\n if (event) event.split(' ').forEach(event => (events[event] = true));\n });\n\n return events;\n};\n\nconst getBody = () => document.getElementsByTagName('body')[0];\n\nexport default function(target) {\n target.prototype.isBodyMode = function() {\n return !!this.props.bodyMode;\n };\n\n target.prototype.bindBodyListener = function(targetArray) {\n const {\n event,\n eventOff,\n possibleCustomEvents,\n possibleCustomEventsOff\n } = this.state;\n const body = getBody();\n\n const customEvents = findCustomEvents(targetArray, 'data-event');\n const customEventsOff = findCustomEvents(targetArray, 'data-event-off');\n\n if (event != null) customEvents[event] = true;\n if (eventOff != null) customEventsOff[eventOff] = true;\n possibleCustomEvents\n .split(' ')\n .forEach(event => (customEvents[event] = true));\n possibleCustomEventsOff\n .split(' ')\n .forEach(event => (customEventsOff[event] = true));\n\n this.unbindBodyListener(body);\n\n const listeners = (this.bodyModeListeners = {});\n if (event == null) {\n listeners.mouseover = bodyListener.bind(this, this.showTooltip, {});\n listeners.mousemove = bodyListener.bind(this, this.updateTooltip, {\n respectEffect: true\n });\n listeners.mouseout = bodyListener.bind(this, this.hideTooltip, {});\n }\n\n for (const event in customEvents) {\n listeners[event] = bodyListener.bind(\n this,\n e => {\n const targetEventOff =\n e.currentTarget.getAttribute('data-event-off') || eventOff;\n checkStatus.call(this, targetEventOff, e);\n },\n { customEvent: true }\n );\n }\n for (const event in customEventsOff) {\n listeners[event] = bodyListener.bind(this, this.hideTooltip, {\n customEvent: true\n });\n }\n for (const event in listeners) {\n body.addEventListener(event, listeners[event]);\n }\n };\n\n target.prototype.unbindBodyListener = function(body) {\n body = body || getBody();\n\n const listeners = this.bodyModeListeners;\n for (const event in listeners) {\n body.removeEventListener(event, listeners[event]);\n }\n };\n}\n","/**\n * Calculate the position of tooltip\n *\n * @params\n * - `e` {Event} the event of current mouse\n * - `target` {Element} the currentTarget of the event\n * - `node` {DOM} the react-tooltip object\n * - `place` {String} top / right / bottom / left\n * - `effect` {String} float / solid\n * - `offset` {Object} the offset to default position\n *\n * @return {Object}\n * - `isNewState` {Bool} required\n * - `newState` {Object}\n * - `position` {Object} {left: {Number}, top: {Number}}\n */\nexport default function(e, target, node, place, desiredPlace, effect, offset) {\n const { width: tipWidth, height: tipHeight } = getDimensions(node);\n\n const { width: targetWidth, height: targetHeight } = getDimensions(target);\n\n const { mouseX, mouseY } = getCurrentOffset(e, target, effect);\n const defaultOffset = getDefaultPosition(\n effect,\n targetWidth,\n targetHeight,\n tipWidth,\n tipHeight\n );\n const { extraOffsetX, extraOffsetY } = calculateOffset(offset);\n\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n\n const { parentTop, parentLeft } = getParent(node);\n\n // Get the edge offset of the tooltip\n const getTipOffsetLeft = place => {\n const offsetX = defaultOffset[place].l;\n return mouseX + offsetX + extraOffsetX;\n };\n const getTipOffsetRight = place => {\n const offsetX = defaultOffset[place].r;\n return mouseX + offsetX + extraOffsetX;\n };\n const getTipOffsetTop = place => {\n const offsetY = defaultOffset[place].t;\n return mouseY + offsetY + extraOffsetY;\n };\n const getTipOffsetBottom = place => {\n const offsetY = defaultOffset[place].b;\n return mouseY + offsetY + extraOffsetY;\n };\n\n //\n // Functions to test whether the tooltip's sides are inside\n // the client window for a given orientation p\n //\n // _____________\n // | | <-- Right side\n // | p = 'left' |\\\n // | |/ |\\\n // |_____________| |_\\ <-- Mouse\n // / \\ |\n // |\n // |\n // Bottom side\n //\n const outsideLeft = p => getTipOffsetLeft(p) < 0;\n const outsideRight = p => getTipOffsetRight(p) > windowWidth;\n const outsideTop = p => getTipOffsetTop(p) < 0;\n const outsideBottom = p => getTipOffsetBottom(p) > windowHeight;\n\n // Check whether the tooltip with orientation p is completely inside the client window\n const outside = p =>\n outsideLeft(p) || outsideRight(p) || outsideTop(p) || outsideBottom(p);\n const inside = p => !outside(p);\n\n const placesList = ['top', 'bottom', 'left', 'right'];\n const insideList = [];\n for (let i = 0; i < 4; i++) {\n const p = placesList[i];\n if (inside(p)) {\n insideList.push(p);\n }\n }\n\n let isNewState = false;\n let newPlace;\n const shouldUpdatePlace = desiredPlace !== place;\n if (inside(desiredPlace) && shouldUpdatePlace) {\n isNewState = true;\n newPlace = desiredPlace;\n } else if (insideList.length > 0 && outside(desiredPlace) && outside(place)) {\n isNewState = true;\n newPlace = insideList[0];\n }\n\n if (isNewState) {\n return {\n isNewState: true,\n newState: { place: newPlace }\n };\n }\n\n return {\n isNewState: false,\n position: {\n left: parseInt(getTipOffsetLeft(place) - parentLeft, 10),\n top: parseInt(getTipOffsetTop(place) - parentTop, 10)\n }\n };\n}\n\nconst getDimensions = node => {\n const { height, width } = node.getBoundingClientRect();\n return {\n height: parseInt(height, 10),\n width: parseInt(width, 10)\n };\n};\n\n// Get current mouse offset\nconst getCurrentOffset = (e, currentTarget, effect) => {\n const boundingClientRect = currentTarget.getBoundingClientRect();\n const targetTop = boundingClientRect.top;\n const targetLeft = boundingClientRect.left;\n const { width: targetWidth, height: targetHeight } = getDimensions(\n currentTarget\n );\n\n if (effect === 'float') {\n return {\n mouseX: e.clientX,\n mouseY: e.clientY\n };\n }\n return {\n mouseX: targetLeft + targetWidth / 2,\n mouseY: targetTop + targetHeight / 2\n };\n};\n\n// List all possibility of tooltip final offset\n// This is useful in judging if it is necessary for tooltip to switch position when out of window\nconst getDefaultPosition = (\n effect,\n targetWidth,\n targetHeight,\n tipWidth,\n tipHeight\n) => {\n let top;\n let right;\n let bottom;\n let left;\n const disToMouse = 3;\n const triangleHeight = 2;\n const cursorHeight = 12; // Optimize for float bottom only, cause the cursor will hide the tooltip\n\n if (effect === 'float') {\n top = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: -(tipHeight + disToMouse + triangleHeight),\n b: -disToMouse\n };\n bottom = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: disToMouse + cursorHeight,\n b: tipHeight + disToMouse + triangleHeight + cursorHeight\n };\n left = {\n l: -(tipWidth + disToMouse + triangleHeight),\n r: -disToMouse,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n right = {\n l: disToMouse,\n r: tipWidth + disToMouse + triangleHeight,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n } else if (effect === 'solid') {\n top = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: -(targetHeight / 2 + tipHeight + triangleHeight),\n b: -(targetHeight / 2)\n };\n bottom = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: targetHeight / 2,\n b: targetHeight / 2 + tipHeight + triangleHeight\n };\n left = {\n l: -(tipWidth + targetWidth / 2 + triangleHeight),\n r: -(targetWidth / 2),\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n right = {\n l: targetWidth / 2,\n r: tipWidth + targetWidth / 2 + triangleHeight,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n }\n\n return { top, bottom, left, right };\n};\n\n// Consider additional offset into position calculation\nconst calculateOffset = offset => {\n let extraOffsetX = 0;\n let extraOffsetY = 0;\n\n if (Object.prototype.toString.apply(offset) === '[object String]') {\n offset = JSON.parse(offset.toString().replace(/'/g, '\"'));\n }\n for (const key in offset) {\n if (key === 'top') {\n extraOffsetY -= parseInt(offset[key], 10);\n } else if (key === 'bottom') {\n extraOffsetY += parseInt(offset[key], 10);\n } else if (key === 'left') {\n extraOffsetX -= parseInt(offset[key], 10);\n } else if (key === 'right') {\n extraOffsetX += parseInt(offset[key], 10);\n }\n }\n\n return { extraOffsetX, extraOffsetY };\n};\n\n// Get the offset of the parent elements\nconst getParent = currentTarget => {\n let currentParent = currentTarget;\n while (currentParent) {\n const computedStyle = window.getComputedStyle(currentParent);\n // transform and will-change: transform change the containing block\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_Block\n if (\n computedStyle.getPropertyValue('transform') !== 'none' ||\n computedStyle.getPropertyValue('will-change') === 'transform'\n )\n break;\n currentParent = currentParent.parentElement;\n }\n\n const parentTop =\n (currentParent && currentParent.getBoundingClientRect().top) || 0;\n const parentLeft =\n (currentParent && currentParent.getBoundingClientRect().left) || 0;\n\n return { parentTop, parentLeft };\n};\n","/**\n * To get the tooltip content\n * it may comes from data-tip or this.props.children\n * it should support multiline\n *\n * @params\n * - `tip` {String} value of data-tip\n * - `children` {ReactElement} this.props.children\n * - `multiline` {Any} could be Bool(true/false) or String('true'/'false')\n *\n * @return\n * - String or react component\n */\nimport React from 'react';\n\nexport default function(tip, children, getContent, multiline) {\n if (children) return children;\n if (getContent !== undefined && getContent !== null) return getContent; // getContent can be 0, '', etc.\n if (getContent === null) return null; // Tip not exist and children is null or undefined\n\n const regexp = //;\n if (!multiline || multiline === 'false' || !regexp.test(tip)) {\n // No trim(), so that user can keep their input\n return tip;\n }\n\n // Multiline tooltip content\n return tip.split(regexp).map((d, i) => {\n return (\n \n {d}\n \n );\n });\n}\n","/**\n * Support aria- and role in ReactTooltip\n *\n * @params props {Object}\n * @return {Object}\n */\nexport function parseAria(props) {\n const ariaObj = {};\n Object.keys(props)\n .filter(prop => {\n // aria-xxx and role is acceptable\n return /(^aria-\\w+$|^role$)/.test(prop);\n })\n .forEach(prop => {\n ariaObj[prop] = props[prop];\n });\n\n return ariaObj;\n}\n","/**\n * Convert nodelist to array\n * @see https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/core/createArrayFromMixed.js#L24\n * NodeLists are functions in Safari\n */\n\nexport default function(nodeList) {\n const length = nodeList.length;\n if (nodeList.hasOwnProperty) {\n return Array.prototype.slice.call(nodeList);\n }\n return new Array(length).fill().map(index => nodeList[index]);\n}\n","/**\n * Default pop-up style values (text color, background color).\n */\nconst defaultColors = {\n dark: {\n text: '#fff',\n background: '#222',\n border: 'transparent',\n arrow: '#222'\n },\n success: {\n text: '#fff',\n background: '#8DC572',\n border: 'transparent',\n arrow: '#8DC572'\n },\n warning: {\n text: '#fff',\n background: '#F0AD4E',\n border: 'transparent',\n arrow: '#F0AD4E'\n },\n error: {\n text: '#fff',\n background: '#BE6464',\n border: 'transparent',\n arrow: '#BE6464'\n },\n info: {\n text: '#fff',\n background: '#337AB7',\n border: 'transparent',\n arrow: '#337AB7'\n },\n light: {\n text: '#222',\n background: '#fff',\n border: 'transparent',\n arrow: '#fff'\n }\n};\n\nexport function getDefaultPopupColors(type) {\n return defaultColors[type] ? { ...defaultColors[type] } : undefined;\n}\n","import { getDefaultPopupColors } from './defaultStyles';\n\n/**\n * Generates the specific tooltip style for use on render.\n */\nexport function generateTooltipStyle(uuid, customColors, type, hasBorder) {\n return generateStyle(uuid, getPopupColors(customColors, type, hasBorder));\n}\n\n/**\n * Generates the tooltip style rules based on the element-specified \"data-type\" property.\n */\nfunction generateStyle(uuid, colors) {\n const textColor = colors.text;\n const backgroundColor = colors.background;\n const borderColor = colors.border;\n const arrowColor = colors.arrow;\n\n return `\n \t.${uuid} {\n\t color: ${textColor};\n\t background: ${backgroundColor};\n\t border: 1px solid ${borderColor};\n \t}\n\n \t.${uuid}.place-top {\n margin-top: -10px;\n }\n .${uuid}.place-top::before {\n border-top: 8px solid ${borderColor};\n }\n .${uuid}.place-top::after {\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n bottom: -6px;\n left: 50%;\n margin-left: -8px;\n border-top-color: ${arrowColor};\n border-top-style: solid;\n border-top-width: 6px;\n }\n\n .${uuid}.place-bottom {\n margin-top: 10px;\n }\n .${uuid}.place-bottom::before {\n border-bottom: 8px solid ${borderColor};\n }\n .${uuid}.place-bottom::after {\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n top: -6px;\n left: 50%;\n margin-left: -8px;\n border-bottom-color: ${arrowColor};\n border-bottom-style: solid;\n border-bottom-width: 6px;\n }\n\n .${uuid}.place-left {\n margin-left: -10px;\n }\n .${uuid}.place-left::before {\n border-left: 8px solid ${borderColor};\n }\n .${uuid}.place-left::after {\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n right: -6px;\n top: 50%;\n margin-top: -4px;\n border-left-color: ${arrowColor};\n border-left-style: solid;\n border-left-width: 6px;\n }\n\n .${uuid}.place-right {\n margin-left: 10px;\n }\n .${uuid}.place-right::before {\n border-right: 8px solid ${borderColor};\n }\n .${uuid}.place-right::after {\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n left: -6px;\n top: 50%;\n margin-top: -4px;\n border-right-color: ${arrowColor};\n border-right-style: solid;\n border-right-width: 6px;\n }\n `;\n}\n\nfunction getPopupColors(customColors, type, hasBorder) {\n const textColor = customColors.text;\n const backgroundColor = customColors.background;\n const borderColor = customColors.border;\n const arrowColor = customColors.arrow\n ? customColors.arrow\n : customColors.background;\n\n const colors = getDefaultPopupColors(type);\n\n if (textColor) {\n colors.text = textColor;\n }\n\n if (backgroundColor) {\n colors.background = backgroundColor;\n }\n\n if (hasBorder) {\n if (borderColor) {\n colors.border = borderColor;\n } else {\n colors.border = type === 'light' ? 'black' : 'white';\n }\n }\n\n if (arrowColor) {\n colors.arrow = arrowColor;\n }\n\n return colors;\n}\n","/**\n * Tracking target removing from DOM.\n * It's necessary to hide tooltip when it's target disappears.\n * Otherwise, the tooltip would be shown forever until another target\n * is triggered.\n *\n * If MutationObserver is not available, this feature just doesn't work.\n */\n\n// https://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/\nconst getMutationObserverClass = () => {\n return (\n window.MutationObserver ||\n window.WebKitMutationObserver ||\n window.MozMutationObserver\n );\n};\n\nexport default function(target) {\n target.prototype.bindRemovalTracker = function() {\n const MutationObserver = getMutationObserverClass();\n if (MutationObserver == null) return;\n\n const observer = new MutationObserver(mutations => {\n for (let m1 = 0; m1 < mutations.length; m1++) {\n const mutation = mutations[m1];\n for (let m2 = 0; m2 < mutation.removedNodes.length; m2++) {\n const element = mutation.removedNodes[m2];\n if (element === this.state.currentTarget) {\n this.hideTooltip();\n return;\n }\n }\n }\n });\n\n observer.observe(window.document, { childList: true, subtree: true });\n\n this.removalTracker = observer;\n };\n\n target.prototype.unbindRemovalTracker = function() {\n if (this.removalTracker) {\n this.removalTracker.disconnect();\n this.removalTracker = null;\n }\n };\n}\n","/* eslint-disable no-unused-vars, dot-notation */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\n/* Decorators */\nimport staticMethods from './decorators/staticMethods';\nimport windowListener from './decorators/windowListener';\nimport customEvent from './decorators/customEvent';\nimport isCapture from './decorators/isCapture';\nimport getEffect from './decorators/getEffect';\nimport bodyMode from './decorators/bodyMode';\nimport trackRemoval from './decorators/trackRemoval';\n\n/* Utils */\nimport getPosition from './utils/getPosition';\nimport getTipContent from './utils/getTipContent';\nimport { parseAria } from './utils/aria';\nimport nodeListToArray from './utils/nodeListToArray';\nimport { generateUUID } from './utils/uuid';\n\n/* CSS */\nimport baseCss from './index.scss';\nimport { generateTooltipStyle } from './decorators/styler';\n\n@staticMethods\n@windowListener\n@customEvent\n@isCapture\n@getEffect\n@bodyMode\n@trackRemoval\nclass ReactTooltip extends React.Component {\n static get propTypes() {\n return {\n uuid: PropTypes.string,\n children: PropTypes.any,\n place: PropTypes.string,\n type: PropTypes.string,\n effect: PropTypes.string,\n offset: PropTypes.object,\n multiline: PropTypes.bool,\n border: PropTypes.bool,\n textColor: PropTypes.string,\n backgroundColor: PropTypes.string,\n borderColor: PropTypes.string,\n arrowColor: PropTypes.string,\n insecure: PropTypes.bool,\n class: PropTypes.string,\n className: PropTypes.string,\n id: PropTypes.string,\n html: PropTypes.bool,\n delayHide: PropTypes.number,\n delayUpdate: PropTypes.number,\n delayShow: PropTypes.number,\n event: PropTypes.string,\n eventOff: PropTypes.string,\n isCapture: PropTypes.bool,\n globalEventOff: PropTypes.string,\n getContent: PropTypes.any,\n afterShow: PropTypes.func,\n afterHide: PropTypes.func,\n overridePosition: PropTypes.func,\n disable: PropTypes.bool,\n scrollHide: PropTypes.bool,\n resizeHide: PropTypes.bool,\n wrapper: PropTypes.string,\n bodyMode: PropTypes.bool,\n possibleCustomEvents: PropTypes.string,\n possibleCustomEventsOff: PropTypes.string,\n clickable: PropTypes.bool\n };\n }\n\n static defaultProps = {\n insecure: true,\n resizeHide: true,\n wrapper: 'div',\n clickable: false\n };\n\n static supportedWrappers = ['div', 'span'];\n\n static displayName = 'ReactTooltip';\n\n constructor(props) {\n super(props);\n\n this.state = {\n uuid: props.uuid || generateUUID(),\n place: props.place || 'top', // Direction of tooltip\n desiredPlace: props.place || 'top',\n type: 'dark', // Color theme of tooltip\n effect: 'float', // float or fixed\n show: false,\n border: false,\n customColors: {},\n offset: {},\n extraClass: '',\n html: false,\n delayHide: 0,\n delayShow: 0,\n event: props.event || null,\n eventOff: props.eventOff || null,\n currentEvent: null, // Current mouse event\n currentTarget: null, // Current target of mouse event\n ariaProps: parseAria(props), // aria- and role attributes\n isEmptyTip: false,\n disable: false,\n possibleCustomEvents: props.possibleCustomEvents || '',\n possibleCustomEventsOff: props.possibleCustomEventsOff || '',\n originTooltip: null,\n isMultiline: false\n };\n\n this.bind([\n 'showTooltip',\n 'updateTooltip',\n 'hideTooltip',\n 'hideTooltipOnScroll',\n 'getTooltipContent',\n 'globalRebuild',\n 'globalShow',\n 'globalHide',\n 'onWindowResize',\n 'mouseOnToolTip'\n ]);\n\n this.mount = true;\n this.delayShowLoop = null;\n this.delayHideLoop = null;\n this.delayReshow = null;\n this.intervalUpdateContent = null;\n }\n\n /**\n * For unify the bind and unbind listener\n */\n bind(methodArray) {\n methodArray.forEach(method => {\n this[method] = this[method].bind(this);\n });\n }\n\n componentDidMount() {\n const { insecure, resizeHide } = this.props;\n\n this.bindListener(); // Bind listener for tooltip\n this.bindWindowEvents(resizeHide); // Bind global event for static method\n this.injectStyles(); // Inject styles for each DOM root having tooltip.\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const { ariaProps } = prevState;\n const newAriaProps = parseAria(nextProps);\n const isChanged = Object.keys(newAriaProps).some(props => {\n return newAriaProps[props] !== ariaProps[props];\n });\n if (!isChanged) {\n return null;\n }\n return {\n ...prevState,\n ariaProps: newAriaProps\n };\n }\n\n componentWillUnmount() {\n this.mount = false;\n\n this.clearTimer();\n\n this.unbindListener();\n this.removeScrollListener(this.state.currentTarget);\n this.unbindWindowEvents();\n }\n\n /* Look for the closest DOM root having tooltip and inject styles. */\n injectStyles() {\n const { id } = this.props;\n const targetArray = this.getTargetArray(id);\n const domRoots = [];\n targetArray.forEach(target => {\n let parentNode = target.parentNode;\n while (parentNode.parentNode && !parentNode.host) {\n parentNode = parentNode.parentNode;\n }\n const head = parentNode.querySelector('head');\n domRoots.push(head || parentNode);\n });\n if (domRoots.length) {\n const style = document.createElement('style');\n style.textContent = baseCss;\n style.setAttribute('data-react-tooltip', 'true');\n domRoots\n .filter((item, idx, src) => src.indexOf(item) === idx)\n .forEach(domRoot => {\n // Prevent styles duplication.\n if (!domRoot.querySelector('style[data-react-tooltip]')) {\n domRoot.appendChild(style);\n }\n });\n }\n }\n\n /**\n * Return if the mouse is on the tooltip.\n * @returns {boolean} true - mouse is on the tooltip\n */\n mouseOnToolTip() {\n const { show } = this.state;\n\n if (show && this.tooltipRef) {\n /* old IE or Firefox work around */\n if (!this.tooltipRef.matches) {\n /* old IE work around */\n if (this.tooltipRef.msMatchesSelector) {\n this.tooltipRef.matches = this.tooltipRef.msMatchesSelector;\n } else {\n /* old Firefox work around */\n this.tooltipRef.matches = this.tooltipRef.mozMatchesSelector;\n }\n }\n return this.tooltipRef.matches(':hover');\n }\n return false;\n }\n\n /**\n * Pick out corresponded target elements\n */\n getTargetArray(id) {\n let targetArray = [];\n let selector;\n if (!id) {\n selector = '[data-tip]:not([data-for])';\n } else {\n const escaped = id.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n selector = `[data-tip][data-for=\"${escaped}\"]`;\n }\n\n // Scan document for shadow DOM elements\n nodeListToArray(document.getElementsByTagName('*'))\n .filter(element => element.shadowRoot)\n .forEach(element => {\n targetArray = targetArray.concat(\n nodeListToArray(element.shadowRoot.querySelectorAll(selector))\n );\n });\n return targetArray.concat(\n nodeListToArray(document.querySelectorAll(selector))\n );\n }\n\n /**\n * Bind listener to the target elements\n * These listeners used to trigger showing or hiding the tooltip\n */\n bindListener() {\n const { id, globalEventOff, isCapture } = this.props;\n const targetArray = this.getTargetArray(id);\n\n targetArray.forEach(target => {\n if (target.getAttribute('currentItem') === null) {\n target.setAttribute('currentItem', 'false');\n }\n this.unbindBasicListener(target);\n if (this.isCustomEvent(target)) {\n this.customUnbindListener(target);\n }\n });\n\n if (this.isBodyMode()) {\n this.bindBodyListener(targetArray);\n } else {\n targetArray.forEach(target => {\n const isCaptureMode = this.isCapture(target);\n const effect = this.getEffect(target);\n if (this.isCustomEvent(target)) {\n this.customBindListener(target);\n return;\n }\n\n target.addEventListener('mouseenter', this.showTooltip, isCaptureMode);\n if (effect === 'float') {\n target.addEventListener(\n 'mousemove',\n this.updateTooltip,\n isCaptureMode\n );\n }\n target.addEventListener('mouseleave', this.hideTooltip, isCaptureMode);\n });\n }\n\n // Global event to hide tooltip\n if (globalEventOff) {\n window.removeEventListener(globalEventOff, this.hideTooltip);\n window.addEventListener(globalEventOff, this.hideTooltip, isCapture);\n }\n\n // Track removal of targetArray elements from DOM\n this.bindRemovalTracker();\n }\n\n /**\n * Unbind listeners on target elements\n */\n unbindListener() {\n const { id, globalEventOff } = this.props;\n if (this.isBodyMode()) {\n this.unbindBodyListener();\n } else {\n const targetArray = this.getTargetArray(id);\n targetArray.forEach(target => {\n this.unbindBasicListener(target);\n if (this.isCustomEvent(target)) this.customUnbindListener(target);\n });\n }\n\n if (globalEventOff)\n window.removeEventListener(globalEventOff, this.hideTooltip);\n this.unbindRemovalTracker();\n }\n\n /**\n * Invoke this before bind listener and unmount the component\n * it is necessary to invoke this even when binding custom event\n * so that the tooltip can switch between custom and default listener\n */\n unbindBasicListener(target) {\n const isCaptureMode = this.isCapture(target);\n target.removeEventListener('mouseenter', this.showTooltip, isCaptureMode);\n target.removeEventListener('mousemove', this.updateTooltip, isCaptureMode);\n target.removeEventListener('mouseleave', this.hideTooltip, isCaptureMode);\n }\n\n getTooltipContent() {\n const { getContent, children } = this.props;\n\n // Generate tooltip content\n let content;\n if (getContent) {\n if (Array.isArray(getContent)) {\n content = getContent[0] && getContent[0](this.state.originTooltip);\n } else {\n content = getContent(this.state.originTooltip);\n }\n }\n\n return getTipContent(\n this.state.originTooltip,\n children,\n content,\n this.state.isMultiline\n );\n }\n\n isEmptyTip(placeholder) {\n return (\n (typeof placeholder === 'string' && placeholder === '') ||\n placeholder === null\n );\n }\n\n /**\n * When mouse enter, show the tooltip\n */\n showTooltip(e, isGlobalCall) {\n if (!this.tooltipRef) {\n return;\n }\n\n if (isGlobalCall) {\n // Don't trigger other elements belongs to other ReactTooltip\n const targetArray = this.getTargetArray(this.props.id);\n const isMyElement = targetArray.some(ele => ele === e.currentTarget);\n if (!isMyElement) return;\n }\n // Get the tooltip content\n // calculate in this phrase so that tip width height can be detected\n const { multiline, getContent } = this.props;\n const originTooltip = e.currentTarget.getAttribute('data-tip');\n const isMultiline =\n e.currentTarget.getAttribute('data-multiline') || multiline || false;\n\n // If it is focus event or called by ReactTooltip.show, switch to `solid` effect\n const switchToSolid = e instanceof window.FocusEvent || isGlobalCall;\n\n // if it needs to skip adding hide listener to scroll\n let scrollHide = true;\n if (e.currentTarget.getAttribute('data-scroll-hide')) {\n scrollHide = e.currentTarget.getAttribute('data-scroll-hide') === 'true';\n } else if (this.props.scrollHide != null) {\n scrollHide = this.props.scrollHide;\n }\n\n // Make sure the correct place is set\n const desiredPlace =\n e.currentTarget.getAttribute('data-place') || this.props.place || 'top';\n const effect =\n (switchToSolid && 'solid') || this.getEffect(e.currentTarget);\n const offset =\n e.currentTarget.getAttribute('data-offset') || this.props.offset || {};\n const result = getPosition(\n e,\n e.currentTarget,\n this.tooltipRef,\n desiredPlace,\n desiredPlace,\n effect,\n offset\n );\n if (result.position && this.props.overridePosition) {\n result.position = this.props.overridePosition(\n result.position,\n e,\n e.currentTarget,\n this.tooltipRef,\n desiredPlace,\n desiredPlace,\n effect,\n offset\n );\n }\n\n const place = result.isNewState ? result.newState.place : desiredPlace;\n\n // To prevent previously created timers from triggering\n this.clearTimer();\n\n const target = e.currentTarget;\n\n const reshowDelay = this.state.show\n ? target.getAttribute('data-delay-update') || this.props.delayUpdate\n : 0;\n\n const self = this;\n\n const updateState = function updateState() {\n self.setState(\n {\n originTooltip: originTooltip,\n isMultiline: isMultiline,\n desiredPlace: desiredPlace,\n place: place,\n type: target.getAttribute('data-type') || self.props.type || 'dark',\n customColors: {\n text:\n target.getAttribute('data-text-color') ||\n self.props.textColor ||\n null,\n background:\n target.getAttribute('data-background-color') ||\n self.props.backgroundColor ||\n null,\n border:\n target.getAttribute('data-border-color') ||\n self.props.borderColor ||\n null,\n arrow:\n target.getAttribute('data-arrow-color') ||\n self.props.arrowColor ||\n null\n },\n effect: effect,\n offset: offset,\n html:\n (target.getAttribute('data-html')\n ? target.getAttribute('data-html') === 'true'\n : self.props.html) || false,\n delayShow:\n target.getAttribute('data-delay-show') || self.props.delayShow || 0,\n delayHide:\n target.getAttribute('data-delay-hide') || self.props.delayHide || 0,\n delayUpdate:\n target.getAttribute('data-delay-update') ||\n self.props.delayUpdate ||\n 0,\n border:\n (target.getAttribute('data-border')\n ? target.getAttribute('data-border') === 'true'\n : self.props.border) || false,\n extraClass:\n target.getAttribute('data-class') ||\n self.props.class ||\n self.props.className ||\n '',\n disable:\n (target.getAttribute('data-tip-disable')\n ? target.getAttribute('data-tip-disable') === 'true'\n : self.props.disable) || false,\n currentTarget: target\n },\n () => {\n if (scrollHide) {\n self.addScrollListener(self.state.currentTarget);\n }\n\n self.updateTooltip(e);\n\n if (getContent && Array.isArray(getContent)) {\n self.intervalUpdateContent = setInterval(() => {\n if (self.mount) {\n const { getContent } = self.props;\n const placeholder = getTipContent(\n originTooltip,\n '',\n getContent[0](),\n isMultiline\n );\n const isEmptyTip = self.isEmptyTip(placeholder);\n self.setState({ isEmptyTip });\n self.updatePosition();\n }\n }, getContent[1]);\n }\n }\n );\n };\n\n // If there is no delay call immediately, don't allow events to get in first.\n if (reshowDelay) {\n this.delayReshow = setTimeout(updateState, reshowDelay);\n } else {\n updateState();\n }\n }\n\n /**\n * When mouse hover, update tool tip\n */\n updateTooltip(e) {\n const { delayShow, disable } = this.state;\n const { afterShow } = this.props;\n const placeholder = this.getTooltipContent();\n const delayTime = parseInt(delayShow, 10);\n const eventTarget = e.currentTarget || e.target;\n\n // Check if the mouse is actually over the tooltip, if so don't hide the tooltip\n if (this.mouseOnToolTip()) {\n return;\n }\n\n // if the tooltip is empty, disable the tooltip\n if (this.isEmptyTip(placeholder) || disable) {\n return;\n }\n\n const updateState = () => {\n if (\n (Array.isArray(placeholder) && placeholder.length > 0) ||\n placeholder\n ) {\n const isInvisible = !this.state.show;\n this.setState(\n {\n currentEvent: e,\n currentTarget: eventTarget,\n show: true\n },\n () => {\n this.updatePosition();\n if (isInvisible && afterShow) {\n afterShow(e);\n }\n }\n );\n }\n };\n\n clearTimeout(this.delayShowLoop);\n if (delayShow) {\n this.delayShowLoop = setTimeout(updateState, delayTime);\n } else {\n updateState();\n }\n }\n\n /*\n * If we're mousing over the tooltip remove it when we leave.\n */\n listenForTooltipExit() {\n const { show } = this.state;\n\n if (show && this.tooltipRef) {\n this.tooltipRef.addEventListener('mouseleave', this.hideTooltip);\n }\n }\n\n removeListenerForTooltipExit() {\n const { show } = this.state;\n\n if (show && this.tooltipRef) {\n this.tooltipRef.removeEventListener('mouseleave', this.hideTooltip);\n }\n }\n\n /**\n * When mouse leave, hide tooltip\n */\n hideTooltip(e, hasTarget, options = { isScroll: false }) {\n const { disable } = this.state;\n const { isScroll } = options;\n const delayHide = isScroll ? 0 : this.state.delayHide;\n const { afterHide } = this.props;\n const placeholder = this.getTooltipContent();\n if (!this.mount) return;\n if (this.isEmptyTip(placeholder) || disable) return; // if the tooltip is empty, disable the tooltip\n if (hasTarget) {\n // Don't trigger other elements belongs to other ReactTooltip\n const targetArray = this.getTargetArray(this.props.id);\n const isMyElement = targetArray.some(ele => ele === e.currentTarget);\n if (!isMyElement || !this.state.show) return;\n }\n\n const resetState = () => {\n const isVisible = this.state.show;\n // Check if the mouse is actually over the tooltip, if so don't hide the tooltip\n if (this.mouseOnToolTip()) {\n this.listenForTooltipExit();\n return;\n }\n\n this.removeListenerForTooltipExit();\n\n this.setState({ show: false }, () => {\n this.removeScrollListener(this.state.currentTarget);\n if (isVisible && afterHide) {\n afterHide(e);\n }\n });\n };\n\n this.clearTimer();\n if (delayHide) {\n this.delayHideLoop = setTimeout(resetState, parseInt(delayHide, 10));\n } else {\n resetState();\n }\n }\n\n /**\n * When scroll, hide tooltip\n */\n hideTooltipOnScroll(event, hasTarget) {\n this.hideTooltip(event, hasTarget, { isScroll: true });\n }\n\n /**\n * Add scroll event listener when tooltip show\n * automatically hide the tooltip when scrolling\n */\n addScrollListener(currentTarget) {\n const isCaptureMode = this.isCapture(currentTarget);\n window.addEventListener('scroll', this.hideTooltipOnScroll, isCaptureMode);\n }\n\n removeScrollListener(currentTarget) {\n const isCaptureMode = this.isCapture(currentTarget);\n window.removeEventListener(\n 'scroll',\n this.hideTooltipOnScroll,\n isCaptureMode\n );\n }\n\n // Calculation the position\n updatePosition() {\n const {\n currentEvent,\n currentTarget,\n place,\n desiredPlace,\n effect,\n offset\n } = this.state;\n const node = this.tooltipRef;\n const result = getPosition(\n currentEvent,\n currentTarget,\n node,\n place,\n desiredPlace,\n effect,\n offset\n );\n if (result.position && this.props.overridePosition) {\n result.position = this.props.overridePosition(\n result.position,\n currentEvent,\n currentTarget,\n node,\n place,\n desiredPlace,\n effect,\n offset\n );\n }\n\n if (result.isNewState) {\n // Switch to reverse placement\n return this.setState(result.newState, () => {\n this.updatePosition();\n });\n }\n\n // Set tooltip position\n node.style.left = result.position.left + 'px';\n node.style.top = result.position.top + 'px';\n }\n\n /**\n * CLear all kinds of timeout of interval\n */\n clearTimer() {\n clearTimeout(this.delayShowLoop);\n clearTimeout(this.delayHideLoop);\n clearTimeout(this.delayReshow);\n clearInterval(this.intervalUpdateContent);\n }\n\n hasCustomColors() {\n return Boolean(\n Object.keys(this.state.customColors).find(\n color => color !== 'border' && this.state.customColors[color]\n ) ||\n (this.state.border && this.state.customColors['border'])\n );\n }\n\n render() {\n const { extraClass, html, ariaProps, disable } = this.state;\n const content = this.getTooltipContent();\n const isEmptyTip = this.isEmptyTip(content);\n const style = generateTooltipStyle(\n this.state.uuid,\n this.state.customColors,\n this.state.type,\n this.state.border\n );\n\n const tooltipClass =\n '__react_component_tooltip' +\n ` ${this.state.uuid}` +\n (this.state.show && !disable && !isEmptyTip ? ' show' : '') +\n (this.state.border ? ' border' : '') +\n ` place-${this.state.place}` + // top, bottom, left, right\n ` type-${this.hasCustomColors() ? 'custom' : this.state.type}` + // dark, success, warning, error, info, light, custom\n (this.props.delayUpdate ? ' allow_hover' : '') +\n (this.props.clickable ? ' allow_click' : '');\n\n let Wrapper = this.props.wrapper;\n\n if (ReactTooltip.supportedWrappers.indexOf(Wrapper) < 0) {\n Wrapper = ReactTooltip.defaultProps.wrapper;\n }\n\n const wrapperClassName = [tooltipClass, extraClass]\n .filter(Boolean)\n .join(' ');\n\n if (html) {\n const htmlContent = `${content}\\n`;\n\n return (\n (this.tooltipRef = ref)}\n {...ariaProps}\n data-id=\"tooltip\"\n dangerouslySetInnerHTML={{ __html: htmlContent }}\n />\n );\n } else {\n return (\n (this.tooltipRef = ref)}\n data-id=\"tooltip\"\n >\n